home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1999 April: Mac OS SDK / Dev.CD Apr 99 SDK1.toast / Development Kits / Interfaces&Libraries / Universal / Interfaces / CIncludes / MacMemory.h < prev    next >
Encoding:
C/C++ Source or Header  |  1998-08-17  |  30.1 KB  |  835 lines  |  [TEXT/MPS ]

  1. /*
  2.      File:        MacMemory.h
  3.  
  4.      Contains:    Memory Manager Interfaces.
  5.  
  6.      Version:    Technology:    System 7.5
  7.                  Release:    Universal Interfaces 3.2
  8.  
  9.      Copyright:    © 1985-1998 by Apple Computer, Inc., all rights reserved
  10.  
  11.      Bugs?:        For bug reports, consult the following page on
  12.                  the World Wide Web:
  13.  
  14.                      http://developer.apple.com/bugreporter/
  15.  
  16. */
  17. #ifndef __MACMEMORY__
  18. #define __MACMEMORY__
  19.  
  20.  
  21. #ifndef __MACTYPES__
  22. #include <MacTypes.h>
  23. #endif
  24. #ifndef __MIXEDMODE__
  25. #include <MixedMode.h>
  26. #endif
  27.  
  28.  
  29.  
  30. #if PRAGMA_ONCE
  31. #pragma once
  32. #endif
  33.  
  34. #ifdef __cplusplus
  35. extern "C" {
  36. #endif
  37.  
  38. #if PRAGMA_IMPORT
  39. #pragma import on
  40. #endif
  41.  
  42. #if PRAGMA_STRUCT_ALIGN
  43.     #pragma options align=mac68k
  44. #elif PRAGMA_STRUCT_PACKPUSH
  45.     #pragma pack(push, 2)
  46. #elif PRAGMA_STRUCT_PACK
  47.     #pragma pack(2)
  48. #endif
  49.  
  50.  
  51.  
  52. enum {
  53.     maxSize                        = 0x00800000                    /*Max data block size is 8 megabytes*/
  54. };
  55.  
  56.  
  57. enum {
  58.     defaultPhysicalEntryCount    = 8
  59. };
  60.  
  61.  
  62. enum {
  63.                                                                 /* values returned from the GetPageState function */
  64.     kPageInMemory                = 0,
  65.     kPageOnDisk                    = 1,
  66.     kNotPaged                    = 2
  67. };
  68.  
  69.  
  70. enum {
  71.                                                                 /* masks for Zone->heapType field */
  72.     k32BitHeap                    = 1,                            /* valid in all Memory Managers */
  73.     kNewStyleHeap                = 2,                            /* true if new Heap Manager is present */
  74.     kNewDebugHeap                = 4                                /* true if new Heap Manager is running in debug mode on this heap */
  75. };
  76.  
  77. /* Note: The type "Size" moved to Types.h */
  78.  
  79.  
  80. typedef CALLBACK_API( long , GrowZoneProcPtr )(Size cbNeeded);
  81. typedef CALLBACK_API( void , PurgeProcPtr )(Handle blockToPurge);
  82. typedef CALLBACK_API( void , UserFnProcPtr )(void *parameter);
  83. /*
  84.     WARNING: UserFnProcPtr uses register based parameters under classic 68k
  85.              and cannot be written in a high-level language without 
  86.              the help of mixed mode or assembly glue.
  87. */
  88. typedef STACK_UPP_TYPE(GrowZoneProcPtr)                         GrowZoneUPP;
  89. typedef STACK_UPP_TYPE(PurgeProcPtr)                             PurgeUPP;
  90. typedef REGISTER_UPP_TYPE(UserFnProcPtr)                         UserFnUPP;
  91.  
  92. struct Zone {
  93.     Ptr                             bkLim;
  94.     Ptr                             purgePtr;
  95.     Ptr                             hFstFree;
  96.     long                             zcbFree;
  97.     GrowZoneUPP                     gzProc;
  98.     short                             moreMast;
  99.     short                             flags;
  100.     short                             cntRel;
  101.     short                             maxRel;
  102.     short                             cntNRel;
  103.     SInt8                             heapType;                    /* previously "maxNRel", now holds flags (e.g. k32BitHeap)*/
  104.     SInt8                             unused;
  105.     short                             cntEmpty;
  106.     short                             cntHandles;
  107.     long                             minCBFree;
  108.     PurgeUPP                         purgeProc;
  109.     Ptr                             sparePtr;
  110.     Ptr                             allocPtr;
  111.     short                             heapData;
  112. };
  113. typedef struct Zone                        Zone;
  114.  
  115. typedef Zone *                            THz;
  116.  
  117. struct MemoryBlock {
  118.     void *                            address;
  119.     unsigned long                     count;
  120. };
  121. typedef struct MemoryBlock                MemoryBlock;
  122.  
  123. struct LogicalToPhysicalTable {
  124.     MemoryBlock                     logical;
  125.     MemoryBlock                     physical[8];
  126. };
  127. typedef struct LogicalToPhysicalTable    LogicalToPhysicalTable;
  128.  
  129. typedef short                             PageState;
  130. typedef short                             StatusRegisterContents;
  131. enum { uppGrowZoneProcInfo = 0x000000F0 };                         /* pascal 4_bytes Func(4_bytes) */
  132. enum { uppPurgeProcInfo = 0x000000C0 };                         /* pascal no_return_value Func(4_bytes) */
  133. enum { uppUserFnProcInfo = 0x00009802 };                         /* register no_return_value Func(4_bytes:A0) */
  134. #define NewGrowZoneProc(userRoutine)                             (GrowZoneUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppGrowZoneProcInfo, GetCurrentArchitecture())
  135. #define NewPurgeProc(userRoutine)                                 (PurgeUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppPurgeProcInfo, GetCurrentArchitecture())
  136. #define NewUserFnProc(userRoutine)                                 (UserFnUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppUserFnProcInfo, GetCurrentArchitecture())
  137. #define CallGrowZoneProc(userRoutine, cbNeeded)                 CALL_ONE_PARAMETER_UPP((userRoutine), uppGrowZoneProcInfo, (cbNeeded))
  138. #define CallPurgeProc(userRoutine, blockToPurge)                 CALL_ONE_PARAMETER_UPP((userRoutine), uppPurgeProcInfo, (blockToPurge))
  139. #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  140.     #pragma parameter CallUserFnProc(__A1, __A0)
  141.     void CallUserFnProc(UserFnUPP routine, void * parameter) = 0x4E91;
  142. #else
  143.     #define CallUserFnProc(userRoutine, parameter)                 CALL_ONE_PARAMETER_UPP((userRoutine), uppUserFnProcInfo, (parameter))
  144. #endif
  145. EXTERN_API( Ptr )
  146. GetApplLimit                    (void)                                                        TWOWORDINLINE(0x2EB8, 0x0130);
  147.  
  148. EXTERN_API( THz )
  149. SystemZone                        (void)                                                        TWOWORDINLINE(0x2EB8, 0x02A6);
  150.  
  151. EXTERN_API( THz )
  152. ApplicationZone                    (void)                                                        TWOWORDINLINE(0x2EB8, 0x02AA);
  153.  
  154. EXTERN_API( Handle )
  155. GZSaveHnd                        (void)                                                        TWOWORDINLINE(0x2EB8, 0x0328);
  156.  
  157. EXTERN_API( Ptr )
  158. TopMem                            (void)                                                        TWOWORDINLINE(0x2EB8, 0x0108);
  159.  
  160. EXTERN_API( OSErr )
  161. MemError                        (void)                                                        TWOWORDINLINE(0x3EB8, 0x0220);
  162.  
  163.  
  164.  
  165.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  166.                                                                                             #pragma parameter __A0 GetZone
  167.                                                                                             #endif
  168. EXTERN_API( THz )
  169. GetZone                            (void)                                                        ONEWORDINLINE(0xA11A);
  170.  
  171.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  172.                                                                                             #pragma parameter __A0 NewHandle(__D0)
  173.                                                                                             #endif
  174. EXTERN_API( Handle )
  175. NewHandle                        (Size                     byteCount)                            ONEWORDINLINE(0xA122);
  176.  
  177.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  178.                                                                                             #pragma parameter __A0 NewHandleSys(__D0)
  179.                                                                                             #endif
  180. EXTERN_API( Handle )
  181. NewHandleSys                    (Size                     byteCount)                            ONEWORDINLINE(0xA522);
  182.  
  183.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  184.                                                                                             #pragma parameter __A0 NewHandleClear(__D0)
  185.                                                                                             #endif
  186. EXTERN_API( Handle )
  187. NewHandleClear                    (Size                     byteCount)                            ONEWORDINLINE(0xA322);
  188.  
  189.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  190.                                                                                             #pragma parameter __A0 NewHandleSysClear(__D0)
  191.                                                                                             #endif
  192. EXTERN_API( Handle )
  193. NewHandleSysClear                (Size                     byteCount)                            ONEWORDINLINE(0xA722);
  194.  
  195.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  196.                                                                                             #pragma parameter __A0 HandleZone(__A0)
  197.                                                                                             #endif
  198. EXTERN_API( THz )
  199. HandleZone                        (Handle                 h)                                    ONEWORDINLINE(0xA126);
  200.  
  201.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  202.                                                                                             #pragma parameter __A0 RecoverHandle(__A0)
  203.                                                                                             #endif
  204. EXTERN_API( Handle )
  205. RecoverHandle                    (Ptr                     p)                                    ONEWORDINLINE(0xA128);
  206.  
  207.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  208.                                                                                             #pragma parameter __A0 RecoverHandleSys(__A0)
  209.                                                                                             #endif
  210. EXTERN_API( Handle )
  211. RecoverHandleSys                (Ptr                     p)                                    ONEWORDINLINE(0xA528);
  212.  
  213.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  214.                                                                                             #pragma parameter __A0 NewPtr(__D0)
  215.                                                                                             #endif
  216. EXTERN_API( Ptr )
  217. NewPtr                            (Size                     byteCount)                            ONEWORDINLINE(0xA11E);
  218.  
  219.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  220.                                                                                             #pragma parameter __A0 NewPtrSys(__D0)
  221.                                                                                             #endif
  222. EXTERN_API( Ptr )
  223. NewPtrSys                        (Size                     byteCount)                            ONEWORDINLINE(0xA51E);
  224.  
  225.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  226.                                                                                             #pragma parameter __A0 NewPtrClear(__D0)
  227.                                                                                             #endif
  228. EXTERN_API( Ptr )
  229. NewPtrClear                        (Size                     byteCount)                            ONEWORDINLINE(0xA31E);
  230.  
  231.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  232.                                                                                             #pragma parameter __A0 NewPtrSysClear(__D0)
  233.                                                                                             #endif
  234. EXTERN_API( Ptr )
  235. NewPtrSysClear                    (Size                     byteCount)                            ONEWORDINLINE(0xA71E);
  236.  
  237.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  238.                                                                                             #pragma parameter __A0 PtrZone(__A0)
  239.                                                                                             #endif
  240. EXTERN_API( THz )
  241. PtrZone                            (Ptr                     p)                                    ONEWORDINLINE(0xA148);
  242.  
  243.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  244.                                                                                             #pragma parameter __D0 MaxBlock
  245.                                                                                             #endif
  246. EXTERN_API( long )
  247. MaxBlock                        (void)                                                        ONEWORDINLINE(0xA061);
  248.  
  249.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  250.                                                                                             #pragma parameter __D0 MaxBlockSys
  251.                                                                                             #endif
  252. EXTERN_API( long )
  253. MaxBlockSys                        (void)                                                        ONEWORDINLINE(0xA461);
  254.  
  255.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  256.                                                                                             #pragma parameter __D0 StackSpace
  257.                                                                                             #endif
  258. EXTERN_API( long )
  259. StackSpace                        (void)                                                        ONEWORDINLINE(0xA065);
  260.  
  261.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  262.                                                                                             #pragma parameter __A0 NewEmptyHandle
  263.                                                                                             #endif
  264. EXTERN_API( Handle )
  265. NewEmptyHandle                    (void)                                                        ONEWORDINLINE(0xA166);
  266.  
  267.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  268.                                                                                             #pragma parameter __A0 NewEmptyHandleSys
  269.                                                                                             #endif
  270. EXTERN_API( Handle )
  271. NewEmptyHandleSys                (void)                                                        ONEWORDINLINE(0xA566);
  272.  
  273.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  274.                                                                                             #pragma parameter HLock(__A0)
  275.                                                                                             #endif
  276. EXTERN_API( void )
  277. HLock                            (Handle                 h)                                    ONEWORDINLINE(0xA029);
  278.  
  279.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  280.                                                                                             #pragma parameter HUnlock(__A0)
  281.                                                                                             #endif
  282. EXTERN_API( void )
  283. HUnlock                            (Handle                 h)                                    ONEWORDINLINE(0xA02A);
  284.  
  285.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  286.                                                                                             #pragma parameter HPurge(__A0)
  287.                                                                                             #endif
  288. EXTERN_API( void )
  289. HPurge                            (Handle                 h)                                    ONEWORDINLINE(0xA049);
  290.  
  291.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  292.                                                                                             #pragma parameter HNoPurge(__A0)
  293.                                                                                             #endif
  294. EXTERN_API( void )
  295. HNoPurge                        (Handle                 h)                                    ONEWORDINLINE(0xA04A);
  296.  
  297.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  298.                                                                                             #pragma parameter HLockHi(__A0)
  299.                                                                                             #endif
  300. EXTERN_API( void )
  301. HLockHi                            (Handle                 h)                                    TWOWORDINLINE(0xA064, 0xA029);
  302.  
  303. EXTERN_API( Handle )
  304. TempNewHandle                    (Size                     logicalSize,
  305.                                  OSErr *                resultCode)                            THREEWORDINLINE(0x3F3C, 0x001D, 0xA88F);
  306.  
  307. EXTERN_API( Size )
  308. TempMaxMem                        (Size *                    grow)                                THREEWORDINLINE(0x3F3C, 0x0015, 0xA88F);
  309.  
  310. EXTERN_API( long )
  311. TempFreeMem                        (void)                                                        THREEWORDINLINE(0x3F3C, 0x0018, 0xA88F);
  312.  
  313. EXTERN_API( void )
  314. InitZone                        (GrowZoneUPP             pgrowZone,
  315.                                  short                     cmoreMasters,
  316.                                  void *                    limitPtr,
  317.                                  void *                    startPtr);
  318.  
  319.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  320.                                                                                             #pragma parameter SetZone(__A0)
  321.                                                                                             #endif
  322. EXTERN_API( void )
  323. SetZone                            (THz                     hz)                                    ONEWORDINLINE(0xA01B);
  324.  
  325.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  326.                                                                                             #pragma parameter __D0 CompactMem(__D0)
  327.                                                                                             #endif
  328. EXTERN_API( Size )
  329. CompactMem                        (Size                     cbNeeded)                            ONEWORDINLINE(0xA04C);
  330.  
  331.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  332.                                                                                             #pragma parameter __D0 CompactMemSys(__D0)
  333.                                                                                             #endif
  334. EXTERN_API( Size )
  335. CompactMemSys                    (Size                     cbNeeded)                            ONEWORDINLINE(0xA44C);
  336.  
  337.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  338.                                                                                             #pragma parameter PurgeMem(__D0)
  339.                                                                                             #endif
  340. EXTERN_API( void )
  341. PurgeMem                        (Size                     cbNeeded)                            ONEWORDINLINE(0xA04D);
  342.  
  343.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  344.                                                                                             #pragma parameter PurgeMemSys(__D0)
  345.                                                                                             #endif
  346. EXTERN_API( void )
  347. PurgeMemSys                        (Size                     cbNeeded)                            ONEWORDINLINE(0xA44D);
  348.  
  349.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  350.                                                                                             #pragma parameter __D0 FreeMem
  351.                                                                                             #endif
  352. EXTERN_API( long )
  353. FreeMem                            (void)                                                        ONEWORDINLINE(0xA01C);
  354.  
  355.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  356.                                                                                             #pragma parameter __D0 FreeMemSys
  357.                                                                                             #endif
  358. EXTERN_API( long )
  359. FreeMemSys                        (void)                                                        ONEWORDINLINE(0xA41C);
  360.  
  361.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  362.                                                                                             #pragma parameter ReserveMem(__D0)
  363.                                                                                             #endif
  364. EXTERN_API( void )
  365. ReserveMem                        (Size                     cbNeeded)                            ONEWORDINLINE(0xA040);
  366.  
  367.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  368.                                                                                             #pragma parameter ReserveMemSys(__D0)
  369.                                                                                             #endif
  370. EXTERN_API( void )
  371. ReserveMemSys                    (Size                     cbNeeded)                            ONEWORDINLINE(0xA440);
  372.  
  373.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  374.                                                                                             #pragma parameter __D0 MaxMem(__A1)
  375.                                                                                             #endif
  376. EXTERN_API( Size )
  377. MaxMem                            (Size *                    grow)                                TWOWORDINLINE(0xA11D, 0x2288);
  378.  
  379.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  380.                                                                                             #pragma parameter __D0 MaxMemSys(__A1)
  381.                                                                                             #endif
  382. EXTERN_API( Size )
  383. MaxMemSys                        (Size *                    grow)                                TWOWORDINLINE(0xA51D, 0x2288);
  384.  
  385.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  386.                                                                                             #pragma parameter SetGrowZone(__A0)
  387.                                                                                             #endif
  388. EXTERN_API( void )
  389. SetGrowZone                        (GrowZoneUPP             growZone)                            ONEWORDINLINE(0xA04B);
  390.  
  391.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  392.                                                                                             #pragma parameter MoveHHi(__A0)
  393.                                                                                             #endif
  394. EXTERN_API( void )
  395. MoveHHi                            (Handle                 h)                                    ONEWORDINLINE(0xA064);
  396.  
  397.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  398.                                                                                             #pragma parameter DisposePtr(__A0)
  399.                                                                                             #endif
  400. EXTERN_API( void )
  401. DisposePtr                        (Ptr                     p)                                    ONEWORDINLINE(0xA01F);
  402.  
  403. EXTERN_API( Size )
  404. GetPtrSize                        (Ptr                     p);
  405.  
  406.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  407.                                                                                             #pragma parameter SetPtrSize(__A0, __D0)
  408.                                                                                             #endif
  409. EXTERN_API( void )
  410. SetPtrSize                        (Ptr                     p,
  411.                                  Size                     newSize)                            ONEWORDINLINE(0xA020);
  412.  
  413.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  414.                                                                                             #pragma parameter DisposeHandle(__A0)
  415.                                                                                             #endif
  416. EXTERN_API( void )
  417. DisposeHandle                    (Handle                 h)                                    ONEWORDINLINE(0xA023);
  418.  
  419.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  420.                                                                                             #pragma parameter SetHandleSize(__A0, __D0)
  421.                                                                                             #endif
  422. EXTERN_API( void )
  423. SetHandleSize                    (Handle                 h,
  424.                                  Size                     newSize)                            ONEWORDINLINE(0xA024);
  425.  
  426. /* 
  427.     NOTE
  428.     
  429.     GetHandleSize and GetPtrSize are documented in Inside Mac as returning 0 
  430.     in case of an error, but the traps actually return an error code in D0.
  431.     The glue sets D0 to 0 if an error occured.
  432. */
  433. EXTERN_API( Size )
  434. GetHandleSize                    (Handle                 h);
  435.  
  436.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  437.                                                                                             #pragma parameter __D0 InlineGetHandleSize(__A0)
  438.                                                                                             #endif
  439. EXTERN_API( Size )
  440. InlineGetHandleSize                (Handle                 h)                                    ONEWORDINLINE(0xA025);
  441.  
  442.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  443.                                                                                             #pragma parameter ReallocateHandle(__A0, __D0)
  444.                                                                                             #endif
  445. EXTERN_API( void )
  446. ReallocateHandle                (Handle                 h,
  447.                                  Size                     byteCount)                            ONEWORDINLINE(0xA027);
  448.  
  449.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  450.                                                                                             #pragma parameter ReallocateHandleSys(__A0, __D0)
  451.                                                                                             #endif
  452. EXTERN_API( void )
  453. ReallocateHandleSys                (Handle                 h,
  454.                                  Size                     byteCount)                            ONEWORDINLINE(0xA427);
  455.  
  456.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  457.                                                                                             #pragma parameter EmptyHandle(__A0)
  458.                                                                                             #endif
  459. EXTERN_API( void )
  460. EmptyHandle                        (Handle                 h)                                    ONEWORDINLINE(0xA02B);
  461.  
  462.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  463.                                                                                             #pragma parameter HSetRBit(__A0)
  464.                                                                                             #endif
  465. EXTERN_API( void )
  466. HSetRBit                        (Handle                 h)                                    ONEWORDINLINE(0xA067);
  467.  
  468.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  469.                                                                                             #pragma parameter HClrRBit(__A0)
  470.                                                                                             #endif
  471. EXTERN_API( void )
  472. HClrRBit                        (Handle                 h)                                    ONEWORDINLINE(0xA068);
  473.  
  474.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  475.                                                                                             #pragma parameter __D0 HGetState(__A0)
  476.                                                                                             #endif
  477. EXTERN_API( SInt8 )
  478. HGetState                        (Handle                 h)                                    ONEWORDINLINE(0xA069);
  479.  
  480.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  481.                                                                                             #pragma parameter HSetState(__A0, __D0)
  482.                                                                                             #endif
  483. EXTERN_API( void )
  484. HSetState                        (Handle                 h,
  485.                                  SInt8                     flags)                                ONEWORDINLINE(0xA06A);
  486.  
  487. EXTERN_API( void )
  488. PurgeSpace                        (long *                    total,
  489.                                  long *                    contig);
  490.  
  491. /*
  492.     PurgeSpaceTotal and PurgeSpaceContiguous are currently only implement
  493.     on classic 68K.  The are the same as PurgeSpace() but return just
  494.     one value (either total space purgable or contiguous space purgable).
  495. */
  496.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  497.                                                                                             #pragma parameter __A0 PurgeSpaceTotal
  498.                                                                                             #endif
  499. EXTERN_API( long )
  500. PurgeSpaceTotal                    (void)                                                        ONEWORDINLINE(0xA062);
  501.  
  502.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  503.                                                                                             #pragma parameter __D0 PurgeSpaceContiguous
  504.                                                                                             #endif
  505. EXTERN_API( long )
  506. PurgeSpaceContiguous            (void)                                                        ONEWORDINLINE(0xA062);
  507.  
  508.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  509.                                                                                             #pragma parameter __A0 PurgeSpaceSysTotal
  510.                                                                                             #endif
  511. EXTERN_API( long )
  512. PurgeSpaceSysTotal                (void)                                                        ONEWORDINLINE(0xA562);
  513.  
  514.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  515.                                                                                             #pragma parameter __D0 PurgeSpaceSysContiguous
  516.                                                                                             #endif
  517. EXTERN_API( long )
  518. PurgeSpaceSysContiguous            (void)                                                        ONEWORDINLINE(0xA562);
  519.  
  520.  
  521. /*****************************************************************************
  522.  
  523.     The routines: 
  524.  
  525.         BlockMoveUncached
  526.         BlockMoveDataUncached
  527.         BlockZero
  528.         BlockZeroUncached
  529.     
  530.     are intended for developers writing drivers. They do not exist in 
  531.     “InterfaceLib.” You must link with “DriverServicesLib” to access them.
  532.     
  533.     But since BlockMove and BlockMoveData exist in both “InterfaceLib” and
  534.     “DriverServicesLib”, you cannot link with both libraries.
  535.     
  536. *****************************************************************************/
  537.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  538.                                                                                             #pragma parameter BlockMove(__A0, __A1, __D0)
  539.                                                                                             #endif
  540. EXTERN_API( void )
  541. BlockMove                        (const void *            srcPtr,
  542.                                  void *                    destPtr,
  543.                                  Size                     byteCount)                            ONEWORDINLINE(0xA02E);
  544.  
  545.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  546.                                                                                             #pragma parameter BlockMoveData(__A0, __A1, __D0)
  547.                                                                                             #endif
  548. EXTERN_API( void )
  549. BlockMoveData                    (const void *            srcPtr,
  550.                                  void *                    destPtr,
  551.                                  Size                     byteCount)                            ONEWORDINLINE(0xA22E);
  552.  
  553. EXTERN_API_C( void )
  554. BlockMoveUncached                (const void *            srcPtr,
  555.                                  void *                    destPtr,
  556.                                  Size                     byteCount);
  557.  
  558. EXTERN_API_C( void )
  559. BlockMoveDataUncached            (const void *            srcPtr,
  560.                                  void *                    destPtr,
  561.                                  Size                     byteCount);
  562.  
  563. EXTERN_API_C( void )
  564. BlockZero                        (void *                    destPtr,
  565.                                  Size                     byteCount);
  566.  
  567. EXTERN_API_C( void )
  568. BlockZeroUncached                (void *                    destPtr,
  569.                                  Size                     byteCount);
  570.  
  571.  
  572. EXTERN_API( void )
  573. MaxApplZone                        (void)                                                        ONEWORDINLINE(0xA063);
  574.  
  575.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  576.                                                                                             #pragma parameter SetApplBase(__A0)
  577.                                                                                             #endif
  578. EXTERN_API( void )
  579. SetApplBase                        (void *                    startPtr)                            ONEWORDINLINE(0xA057);
  580.  
  581. EXTERN_API( void )
  582. MoreMasters                        (void)                                                        ONEWORDINLINE(0xA036);
  583.  
  584.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  585.                                                                                             #pragma parameter SetApplLimit(__A0)
  586.                                                                                             #endif
  587. EXTERN_API( void )
  588. SetApplLimit                    (void *                    zoneLimit)                            ONEWORDINLINE(0xA02D);
  589.  
  590.  
  591.  
  592. EXTERN_API( void )
  593. InitApplZone                    (void)                                                        ONEWORDINLINE(0xA02C);
  594.  
  595.  
  596. /*  Temporary Memory routines renamed, but obsolete, in System 7.0 and later.  */
  597. EXTERN_API( void )
  598. TempHLock                        (Handle                 h,
  599.                                  OSErr *                resultCode)                            THREEWORDINLINE(0x3F3C, 0x001E, 0xA88F);
  600.  
  601. EXTERN_API( void )
  602. TempHUnlock                        (Handle                 h,
  603.                                  OSErr *                resultCode)                            THREEWORDINLINE(0x3F3C, 0x001F, 0xA88F);
  604.  
  605. EXTERN_API( void )
  606. TempDisposeHandle                (Handle                 h,
  607.                                  OSErr *                resultCode)                            THREEWORDINLINE(0x3F3C, 0x0020, 0xA88F);
  608.  
  609. EXTERN_API( Ptr )
  610. TempTopMem                        (void)                                                        THREEWORDINLINE(0x3F3C, 0x0016, 0xA88F);
  611.  
  612.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  613.                                                                                             #pragma parameter __D0 HoldMemory(__A0, __A1)
  614.                                                                                             #endif
  615. EXTERN_API( OSErr )
  616. HoldMemory                        (void *                    address,
  617.                                  unsigned long             count)                                TWOWORDINLINE(0x7000, 0xA05C);
  618.  
  619.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  620.                                                                                             #pragma parameter __D0 UnholdMemory(__A0, __A1)
  621.                                                                                             #endif
  622. EXTERN_API( OSErr )
  623. UnholdMemory                    (void *                    address,
  624.                                  unsigned long             count)                                TWOWORDINLINE(0x7001, 0xA05C);
  625.  
  626.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  627.                                                                                             #pragma parameter __D0 LockMemory(__A0, __A1)
  628.                                                                                             #endif
  629. EXTERN_API( OSErr )
  630. LockMemory                        (void *                    address,
  631.                                  unsigned long             count)                                TWOWORDINLINE(0x7002, 0xA05C);
  632.  
  633.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  634.                                                                                             #pragma parameter __D0 LockMemoryForOutput(__A0, __A1)
  635.                                                                                             #endif
  636. EXTERN_API( OSErr )
  637. LockMemoryForOutput                (void *                    address,
  638.                                  unsigned long             count)                                TWOWORDINLINE(0x700A, 0xA05C);
  639.  
  640.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  641.                                                                                             #pragma parameter __D0 LockMemoryContiguous(__A0, __A1)
  642.                                                                                             #endif
  643. EXTERN_API( OSErr )
  644. LockMemoryContiguous            (void *                    address,
  645.                                  unsigned long             count)                                TWOWORDINLINE(0x7004, 0xA05C);
  646.  
  647.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  648.                                                                                             #pragma parameter __D0 UnlockMemory(__A0, __A1)
  649.                                                                                             #endif
  650. EXTERN_API( OSErr )
  651. UnlockMemory                    (void *                    address,
  652.                                  unsigned long             count)                                TWOWORDINLINE(0x7003, 0xA05C);
  653.  
  654.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  655.                                                                                             #pragma parameter __D0 MakeMemoryResident(__A0, __A1)
  656.                                                                                             #endif
  657. EXTERN_API( OSErr )
  658. MakeMemoryResident                (void *                    address,
  659.                                  unsigned long             count)                                TWOWORDINLINE(0x700B, 0xA05C);
  660.  
  661.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  662.                                                                                             #pragma parameter __D0 ReleaseMemoryData(__A0, __A1)
  663.                                                                                             #endif
  664. EXTERN_API( OSErr )
  665. ReleaseMemoryData                (void *                    address,
  666.                                  unsigned long             count)                                TWOWORDINLINE(0x700C, 0xA05C);
  667.  
  668.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  669.                                                                                             #pragma parameter __D0 MakeMemoryNonResident(__A0, __A1)
  670.                                                                                             #endif
  671. EXTERN_API( OSErr )
  672. MakeMemoryNonResident            (void *                    address,
  673.                                  unsigned long             count)                                TWOWORDINLINE(0x700D, 0xA05C);
  674.  
  675.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  676.                                                                                             #pragma parameter __D0 FlushMemory(__A0, __A1)
  677.                                                                                             #endif
  678. EXTERN_API( OSErr )
  679. FlushMemory                        (void *                    address,
  680.                                  unsigned long             count)                                TWOWORDINLINE(0x700E, 0xA05C);
  681.  
  682. EXTERN_API( OSErr )
  683. GetPhysical                        (LogicalToPhysicalTable * addresses,
  684.                                  unsigned long *        physicalEntryCount);
  685.  
  686.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  687.                                                                                             #pragma parameter __D0 DeferUserFn(__A0, __D0)
  688.                                                                                             #endif
  689. EXTERN_API( OSErr )
  690. DeferUserFn                        (UserFnUPP                 userFunction,
  691.                                  void *                    argument)                            ONEWORDINLINE(0xA08F);
  692.  
  693.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  694.                                                                                             #pragma parameter __D0 DebuggerGetMax
  695.                                                                                             #endif
  696. EXTERN_API( long )
  697. DebuggerGetMax                    (void)                                                        TWOWORDINLINE(0x7000, 0xA08D);
  698.  
  699. EXTERN_API( void )
  700. DebuggerEnter                    (void)                                                        TWOWORDINLINE(0x7001, 0xA08D);
  701.  
  702. EXTERN_API( void )
  703. DebuggerExit                    (void)                                                        TWOWORDINLINE(0x7002, 0xA08D);
  704.  
  705. EXTERN_API( void )
  706. DebuggerPoll                    (void)                                                        TWOWORDINLINE(0x7003, 0xA08D);
  707.  
  708.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  709.                                                                                             #pragma parameter __D0 GetPageState(__A0)
  710.                                                                                             #endif
  711. EXTERN_API( PageState )
  712. GetPageState                    (const void *            address)                            TWOWORDINLINE(0x7004, 0xA08D);
  713.  
  714.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  715.                                                                                             #pragma parameter __D0 PageFaultFatal
  716.                                                                                             #endif
  717. EXTERN_API( Boolean )
  718. PageFaultFatal                    (void)                                                        TWOWORDINLINE(0x7005, 0xA08D);
  719.  
  720.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  721.                                                                                             #pragma parameter __D0 DebuggerLockMemory(__A0, __A1)
  722.                                                                                             #endif
  723. EXTERN_API( OSErr )
  724. DebuggerLockMemory                (void *                    address,
  725.                                  unsigned long             count)                                TWOWORDINLINE(0x7006, 0xA08D);
  726.  
  727.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  728.                                                                                             #pragma parameter __D0 DebuggerUnlockMemory(__A0, __A1)
  729.                                                                                             #endif
  730. EXTERN_API( OSErr )
  731. DebuggerUnlockMemory            (void *                    address,
  732.                                  unsigned long             count)                                TWOWORDINLINE(0x7007, 0xA08D);
  733.  
  734.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  735.                                                                                             #pragma parameter __D0 EnterSupervisorMode
  736.                                                                                             #endif
  737. EXTERN_API( StatusRegisterContents )
  738. EnterSupervisorMode                (void)                                                        TWOWORDINLINE(0x7008, 0xA08D);
  739.  
  740.  
  741. /* 
  742.     StripAddress and Translate24To32 are traps on classic 68K,
  743.     but macro to the identity function on PowerMacs or other OS's.
  744. */
  745. #if TARGET_OS_MAC && TARGET_CPU_68K
  746.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  747.                                                                                             #pragma parameter __D0 StripAddress(__D0)
  748.                                                                                             #endif
  749. EXTERN_API( Ptr )
  750. StripAddress                    (void *                    theAddress)                            ONEWORDINLINE(0xA055);
  751.  
  752. #else
  753. #define StripAddress(x)       ((Ptr)(x))
  754. #endif  /* TARGET_OS_MAC && TARGET_CPU_68K */
  755.  
  756.  
  757. #if TARGET_OS_MAC && TARGET_CPU_68K
  758.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  759.                                                                                             #pragma parameter __D0 Translate24To32(__D0)
  760.                                                                                             #endif
  761. EXTERN_API( Ptr )
  762. Translate24To32                    (void *                    addr24)                                ONEWORDINLINE(0xA091);
  763.  
  764. #else
  765. #define Translate24To32(x)  ((Ptr)(x))
  766. #endif  /* TARGET_OS_MAC && TARGET_CPU_68K */
  767.  
  768. EXTERN_API( OSErr )
  769. HandToHand                        (Handle *                theHndl);
  770.  
  771.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  772.                                                                                             #pragma parameter __D0 PtrToXHand(__A0, __A1, __D0)
  773.                                                                                             #endif
  774. EXTERN_API( OSErr )
  775. PtrToXHand                        (const void *            srcPtr,
  776.                                  Handle                 dstHndl,
  777.                                  long                     size)                                ONEWORDINLINE(0xA9E2);
  778.  
  779. EXTERN_API( OSErr )
  780. PtrToHand                        (const void *            srcPtr,
  781.                                  Handle *                dstHndl,
  782.                                  long                     size);
  783.  
  784.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  785.                                                                                             #pragma parameter __D0 HandAndHand(__A0, __A1)
  786.                                                                                             #endif
  787. EXTERN_API( OSErr )
  788. HandAndHand                        (Handle                 hand1,
  789.                                  Handle                 hand2)                                ONEWORDINLINE(0xA9E4);
  790.  
  791.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  792.                                                                                             #pragma parameter __D0 PtrAndHand(__A0, __A1, __D0)
  793.                                                                                             #endif
  794. EXTERN_API( OSErr )
  795. PtrAndHand                        (const void *            ptr1,
  796.                                  Handle                 hand2,
  797.                                  long                     size)                                ONEWORDINLINE(0xA9EF);
  798.  
  799. #if OLDROUTINENAMES
  800. #define ApplicZone() ApplicationZone()
  801. #define MFTempNewHandle(logicalSize, resultCode) TempNewHandle(logicalSize, resultCode)
  802. #define MFMaxMem(grow) TempMaxMem(grow)
  803. #define MFFreeMem() TempFreeMem()
  804. #define MFTempHLock(h, resultCode) TempHLock(h, resultCode)
  805. #define MFTempHUnlock(h, resultCode) TempHUnlock(h, resultCode)
  806. #define MFTempDisposHandle(h, resultCode) TempDisposeHandle(h, resultCode)
  807. #define MFTopMem() TempTopMem()
  808. #define ResrvMem(cbNeeded) ReserveMem(cbNeeded)
  809. #define DisposPtr(p) DisposePtr(p)
  810. #define DisposHandle(h) DisposeHandle(h)
  811. #define ReallocHandle(h, byteCount) ReallocateHandle(h, byteCount)
  812. #endif  /* OLDROUTINENAMES */
  813.  
  814.  
  815. #if PRAGMA_STRUCT_ALIGN
  816.     #pragma options align=reset
  817. #elif PRAGMA_STRUCT_PACKPUSH
  818.     #pragma pack(pop)
  819. #elif PRAGMA_STRUCT_PACK
  820.     #pragma pack()
  821. #endif
  822.  
  823. #ifdef PRAGMA_IMPORT_OFF
  824. #pragma import off
  825. #elif PRAGMA_IMPORT
  826. #pragma import reset
  827. #endif
  828.  
  829. #ifdef __cplusplus
  830. }
  831. #endif
  832.  
  833. #endif /* __MACMEMORY__ */
  834.  
  835.