⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mk_mem.h

📁 samsung 9908DVD源代码,
💻 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 + -