mirror of
https://github.com/elliotnunn/sys7.1-doc-wip.git
synced 2024-12-12 04:29:09 +00:00
154 lines
3.6 KiB
C
154 lines
3.6 KiB
C
/*
|
|
File: FigmentMemory.h
|
|
|
|
Contains: interfaces for Figment Manager
|
|
|
|
Written by: QuickTime
|
|
|
|
Copyright: © 1993 by Apple Computer, Inc., all rights reserved.
|
|
|
|
Change History (most recent first):
|
|
|
|
<1> 6/13/93 JDR first checked in
|
|
|
|
*/
|
|
|
|
#ifndef __FIGMENTMemory__
|
|
#define __FIGMENTMemory__
|
|
|
|
#include <Errors.h>
|
|
#include <Memory.h>
|
|
#include <Processes.h>
|
|
#include <ToolUtils.h>
|
|
|
|
#ifdef WARHOL_NOSEGS
|
|
// implies 68000
|
|
#define CallQTMem(selector,needsA1) {0x303c,selector,0xa0a4+needsA1}
|
|
#pragma processor 68000
|
|
#else
|
|
#define CallQTMem(selector,needsA1) {0x7000+selector,0xa0a4+needsA1}
|
|
#endif
|
|
|
|
|
|
typedef pascal void (*TrashProcPtr)(Ptr startAddr, Ptr endAddr);
|
|
|
|
typedef struct {
|
|
TrashProcPtr proc;
|
|
Boolean alwaysNotify;
|
|
Boolean pad;
|
|
unsigned short count;
|
|
short priority;
|
|
}TrashMemoryRecord, *TrashMemoryPtr, **TrashMemoryList;
|
|
|
|
typedef struct {
|
|
Handle h;
|
|
short priority;
|
|
TrashProcPtr proc;
|
|
} RegisterProcParams;
|
|
|
|
|
|
//
|
|
// Useful fast versions of existing Memory Manager calls
|
|
//
|
|
#pragma parameter HLockQ(__A0)
|
|
pascal void HLockQ(Handle h) =
|
|
{0x7000,0xa0a4};
|
|
|
|
#pragma parameter HUnlockQ(__A0)
|
|
pascal void HUnlockQ(Handle h) =
|
|
{0x7001,0xa0a4};
|
|
|
|
#pragma parameter HPurgeQ(__A0)
|
|
pascal void HPurgeQ(Handle h) =
|
|
{0x7002,0xa0a4};
|
|
|
|
#pragma parameter HNoPurgeQ(__A0)
|
|
pascal void HNoPurgeQ(Handle h) =
|
|
{0x7003,0xa0a4};
|
|
|
|
#pragma parameter __D0 HGetStateQ(__A0)
|
|
pascal SignedByte HGetStateQ(Handle h) =
|
|
{0x7004,0xa0a4};
|
|
|
|
#pragma parameter HSetStateQ(__A0, __D0)
|
|
pascal void HSetStateQ(Handle h, SignedByte flags) =
|
|
{0x3240, 0x7005, 0xa0a4};
|
|
|
|
|
|
//
|
|
// strange and wonderful new calls for dealing with flying heaps
|
|
//
|
|
|
|
#ifndef THINK_C
|
|
#pragma parameter __D0 RegisterHandleTrashNotification
|
|
pascal OSErr RegisterHandleTrashNotification(TrashProcPtr tp, short priority, Handle h) =
|
|
{0x204f, 0x7006, 0xa0a4, 0x4fef, 10};
|
|
#pragma parameter __D0 RegisterPtrTrashNotification
|
|
pascal OSErr RegisterPtrTrashNotification(TrashProcPtr tp, short priority, Ptr p) =
|
|
{0x204f, 0x7007, 0xa0a4, 0x4fef, 10};
|
|
|
|
#pragma parameter __D0 UnregisterHandleTrashNotification(__A0,__A1)
|
|
pascal OSErr UnregisterHandleTrashNotification(TrashProcPtr tp, Handle h) =
|
|
CallQTMem(8,0);
|
|
#pragma parameter __D0 UnregisterPtrTrashNotification(__A0,__A1)
|
|
pascal OSErr UnregisterPtrTrashNotification(TrashProcPtr tp, Ptr p) =
|
|
CallQTMem(9,0);
|
|
#endif THINK_C
|
|
|
|
#pragma parameter TrashZone(__A0)
|
|
pascal void TrashZone(THz zone) =
|
|
CallQTMem(10,0);
|
|
|
|
//
|
|
// stuff not intended for public consumption in any way
|
|
//
|
|
#pragma parameter TrashMemoryArea(__A0, __A1)
|
|
pascal void TrashMemoryArea(Ptr startAddr, Ptr endAddr) =
|
|
CallQTMem(11,0);
|
|
pascal void TrashCurrentProcess(void) =
|
|
#ifdef WARHOL_NOSEGS
|
|
{0x4288, 0x700c, 0xa0a4};
|
|
#else
|
|
{0x4288, 0x303c,12, 0xa0a4};
|
|
#endif
|
|
|
|
#pragma parameter TrashProcess(__A0)
|
|
pascal void TrashProcess(const ProcessSerialNumber *psn) =
|
|
CallQTMem(12,0);
|
|
|
|
#pragma parameter SetTrashMemoryList(__A0)
|
|
pascal void SetTrashMemoryList(void *) =
|
|
CallQTMem(16,0);
|
|
#pragma parameter __A0 GetTrashMemoryList
|
|
pascal TrashMemoryList GetTrashMemoryList(void) =
|
|
CallQTMem(17,0x0100);
|
|
//
|
|
// random numbers to keep things from disappearing too early.
|
|
// smaller numbers go away earlier.
|
|
//
|
|
enum {
|
|
kQTSegLoadPriority = 4000,
|
|
kComponentManagerPriority = 3000,
|
|
kICMPriority = 2000,
|
|
kMovieToolboxPriority = 1000
|
|
};
|
|
|
|
|
|
//
|
|
// some cool routines for keeping the system heap happy
|
|
//
|
|
#pragma parameter __D0 EnoughSystemHeapSlop
|
|
pascal Boolean EnoughSystemHeapSlop(void) =
|
|
CallQTMem(14,0);
|
|
|
|
#pragma parameter __A0 NewHandleSystemSafe(__A0)
|
|
pascal Handle NewHandleSystemSafe(Size handleSize) =
|
|
CallQTMem(13,0x0100);
|
|
|
|
#pragma parameter __A0 NewPtrSystemSafe(__A0)
|
|
pascal Ptr NewPtrSystemSafe(Size ptrSize) =
|
|
CallQTMem(15,0x0100);
|
|
|
|
#endif __FIGMENTMemory__
|
|
|