📄 mk_mem.h
字号:
/**********************************************************************************
* mk_mem.h
* coded by hspark@pplab.ce.cnu.ac.kr
* date : 2002/06/23
**********************************************************************************/
#ifndef __MK_MEM_H__
#define __MK_MEM_H__
#include "kernel\\mk_sys.h"
#include "kernel\\mk_sem.h"
#define MK_HEAP_MAGIC 0xF3CD03E6L /* Magic Value of Heap */
#define MK_POOL_MAGIC 0xF3CD03E7L /* Magic Value of Pool */
#define MK_FIXED_SIZE 0
#define MK_VARIABLE_SIZE 1
#pragma packed on
/* Structure related with Heap Memory : MK_MBLOCK, MK_HEAP, MK_MBLOCK_DUMMY */
typedef struct mk_memory_block_struct {
ULONG mb_Magic; /* Heap Pointer */
ULONG mb_Size;
struct mk_memory_block_struct *mb_pNext;
} MK_MBLOCK;
typedef struct mk_heap_struct {
ULONG h_Magic;
LONG h_Options; /* FIFO, or Priority */
ULONG h_StartofHeap;
ULONG h_HeapSize;
ULONG h_FreeSize;
ULONG h_MinSize;
CHAR *h_pName;
//CHAR h_pName[MK_NAME_MAX];
struct mk_pending_list_struct h_PendingList;
/* struct mk_memory_block_struct h_FreeMBlockList; */
/* hjahn - idea of h_FreeMBlockList; */
//UINT h_endofHeap;
struct mk_memory_block_struct *h_pFreeMBlockList;
struct mk_heap_struct *h_pNext;
struct mk_heap_struct *h_pPrev;
} MK_HEAP;
extern struct mk_heap_struct *MK_pHeapListHead;
extern struct mk_heap_struct *MK_pHeapListTail;
typedef struct mk_heap_dummy_struct {
struct mk_heap_struct *md_pHeap; /* Heap Pointer */
ULONG md_Size; /* Allocated Memory Size */
ULONG reserved;
} MK_MBLOCK_DUMMY;
typedef struct mk_buffer_pool_struct {
ULONG bp_Magic;
ULONG bp_Size;
ULONG bp_StartofBufferPool;
ULONG bp_InitCount;
ULONG bp_NextBuffer; /* Next Buffer Pointer */
CHAR *bp_pName;
//CHAR bp_pName[MK_NAME_MAX];
struct mk_semaphore_struct bp_Semaphore;
struct mk_buffer_pool_struct *bp_pNext;
struct mk_buffer_pool_struct *bp_pPrev;
} MK_POOL;
#pragma packed off
extern struct mk_buffer_pool_struct *MK_pBufferPoolListHead;
extern struct mk_buffer_pool_struct *MK_pBufferPoolListTail;
/* MK_RoundWord(), MK_TruncWord() - round or truncate address to next long word */
#define MK_RoundWord(pAddr) (ULONG) ( (3+(ULONG)(pAddr))&(~3) )
#define MK_TruncWord(pAddr) (ULONG) ( (3+(ULONG)(pAddr))&(~3) )
void MK_MemoryInitialize(void);
STATUS MK_CreateHeapManager(MK_HEAP *pHeap, char *pName, void *pAddr, ULONG Length,
ULONG MinSize, BOOLEAN Options);
STATUS MK_DeleteHeapManager(MK_HEAP *pHeap);
STATUS MK_ResetHeapManager(MK_HEAP *pHeap);
STATUS MK_GetMemory(MK_HEAP *pHeap, void **pAddr, ULONG Size, long Ticks);
UINT MK_GetHeapMaxMemorySize(MK_HEAP *pHeap);
STATUS MK_FreeMemory(void *pAddr);
STATUS MK_CreateBufferPool(MK_POOL *pPool, CHAR *pName, VOID *pAddr, INT Count,
ULONG Size, BOOLEAN Options);
STATUS MK_DeleteBufferPool(MK_POOL *pPool);
STATUS MK_ResetBufferPool(MK_POOL *pPool);
ULONG MK_GetPoolNeededSize(ULONG Count, ULONG Size);
ULONG MK_GetPoolBufferSize(MK_POOL *pPool);
UINT MK_GetPoolBufferFreeCount(MK_POOL *pPool);
STATUS MK_GetBuf(MK_POOL *pPool, void **pAddr, long Ticks);
STATUS MK_FreeBuf(void *pAddr);
STATUS MK_HeapMemoryInformation(struct mk_ddi_struct *pDDI);
STATUS MK_FixedBufferInformation(struct mk_ddi_struct *pDDI);
#endif /* __MK_MEM_H__ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -