summaryrefslogtreecommitdiff
path: root/packages/palmunits/src/memorymgr.pp
diff options
context:
space:
mode:
Diffstat (limited to 'packages/palmunits/src/memorymgr.pp')
-rw-r--r--packages/palmunits/src/memorymgr.pp259
1 files changed, 259 insertions, 0 deletions
diff --git a/packages/palmunits/src/memorymgr.pp b/packages/palmunits/src/memorymgr.pp
new file mode 100644
index 0000000000..8139840686
--- /dev/null
+++ b/packages/palmunits/src/memorymgr.pp
@@ -0,0 +1,259 @@
+{$MACRO ON}
+
+(******************************************************************************
+ *
+ * Copyright (c) 1994-2000 Palm, Inc. or its subsidiaries.
+ * All rights reserved.
+ *
+ * File: MemoryMgr.h
+ *
+ * Release: Palm OS SDK 4.0 (63220)
+ *
+ * Description:
+ * Include file for Memory Manager
+ *
+ * History:
+ * 10/25/94 RM Created by Ron Marianetti
+ * 10/28/99 kwk Added memErrROMOnlyCard.
+ *
+ *****************************************************************************)
+
+unit memorymgr;
+
+interface
+
+uses palmos, coretraps, errorbase;
+
+(************************************************************
+ * Memory Manager Types
+ *************************************************************)
+
+type
+ LocalIDKind = Enum;
+
+const
+ memIDPtr = 0;
+ memIDHandle = Succ(memIDPtr);
+
+(************************************************************
+ * Flags accepted as parameter for MemNewChunk.
+ *************************************************************)
+
+ memNewChunkFlagPreLock = $0100;
+ memNewChunkFlagNonMovable = $0200;
+ memNewChunkFlagAtStart = $0400; // force allocation at front of heap
+ memNewChunkFlagAtEnd = $0800; // force allocation at end of heap
+
+(************************************************************
+ * Memory Manager Debug settings for the MemSetDebugMode function
+ *************************************************************)
+
+ memDebugModeCheckOnChange = $0001;
+ memDebugModeCheckOnAll = $0002;
+ memDebugModeScrambleOnChange = $0004;
+ memDebugModeScrambleOnAll = $0008;
+ memDebugModeFillFree = $0010;
+ memDebugModeAllHeaps = $0020;
+ memDebugModeRecordMinDynHeapFree = $0040;
+
+(************************************************************
+ * Memory Manager result codes
+ *************************************************************)
+
+ memErrChunkLocked = memErrorClass or 1;
+ memErrNotEnoughSpace = memErrorClass or 2;
+ memErrInvalidParam = memErrorClass or 3; // invalid param or requested size is too big
+ memErrChunkNotLocked = memErrorClass or 4;
+ memErrCardNotPresent = memErrorClass or 5;
+ memErrNoCardHeader = memErrorClass or 6;
+ memErrInvalidStoreHeader = memErrorClass or 7;
+ memErrRAMOnlyCard = memErrorClass or 8;
+ memErrWriteProtect = memErrorClass or 9;
+ memErrNoRAMOnCard = memErrorClass or 10;
+ memErrNoStore = memErrorClass or 11;
+ memErrROMOnlyCard = memErrorClass or 12;
+
+(********************************************************************
+ * Memory Manager Routines
+ * These are define as syscall calls only under emulation mode or
+ * under native mode from the module that actually installs the trap
+ * vectors
+ ********************************************************************)
+
+//-------------------------------------------------------------------
+// Initialization
+//-------------------------------------------------------------------
+
+function MemInit: Err; syscall sysTrapMemInit;
+
+function MemKernelInit: Err; syscall sysTrapMemKernelInit;
+
+function MemInitHeapTable(cardNo: UInt16): Err; syscall sysTrapMemInitHeapTable;
+
+//-------------------------------------------------------------------
+// Card formatting and Info
+//-------------------------------------------------------------------
+
+function MemNumCards: UInt16; syscall sysTrapMemNumCards;
+
+function MemCardFormat(cardNo: UInt16; const cardNameP, manufNameP, ramStoreNameP: PChar): Err; syscall sysTrapMemCardFormat;
+
+function MemCardInfo(cardNo: UInt16; cardNameP, manufNameP: PChar; var versionP: UInt16;
+ var crDateP, romSizeP, ramSizeP, freeBytesP: UInt32): Err; syscall sysTrapMemCardInfo;
+
+//-------------------------------------------------------------------
+// Store Info
+//-------------------------------------------------------------------
+
+function MemStoreInfo(cardNo, storeNumber: UInt16; var versionP, flagsP: UInt16;
+ nameP: PChar; var crDateP, bckUpDateP, heapListOffsetP, initCodeOffset1P,
+ initCodeOffset2P: UInt32; var databaseDirIDP: LocalID): Err; syscall sysTrapMemStoreInfo;
+
+function MemStoreSetInfo(cardNo, storeNumber: UInt16; var versionP, flagsP: UInt16;
+ nameP: PChar; var crDateP, bckUpDateP, heapListOffsetP, initCodeOffset1P,
+ initCodeOffset2P: UInt32; var databaseDirIDP: LocalID): Err; syscall sysTrapMemStoreSetInfo;
+
+//-------------------------------------------------------------------
+// Heap Info & Utilities
+//-------------------------------------------------------------------
+
+function MemNumHeaps(cardNo: UInt16): UInt16; syscall sysTrapMemNumHeaps;
+
+function MemNumRAMHeaps(cardNo: UInt16): UInt16; syscall sysTrapMemNumRAMHeaps;
+
+function MemHeapID(cardNo, heapIndex: UInt16): UInt16; syscall sysTrapMemHeapID;
+
+function MemHeapDynamic(heapID: UInt16): Boolean; syscall sysTrapMemHeapDynamic;
+
+function MemHeapFreeBytes(heapID: UInt16; var freeP, maxP: UInt32): Err; syscall sysTrapMemHeapFreeBytes;
+
+function MemHeapSize(heapID: UInt16): UInt32; syscall sysTrapMemHeapSize;
+
+function MemHeapFlags(heapID: UInt16): UInt16; syscall sysTrapMemHeapFlags;
+
+// Heap utilities
+function MemHeapCompact(heapID: UInt16): Err; syscall sysTrapMemHeapCompact;
+
+function MemHeapInit(heapID: UInt16; numHandles: Int16; initContents: Boolean): Err; syscall sysTrapMemHeapInit;
+
+function MemHeapFreeByOwnerID(heapID, ownerID: UInt16): Err; syscall sysTrapMemHeapFreeByOwnerID;
+
+//-------------------------------------------------------------------
+// Low Level Allocation
+//-------------------------------------------------------------------
+
+function MemChunkNew(heapID: UInt16; size: UInt32; attr: UInt16): MemPtr; syscall sysTrapMemChunkNew;
+
+function MemChunkFree(chunkDataP: MemPtr): Err; syscall sysTrapMemChunkFree;
+
+//-------------------------------------------------------------------
+// Pointer (Non-Movable) based Chunk Routines
+//-------------------------------------------------------------------
+
+function MemPtrNew(size: UInt32): MemPtr; syscall sysTrapMemPtrNew;
+
+function MemPtrFree(chunkDataP: MemPtr): Err; syscall sysTrapMemChunkFree;
+
+// Getting Attributes
+function MemPtrRecoverHandle(p: MemPtr): MemHandle; syscall sysTrapMemPtrRecoverHandle;
+
+function MemPtrFlags(p: MemPtr): UInt16; syscall sysTrapMemPtrFlags;
+
+function MemPtrSize(p: MemPtr): UInt32; syscall sysTrapMemPtrSize;
+
+function MemPtrOwner(p: MemPtr): UInt16; syscall sysTrapMemPtrOwner;
+
+function MemPtrHeapID(p: MemPtr): UInt16; syscall sysTrapMemPtrHeapID;
+
+function MemPtrDataStorage(p: MemPtr): Boolean; syscall sysTrapMemPtrDataStorage;
+
+function MemPtrCardNo(p: MemPtr): UInt16; syscall sysTrapMemPtrCardNo;
+
+function MemPtrToLocalID(p: MemPtr): LocalID; syscall sysTrapMemPtrToLocalID;
+
+// Setting Attributes
+function MemPtrSetOwner(p: MemPtr; owner: UInt16): Err; syscall sysTrapMemPtrSetOwner;
+
+function MemPtrResize(p: MemPtr; newSize: UInt32): Err; syscall sysTrapMemPtrResize;
+
+function MemPtrResetLock(p: MemPtr): Err; syscall sysTrapMemPtrResetLock;
+
+function MemPtrUnlock(p: MemPtr): Err; syscall sysTrapMemPtrUnlock;
+
+//-------------------------------------------------------------------
+// MemHandle (Movable) based Chunk Routines
+//-------------------------------------------------------------------
+
+function MemHandleNew(size: UInt32): MemHandle; syscall sysTrapMemHandleNew;
+
+function MemHandleFree(h: MemHandle): Err; syscall sysTrapMemHandleFree;
+
+// Getting Attributes
+function MemHandleFlags(h: MemHandle): UInt16; syscall sysTrapMemHandleFlags;
+
+function MemHandleSize(h: MemHandle): UInt32; syscall sysTrapMemHandleSize;
+
+function MemHandleOwner(h: MemHandle): UInt16; syscall sysTrapMemHandleOwner;
+
+function MemHandleLockCount(h: MemHandle): UInt16; syscall sysTrapMemHandleLockCount;
+
+function MemHandleHeapID(h: MemHandle): UInt16; syscall sysTrapMemHandleHeapID;
+
+function MemHandleDataStorage(h: MemHandle): Boolean; syscall sysTrapMemHandleDataStorage;
+
+function MemHandleCardNo(h: MemHandle): UInt16; syscall sysTrapMemHandleCardNo;
+
+function MemHandleToLocalID(h: MemHandle): LocalID; syscall sysTrapMemHandleToLocalID;
+
+// Setting Attributes
+function MemHandleSetOwner(h: MemHandle; owner: UInt16): Err; syscall sysTrapMemHandleSetOwner;
+
+function MemHandleResize(h: MemHandle; newSize: UInt32): Err; syscall sysTrapMemHandleResize;
+
+function MemHandleLock(h: MemHandle): MemPtr; syscall sysTrapMemHandleLock;
+
+function MemHandleUnlock(h: MemHandle): Err; syscall sysTrapMemHandleUnlock;
+
+function MemHandleResetLock(h: MemHandle): Err; syscall sysTrapMemHandleResetLock;
+
+//-------------------------------------------------------------------
+// Local ID based routines
+//-------------------------------------------------------------------
+
+function MemLocalIDToGlobal(local: LocalID; cardNo: UInt16): MemPtr; syscall sysTrapMemLocalIDToGlobal;
+
+function MemLocalIDKind(local: LocalID): LocalIDKind; syscall sysTrapMemLocalIDKind;
+
+function MemLocalIDToPtr(local: LocalID; cardNo: UInt16): MemPtr; syscall sysTrapMemLocalIDToPtr;
+
+function MemLocalIDToLockedPtr(local: LocalID; cardNo: UInt16): MemPtr; syscall sysTrapMemLocalIDToLockedPtr;
+
+//-------------------------------------------------------------------
+// Utilities
+//-------------------------------------------------------------------
+
+function MemMove(dstP: Pointer; const sP: Pointer; numBytes: Int32): Err; syscall sysTrapMemMove;
+
+function MemSet(dstP: Pointer; numBytes: Int32; value: UInt8): Err; syscall sysTrapMemSet;
+
+function MemCmp(const s1: Pointer; const s2: Pointer; numBytes: Int32): Int16; syscall sysTrapMemCmp;
+
+function MemSemaphoreReserve(writeAccess: Boolean): Err; syscall sysTrapMemSemaphoreReserve;
+
+function MemSemaphoreRelease(writeAccess: Boolean): Err; syscall sysTrapMemSemaphoreRelease;
+
+//-------------------------------------------------------------------
+// Debugging Support
+//-------------------------------------------------------------------
+
+function MemDebugMode: UInt16; syscall sysTrapMemDebugMode;
+
+function MemSetDebugMode(flags: UInt16): Err; syscall sysTrapMemSetDebugMode;
+
+function MemHeapScramble(heapID: UInt16): Err; syscall sysTrapMemHeapScramble;
+
+function MemHeapCheck(heapID: UInt16): Err; syscall sysTrapMemHeapCheck;
+
+implementation
+
+end.