This commit is contained in:
parent
8788076d39
commit
1c5c1b4011
59 changed files with 24871 additions and 56 deletions
210
Utils/Libs/GLib/gal.h
Normal file
210
Utils/Libs/GLib/gal.h
Normal file
|
@ -0,0 +1,210 @@
|
|||
/* ==========================================================================
|
||||
File: GAL.H
|
||||
|
||||
Notes: Memory allocation \ deallocation module header file
|
||||
|
||||
Author: Gary Liddon
|
||||
|
||||
Copyright (C) 1995 - 1997 Gary Liddon
|
||||
All rights reserved.
|
||||
=========================================================================== */
|
||||
|
||||
#ifndef __GAL_H__
|
||||
#define __GAL_H__
|
||||
|
||||
/* ---------------------------------------------------------------------------
|
||||
Includes
|
||||
-------- */
|
||||
#include "gtypes.h"
|
||||
|
||||
/* ---------------------------------------------------------------------------
|
||||
Defines
|
||||
------- */
|
||||
#define NULL_HANDLE -1
|
||||
#define PHANTOM_MEM -1
|
||||
|
||||
/* ---------------------------------------------------------------------------
|
||||
Typedefs
|
||||
-------- */
|
||||
typedef S32 MHANDLE;
|
||||
typedef int MTYPE;
|
||||
typedef void (*GAL_FILTER)(U32 MemType,U32 Size,const char *Name);
|
||||
|
||||
/* ---------------------------------------------------------------------------
|
||||
Enums
|
||||
----- */
|
||||
enum
|
||||
{
|
||||
GAL_PHANTOM_MEM=0,
|
||||
GAL_FIRST_FREE_MEM_TYPE,
|
||||
GAL_HIGH = 1<<15,
|
||||
GAL_FLAGS = GAL_HIGH
|
||||
};
|
||||
|
||||
typedef enum GAL_ERROR_CODE
|
||||
{
|
||||
ERR_GAL_NO_ERROR = 0,
|
||||
ERR_RUN_OUT_OF_MEM_HDRS,
|
||||
ERR_GAL_MEM_TYPE_EXISTS,
|
||||
ERR_GAL_MEM_TYPE_OVERLAP,
|
||||
ERR_GAL_INVALID_MEM_TYPE,
|
||||
ERR_GAL_INVALID_MEM_HANDLE,
|
||||
ERR_GAL_MEM_ALREADY_UNLOCKED,
|
||||
ERR_GAL_MEM_BLOCK_COLLISION,
|
||||
ERR_GAL_MEM_AREA_NOT_COVERED,
|
||||
ERR_GAL_NO_MEM_MOVE,
|
||||
ERR_GAL_NOT_ENOUGH_MEM,
|
||||
NUM_OF_ERROR_MESSAGES
|
||||
|
||||
}GAL_ERROR_CODE;
|
||||
|
||||
typedef enum GAL_VERB_LEV
|
||||
{
|
||||
GAL_SILENT=0,
|
||||
GAL_AVERAGE,
|
||||
GAL_NOISY
|
||||
|
||||
} GAL_VERB_LEV;
|
||||
|
||||
/* ---------------------------------------------------------------------------
|
||||
Structures
|
||||
---------- */
|
||||
|
||||
/* Pre declaration of Header each block of free / used memory has
|
||||
-------------------------------------------------------------- */
|
||||
struct MEM_HDR;
|
||||
|
||||
/* Memory Initialisation module Structure
|
||||
Must be placed in RAM
|
||||
-------------------------------------- */
|
||||
typedef struct MEM_INIT_INFO
|
||||
{
|
||||
void * Mem; /* Start of memory region */
|
||||
U32 Size; /* Size of memory region */
|
||||
U32 Type; /* Type of memory region */
|
||||
char * TypeString; /* Debugging string */
|
||||
U16 Alignment; /* Alignment required */
|
||||
void (*MemMove)(void *Dest,void *Source,U32 size); /* Memory move vector */
|
||||
|
||||
/* Used by System, Leave uninitialised */
|
||||
|
||||
struct MEM_INIT_INFO * NextInitBlock;
|
||||
|
||||
U16 Flags;
|
||||
|
||||
struct MEM_HDR * Empty; /* Pointer to free MEM_HDRs of this mem type */
|
||||
struct MEM_HDR * Used; /* Pointer to used MEM_HDRs of this mem type */
|
||||
|
||||
} MEM_INIT_INFO;
|
||||
|
||||
|
||||
/* Structure used by GAL_AllocMultiStruct
|
||||
-------------------------------------- */
|
||||
typedef struct GAL_STRUCT
|
||||
{
|
||||
int OriginalSize;
|
||||
UINT Offset;
|
||||
|
||||
} GAL_STRUCT;
|
||||
|
||||
/* ---------------------------------------------------------------------------
|
||||
Supported Functions
|
||||
------------------- */
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* Initialisation Functions
|
||||
------------------------ */
|
||||
void GAL_InitModule(void);
|
||||
|
||||
|
||||
/* Mem allocing / deallocing functions
|
||||
----------------------------------- */
|
||||
GLIB_API MHANDLE GAL_Alloc(U32 Size,U32 Type,const char *Name);
|
||||
GLIB_API MHANDLE GAL_AllocAt(U32 Size,void *Addr,U32 Type,const char *Name);
|
||||
GLIB_API BOOL GAL_Free(MHANDLE Handle);
|
||||
GLIB_API void * GAL_Lock(MHANDLE Handle);
|
||||
GLIB_API BOOL GAL_Unlock(MHANDLE Handle);
|
||||
|
||||
|
||||
|
||||
/*
|
||||
Purpose: Split a Block into two. If Split point outside
|
||||
block to be split then this will return an error.
|
||||
Split is rounded rounded up to be on mem type alignment
|
||||
boundary
|
||||
Returns: Handle of second block else
|
||||
NULL_HANDLE if unsucessful
|
||||
*/
|
||||
|
||||
GLIB_API MHANDLE GAL_SplitBlock(MHANDLE CurBlock,U32 Split);
|
||||
|
||||
|
||||
|
||||
|
||||
GLIB_API BOOL GAL_SetMemName(MHANDLE Hnd,const char *Text);
|
||||
GLIB_API MHANDLE GAL_AllocMultiStruct(GAL_STRUCT * G,U32 Type,const char *Name);
|
||||
GLIB_API UINT GAL_ProcessMultiStruct(GAL_STRUCT * G,U32 Type);
|
||||
GLIB_API UINT GAL_GetMemSize(MHANDLE hnd);
|
||||
|
||||
/* Mem type Functions
|
||||
------------------ */
|
||||
GLIB_API BOOL GAL_DefragMem(U32 type);
|
||||
GLIB_API BOOL GAL_AddMemType(MEM_INIT_INFO *M);
|
||||
GLIB_API U32 GAL_TotalMem(U32 Type);
|
||||
GLIB_API void * GAL_MemBase(U32 Type);
|
||||
GLIB_API U32 GAL_GetFreeMem(U32 Type);
|
||||
GLIB_API U32 GAL_GetUsedMem(U32 Type);
|
||||
GLIB_API U32 GAL_LargestFreeBlock(U32 Type);
|
||||
GLIB_API S32 GAL_AlignSizeToType(U32 Size,U32 MemType);
|
||||
GLIB_API u32 GAL_GetAlignment(u32 MemType);
|
||||
|
||||
|
||||
/* Error Functions
|
||||
--------------- */
|
||||
GLIB_API GAL_ERROR_CODE GAL_GetLastErrorCode(void);
|
||||
GLIB_API char * GAL_GetLastErrorText(void);
|
||||
GLIB_API char * GAL_GetErrorText(GAL_ERROR_CODE Err);
|
||||
GLIB_API void GAL_MemDump(U32 Type);
|
||||
GLIB_API void GAL_HaltOnError(void);
|
||||
GLIB_API void GAL_ReturnOnError(void);
|
||||
|
||||
/* Debug amd diagnostic functions
|
||||
------------------------------ */
|
||||
GLIB_API s32 GAL_GetSize(MHANDLE hnd);
|
||||
|
||||
/* Debug amd diagnostic functions
|
||||
------------------------------ */
|
||||
GLIB_API BOOL GAL_CheckMem(U32 Type);
|
||||
GLIB_API GAL_FILTER GAL_SetAllocFilter(GAL_FILTER NewFilter);
|
||||
GLIB_API void GAL_IterateUsedMem(U32 MemType,void (*Func)(MHANDLE hnd,void *Addr,U32 Size,const char *Name,int Users,int TimeStamp));
|
||||
GLIB_API void GAL_IterateEmptyMem(U32 MemType,void (*Func)(void *Addr,U32 Size,const char *Name));
|
||||
GLIB_API int GAL_HowManyUsedRegions(U32 Type);
|
||||
GLIB_API int GAL_HowManyEmptyRegions(U32 Type);
|
||||
|
||||
GLIB_API int GAL_GetTimeStamp(void);
|
||||
GLIB_API void GAL_IncTimeStamp(void);
|
||||
GLIB_API void GAL_SetTimeStamp(int Time);
|
||||
GLIB_API void GAL_SetErrorChecking(BOOL OnOff);
|
||||
GLIB_API void GAL_SetVerbosity(GAL_VERB_LEV G);
|
||||
GLIB_API int GAL_GetNumFreeHeaders(void);
|
||||
GLIB_API u32 GAL_GetLastTypeAlloced(void);
|
||||
|
||||
GLIB_API BOOL GAL_SortUsedRegionsBySize(U32 Type);
|
||||
GLIB_API BOOL GAL_SortUsedRegionsByAddress(U32 MemType);
|
||||
|
||||
/* ---------------------------------------------------------------------------
|
||||
API'd but As Yet Unsupported
|
||||
---------------------------- */
|
||||
GLIB_API BOOL GAL_Resize(MHANDLE Handle);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
};
|
||||
#endif
|
||||
|
||||
/* --------------------------------------------------------------------------- */
|
||||
#endif
|
||||
/* ---------------------------------------------------------------------------
|
||||
ends */
|
Loading…
Add table
Add a link
Reference in a new issue