aboutsummaryrefslogtreecommitdiff
path: root/SrcShared/Palm/Platform/Incs/Core/System/MemoryMgr.h
diff options
context:
space:
mode:
Diffstat (limited to 'SrcShared/Palm/Platform/Incs/Core/System/MemoryMgr.h')
-rw-r--r--SrcShared/Palm/Platform/Incs/Core/System/MemoryMgr.h341
1 files changed, 341 insertions, 0 deletions
diff --git a/SrcShared/Palm/Platform/Incs/Core/System/MemoryMgr.h b/SrcShared/Palm/Platform/Incs/Core/System/MemoryMgr.h
new file mode 100644
index 0000000..c0b7f6d
--- /dev/null
+++ b/SrcShared/Palm/Platform/Incs/Core/System/MemoryMgr.h
@@ -0,0 +1,341 @@
+/******************************************************************************
+ *
+ * Copyright (c) 1994-1999 Palm Computing, Inc. or its subsidiaries.
+ * All rights reserved.
+ *
+ * File: MemoryMgr.h
+ *
+ * Description:
+ * Include file for Memory Manager
+ *
+ * History:
+ * 10/25/94 RM Created by Ron Marianetti
+ * 10/28/99 kwk Added memErrROMOnlyCard.
+ *
+ *****************************************************************************/
+
+#ifndef __MEMORYMGR_H__
+#define __MEMORYMGR_H__
+
+
+// Include elementary types
+#include <PalmTypes.h> // Basic types
+#include <CoreTraps.h> // Trap Numbers.
+#include <ErrorBase.h>
+
+
+/************************************************************
+ * Memory Manager Types
+ *************************************************************/
+typedef enum { memIDPtr, memIDHandle } LocalIDKind;
+
+
+/************************************************************
+ * Flags accepted as parameter for MemNewChunk.
+ *************************************************************/
+#define memNewChunkFlagPreLock 0x0100
+#define memNewChunkFlagNonMovable 0x0200
+#define memNewChunkFlagAtStart 0x0400 // force allocation at front of heap
+#define memNewChunkFlagAtEnd 0x0800 // force allocation at end of heap
+
+
+/************************************************************
+ * Memory Manager Debug settings for the MemSetDebugMode function
+ *************************************************************/
+#define memDebugModeCheckOnChange 0x0001
+#define memDebugModeCheckOnAll 0x0002
+#define memDebugModeScrambleOnChange 0x0004
+#define memDebugModeScrambleOnAll 0x0008
+#define memDebugModeFillFree 0x0010
+#define memDebugModeAllHeaps 0x0020
+#define memDebugModeRecordMinDynHeapFree 0x0040
+
+
+
+
+/************************************************************
+ * Memory Manager result codes
+ *************************************************************/
+#define memErrChunkLocked (memErrorClass | 1)
+#define memErrNotEnoughSpace (memErrorClass | 2)
+#define memErrInvalidParam (memErrorClass | 3) /* invalid param or requested size is too big */
+#define memErrChunkNotLocked (memErrorClass | 4)
+#define memErrCardNotPresent (memErrorClass | 5)
+#define memErrNoCardHeader (memErrorClass | 6)
+#define memErrInvalidStoreHeader (memErrorClass | 7)
+#define memErrRAMOnlyCard (memErrorClass | 8)
+#define memErrWriteProtect (memErrorClass | 9)
+#define memErrNoRAMOnCard (memErrorClass | 10)
+#define memErrNoStore (memErrorClass | 11)
+#define memErrROMOnlyCard (memErrorClass | 12)
+
+
+/********************************************************************
+ * Memory Manager Routines
+ * These are define as external calls only under emulation mode or
+ * under native mode from the module that actually installs the trap
+ * vectors
+ ********************************************************************/
+#ifdef REMOVE_FOR_EMULATOR
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+//-------------------------------------------------------------------
+// Initialization
+//-------------------------------------------------------------------
+Err MemInit(void)
+ SYS_TRAP(sysTrapMemInit);
+
+Err MemKernelInit(void)
+ SYS_TRAP(sysTrapMemKernelInit);
+
+Err MemInitHeapTable(UInt16 cardNo)
+ SYS_TRAP(sysTrapMemInitHeapTable);
+
+//-------------------------------------------------------------------
+// Card formatting and Info
+//-------------------------------------------------------------------
+UInt16 MemNumCards(void)
+ SYS_TRAP(sysTrapMemNumCards);
+
+Err MemCardFormat(UInt16 cardNo, Char *cardNameP,
+ Char *manufNameP, Char *ramStoreNameP)
+ SYS_TRAP(sysTrapMemCardFormat);
+
+Err MemCardInfo(UInt16 cardNo,
+ Char *cardNameP, Char *manufNameP,
+ UInt16 *versionP, UInt32 *crDateP,
+ UInt32 *romSizeP, UInt32 *ramSizeP,
+ UInt32 *freeBytesP)
+ SYS_TRAP(sysTrapMemCardInfo);
+
+
+//-------------------------------------------------------------------
+// Store Info
+//-------------------------------------------------------------------
+Err MemStoreInfo(UInt16 cardNo, UInt16 storeNumber,
+ UInt16 *versionP, UInt16 *flagsP, Char *nameP,
+ UInt32 * crDateP, UInt32 *bckUpDateP,
+ UInt32 * heapListOffsetP, UInt32 *initCodeOffset1P,
+ UInt32 *initCodeOffset2P, LocalID* databaseDirIDP)
+ SYS_TRAP(sysTrapMemStoreInfo);
+
+Err MemStoreSetInfo(UInt16 cardNo, UInt16 storeNumber,
+ UInt16 *versionP, UInt16 *flagsP, Char *nameP,
+ UInt32 *crDateP, UInt32 *bckUpDateP,
+ UInt32 *heapListOffsetP, UInt32 *initCodeOffset1P,
+ UInt32 *initCodeOffset2P, LocalID* databaseDirIDP)
+ SYS_TRAP(sysTrapMemStoreSetInfo);
+
+
+//-------------------------------------------------------------------
+// Heap Info & Utilities
+//-------------------------------------------------------------------
+UInt16 MemNumHeaps(UInt16 cardNo)
+ SYS_TRAP(sysTrapMemNumHeaps);
+
+UInt16 MemNumRAMHeaps(UInt16 cardNo)
+ SYS_TRAP(sysTrapMemNumRAMHeaps);
+
+UInt16 MemHeapID(UInt16 cardNo, UInt16 heapIndex)
+ SYS_TRAP(sysTrapMemHeapID);
+
+Boolean MemHeapDynamic(UInt16 heapID)
+ SYS_TRAP(sysTrapMemHeapDynamic);
+
+Err MemHeapFreeBytes(UInt16 heapID, UInt32 *freeP, UInt32 *maxP)
+ SYS_TRAP(sysTrapMemHeapFreeBytes);
+
+UInt32 MemHeapSize(UInt16 heapID)
+ SYS_TRAP(sysTrapMemHeapSize);
+
+UInt16 MemHeapFlags(UInt16 heapID)
+ SYS_TRAP(sysTrapMemHeapFlags);
+
+
+// Heap utilities
+Err MemHeapCompact(UInt16 heapID)
+ SYS_TRAP(sysTrapMemHeapCompact);
+
+Err MemHeapInit(UInt16 heapID, Int16 numHandles, Boolean initContents)
+ SYS_TRAP(sysTrapMemHeapInit);
+
+Err MemHeapFreeByOwnerID(UInt16 heapID, UInt16 ownerID)
+ SYS_TRAP(sysTrapMemHeapFreeByOwnerID);
+
+
+//-------------------------------------------------------------------
+// Low Level Allocation
+//-------------------------------------------------------------------
+MemPtr MemChunkNew(UInt16 heapID, UInt32 size, UInt16 attr)
+ SYS_TRAP(sysTrapMemChunkNew);
+
+Err MemChunkFree(MemPtr chunkDataP)
+ SYS_TRAP(sysTrapMemChunkFree);
+
+
+
+//-------------------------------------------------------------------
+// Pointer (Non-Movable) based Chunk Routines
+//-------------------------------------------------------------------
+MemPtr MemPtrNew(UInt32 size)
+ SYS_TRAP(sysTrapMemPtrNew);
+
+#define MemPtrFree( p) \
+ MemChunkFree(p)
+
+// Getting Attributes
+MemHandle MemPtrRecoverHandle(MemPtr p)
+ SYS_TRAP(sysTrapMemPtrRecoverHandle);
+
+UInt16 MemPtrFlags(MemPtr p)
+ SYS_TRAP(sysTrapMemPtrFlags);
+
+UInt32 MemPtrSize(MemPtr p)
+ SYS_TRAP(sysTrapMemPtrSize);
+
+UInt16 MemPtrOwner(MemPtr p)
+ SYS_TRAP(sysTrapMemPtrOwner);
+
+UInt16 MemPtrHeapID(MemPtr p)
+ SYS_TRAP(sysTrapMemPtrHeapID);
+
+Boolean MemPtrDataStorage(MemPtr p)
+ SYS_TRAP(sysTrapMemPtrDataStorage);
+
+UInt16 MemPtrCardNo(MemPtr p)
+ SYS_TRAP(sysTrapMemPtrCardNo);
+
+LocalID MemPtrToLocalID(MemPtr p)
+ SYS_TRAP(sysTrapMemPtrToLocalID);
+
+// Setting Attributes
+Err MemPtrSetOwner(MemPtr p, UInt16 owner)
+ SYS_TRAP(sysTrapMemPtrSetOwner);
+
+Err MemPtrResize(MemPtr p, UInt32 newSize)
+ SYS_TRAP(sysTrapMemPtrResize);
+
+Err MemPtrResetLock(MemPtr p)
+ SYS_TRAP(sysTrapMemPtrResetLock);
+
+Err MemPtrUnlock(MemPtr p)
+ SYS_TRAP(sysTrapMemPtrUnlock);
+
+
+//-------------------------------------------------------------------
+// MemHandle (Movable) based Chunk Routines
+//-------------------------------------------------------------------
+MemHandle MemHandleNew(UInt32 size)
+ SYS_TRAP(sysTrapMemHandleNew);
+
+Err MemHandleFree(MemHandle h)
+ SYS_TRAP(sysTrapMemHandleFree);
+
+// Getting Attributes
+UInt16 MemHandleFlags(MemHandle h)
+ SYS_TRAP(sysTrapMemHandleFlags);
+
+UInt32 MemHandleSize(MemHandle h)
+ SYS_TRAP(sysTrapMemHandleSize);
+
+UInt16 MemHandleOwner(MemHandle h)
+ SYS_TRAP(sysTrapMemHandleOwner);
+
+UInt16 MemHandleLockCount(MemHandle h)
+ SYS_TRAP(sysTrapMemHandleLockCount);
+
+UInt16 MemHandleHeapID(MemHandle h)
+ SYS_TRAP(sysTrapMemHandleHeapID);
+
+Boolean MemHandleDataStorage(MemHandle h)
+ SYS_TRAP(sysTrapMemHandleDataStorage);
+
+UInt16 MemHandleCardNo(MemHandle h)
+ SYS_TRAP(sysTrapMemHandleCardNo);
+
+LocalID MemHandleToLocalID(MemHandle h)
+ SYS_TRAP(sysTrapMemHandleToLocalID);
+
+
+// Setting Attributes
+Err MemHandleSetOwner( MemHandle h, UInt16 owner)
+ SYS_TRAP(sysTrapMemHandleSetOwner);
+
+Err MemHandleResize(MemHandle h, UInt32 newSize)
+ SYS_TRAP(sysTrapMemHandleResize);
+
+MemPtr MemHandleLock(MemHandle h)
+ SYS_TRAP(sysTrapMemHandleLock);
+
+Err MemHandleUnlock(MemHandle h)
+ SYS_TRAP(sysTrapMemHandleUnlock);
+
+Err MemHandleResetLock(MemHandle h)
+ SYS_TRAP(sysTrapMemHandleResetLock);
+
+
+
+
+//-------------------------------------------------------------------
+// Local ID based routines
+//-------------------------------------------------------------------
+MemPtr MemLocalIDToGlobal(LocalID local, UInt16 cardNo)
+ SYS_TRAP(sysTrapMemLocalIDToGlobal);
+
+LocalIDKind MemLocalIDKind(LocalID local)
+ SYS_TRAP(sysTrapMemLocalIDKind);
+
+MemPtr MemLocalIDToPtr(LocalID local, UInt16 cardNo)
+ SYS_TRAP(sysTrapMemLocalIDToPtr);
+
+MemPtr MemLocalIDToLockedPtr(LocalID local, UInt16 cardNo)
+ SYS_TRAP(sysTrapMemLocalIDToLockedPtr);
+
+
+//-------------------------------------------------------------------
+// Utilities
+//-------------------------------------------------------------------
+Err MemMove(void *dstP, const void *sP, Int32 numBytes)
+ SYS_TRAP(sysTrapMemMove);
+
+Err MemSet(void *dstP, Int32 numBytes, UInt8 value)
+ SYS_TRAP(sysTrapMemSet);
+
+Int16 MemCmp (const void *s1, const void *s2, Int32 numBytes)
+ SYS_TRAP(sysTrapMemCmp);
+
+Err MemSemaphoreReserve(Boolean writeAccess)
+ SYS_TRAP(sysTrapMemSemaphoreReserve);
+
+Err MemSemaphoreRelease(Boolean writeAccess)
+ SYS_TRAP(sysTrapMemSemaphoreRelease);
+
+//-------------------------------------------------------------------
+// Debugging Support
+//-------------------------------------------------------------------
+UInt16 MemDebugMode(void)
+ SYS_TRAP(sysTrapMemDebugMode);
+
+Err MemSetDebugMode(UInt16 flags)
+ SYS_TRAP(sysTrapMemSetDebugMode);
+
+Err MemHeapScramble(UInt16 heapID)
+ SYS_TRAP(sysTrapMemHeapScramble);
+
+Err MemHeapCheck(UInt16 heapID)
+ SYS_TRAP(sysTrapMemHeapCheck);
+
+
+#ifdef __cplusplus
+}
+#endif
+#endif
+
+
+
+
+
+#endif // __MEMORYMGR_H__