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

📄 lmem.h

📁 dos 1.0 其中包含quick basic源代码、内存管理himem emm386 发展历史
💻 H
字号:
/*
	LMEM.H : Local Memory Manager Exports
*/

/*	* Heap Compaction Flags	*/
#define	fcmpCompact		1	/* compact data */
#define	fcmpCompactHandles	2	/* compact handles */

/*	* Out Of Memory Errors	*/
#define	merrAllocMoveable	1	/* allocating a moveable block */
#define	merrAllocFixed		2	/* allocating a fixed block */
#define	merrReallocMoveable	3	/* growing a moveable block */
#define	merrAllocBlock		4	/* allocating block of handles */

/*	* Special Zeros		*/
/* NOTE: hard coded numbers to get around compiler limitations */
#define pvZero	((VOID NEAR *)0x12)  /* a pointer to 0 length block, 1st byte is 0 */
#define ppvZero ((VOID NEAR * NEAR *)0x14) /* a pointer to pvZero */

/*	* Allocating a fixed block in a new heap always returns pvFixedMin */
/* NOTE: hard coded numbers to get around compiler limitations */
#define pvFixedMin ((VOID NEAR *)0x18)

/* global flag set after every compact */
extern BOOL PASCAL fCompactedHeap;


#ifdef DEBUG

/*	Debug global variables */
extern BOOL PASCAL fShakeHeap;
extern BOOL PASCAL fCheckHeap;
extern BOOL PASCAL fCheckHeapFree;	/* extra free checking -- slow */

/*	* function for introducing memory failures */
#ifndef MKHDR
extern BOOL (FAR PASCAL *lpfnFailLmemFilter)(WORD, SB, WORD);	/*OPTIONAL*/
#endif


/*	* Heap Info structure */

typedef struct _ckl
	{
	unsigned cblkFixed;
	unsigned cblkMoveable;
	unsigned chUsed;
	unsigned chFree;
	unsigned cbFixed;
	unsigned cbMoveable;
	} CKL;

#endif /*DEBUG*/

/* Error trapping */
extern int pascal cfailLmemError;
#define	DisarmLmemError()	(cfailLmemError++)
#define	RearmLmemError()	(cfailLmemError--)

/* Fast way to find length of block (in current SB only) */
#define	CbSizePpvSbCur(ppv) 	(*((*(WORD **)(ppv))-1))

/* Procedure Prototypes */
#ifdef CC
VOID		FAR PASCAL CreateHeap(SB);
WORD		FAR PASCAL CbCompactHeap(SB, WORD);
WORD		FAR PASCAL CbAvailHeap(SB);
VOID NEAR * NEAR *  FAR PASCAL PpvAllocCb(SB, WORD);
BOOL		FAR PASCAL FReallocPpv(SB, VOID NEAR * NEAR *, WORD);
VOID		FAR PASCAL FreePpv(SB, VOID NEAR * NEAR *);
WORD		FAR PASCAL CbSizePpv(SB, VOID NEAR * NEAR *);	/* CC ONLY */
VOID NEAR *	FAR PASCAL PvAllocFixedCb(SB, WORD);
WORD		FAR PASCAL CbSizeFixedPv(SB, VOID NEAR *);	/* CC ONLY */
VOID		FAR PASCAL LockHeap(SB);			/* OPTIONAL */
VOID		FAR PASCAL UnlockHeap(SB);			/* OPTIONAL */

BOOL		FAR PASCAL FCreateWindowsHeap(SB, WORD);

VOID NEAR * NEAR * FAR PASCAL HFirstAllocBlock(SB, WORD);	/* OPTIONAL */
VOID		FAR PASCAL FreeHandleBlock(SB, VOID NEAR * NEAR *); /* OPTIONAL */
VOID		FAR PASCAL SwapHandles(SB, VOID NEAR * NEAR *, VOID NEAR * NEAR *); /* OPTIONAL */

#ifdef DEBUG
VOID		FAR PASCAL CheckHeap(SB);
VOID		FAR PASCAL ShakeHeapSb(SB);
VOID		FAR PASCAL GetHeapInfo(SB, CKL FAR *);
BOOL		FAR PASCAL FCheckHandle(SB, VOID NEAR * NEAR *);
#endif /*DEBUG*/
/* Pseudo debug functions */
VOID NEAR * NEAR * FAR PASCAL PpvWalkHeap(SB, VOID NEAR * NEAR *);
VOID NEAR *	FAR PASCAL PvWalkFixedHeap(SB, VOID NEAR *);
#endif /*CC*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -