You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
776 lines
20 KiB
776 lines
20 KiB
5 years ago
|
/*
|
||
|
File: OSUtils.h
|
||
|
|
||
|
Contains: OS Utilities Interfaces.
|
||
|
|
||
|
Version: QuickTime 7.3
|
||
|
|
||
|
Copyright: (c) 2007 (c) 1985-2001 by Apple Computer, Inc., all rights reserved
|
||
|
|
||
|
Bugs?: For bug reports, consult the following page on
|
||
|
the World Wide Web:
|
||
|
|
||
|
http://developer.apple.com/bugreporter/
|
||
|
|
||
|
*/
|
||
|
#ifndef __OSUTILS__
|
||
|
#define __OSUTILS__
|
||
|
|
||
|
#ifndef __MACTYPES__
|
||
|
#include <MacTypes.h>
|
||
|
#endif
|
||
|
|
||
|
#ifndef __MIXEDMODE__
|
||
|
#include <MixedMode.h>
|
||
|
#endif
|
||
|
|
||
|
/* HandToHand and other memory utilties were moved to MacMemory.h */
|
||
|
#ifndef __MACMEMORY__
|
||
|
#include <MacMemory.h>
|
||
|
#endif
|
||
|
|
||
|
/* GetTrapAddress and other trap table utilties were moved to Patches.h */
|
||
|
#ifndef __PATCHES__
|
||
|
#include <Patches.h>
|
||
|
#endif
|
||
|
|
||
|
/* Date and Time utilties were moved to DateTimeUtils.h */
|
||
|
#ifndef __DATETIMEUTILS__
|
||
|
#include <DateTimeUtils.h>
|
||
|
#endif
|
||
|
|
||
|
#ifndef __CFSTRING__
|
||
|
#include <CFString.h>
|
||
|
#endif
|
||
|
|
||
|
#if !TARGET_OS_MAC
|
||
|
#ifndef __ENDIAN__
|
||
|
#include <Endian.h>
|
||
|
#endif
|
||
|
|
||
|
#endif /* !TARGET_OS_MAC */
|
||
|
|
||
|
|
||
|
|
||
|
#if PRAGMA_ONCE
|
||
|
#pragma once
|
||
|
#endif
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
extern "C" {
|
||
|
#endif
|
||
|
|
||
|
#if PRAGMA_IMPORT
|
||
|
#pragma import on
|
||
|
#endif
|
||
|
|
||
|
#if PRAGMA_STRUCT_ALIGN
|
||
|
#pragma options align=mac68k
|
||
|
#elif PRAGMA_STRUCT_PACKPUSH
|
||
|
#pragma pack(push, 2)
|
||
|
#elif PRAGMA_STRUCT_PACK
|
||
|
#pragma pack(2)
|
||
|
#endif
|
||
|
|
||
|
enum {
|
||
|
useFree = 0,
|
||
|
useATalk = 1,
|
||
|
useAsync = 2,
|
||
|
useExtClk = 3, /*Externally clocked*/
|
||
|
useMIDI = 4
|
||
|
};
|
||
|
|
||
|
enum {
|
||
|
false32b = 0, /*24 bit addressing error*/
|
||
|
true32b = 1 /*32 bit addressing error*/
|
||
|
};
|
||
|
|
||
|
enum {
|
||
|
/* result types for RelString Call */
|
||
|
sortsBefore = -1, /*first string < second string*/
|
||
|
sortsEqual = 0, /*first string = second string*/
|
||
|
sortsAfter = 1 /*first string > second string*/
|
||
|
};
|
||
|
|
||
|
enum {
|
||
|
dummyType = 0,
|
||
|
vType = 1,
|
||
|
ioQType = 2,
|
||
|
drvQType = 3,
|
||
|
evType = 4,
|
||
|
fsQType = 5,
|
||
|
sIQType = 6,
|
||
|
dtQType = 7,
|
||
|
nmType = 8
|
||
|
};
|
||
|
|
||
|
typedef SignedByte QTypes;
|
||
|
struct SysParmType {
|
||
|
UInt8 valid;
|
||
|
UInt8 aTalkA;
|
||
|
UInt8 aTalkB;
|
||
|
UInt8 config;
|
||
|
short portA;
|
||
|
short portB;
|
||
|
long alarm;
|
||
|
short font;
|
||
|
short kbdPrint;
|
||
|
short volClik;
|
||
|
short misc;
|
||
|
};
|
||
|
typedef struct SysParmType SysParmType;
|
||
|
typedef SysParmType * SysPPtr;
|
||
|
struct QElem {
|
||
|
struct QElem * qLink;
|
||
|
short qType;
|
||
|
short qData[1];
|
||
|
};
|
||
|
typedef struct QElem QElem;
|
||
|
typedef QElem * QElemPtr;
|
||
|
#if TARGET_OS_MAC
|
||
|
struct QHdr {
|
||
|
volatile short qFlags;
|
||
|
volatile QElemPtr qHead;
|
||
|
volatile QElemPtr qTail;
|
||
|
};
|
||
|
typedef struct QHdr QHdr;
|
||
|
typedef QHdr * QHdrPtr;
|
||
|
#else
|
||
|
/*
|
||
|
QuickTime 3.0
|
||
|
this version of QHdr contains the Mutex necessary for
|
||
|
non-mac non-interrupt code
|
||
|
*/
|
||
|
struct QHdr {
|
||
|
volatile short qFlags;
|
||
|
short pad;
|
||
|
long MutexID;
|
||
|
volatile QElemPtr qHead;
|
||
|
volatile QElemPtr qTail;
|
||
|
};
|
||
|
typedef struct QHdr QHdr;
|
||
|
typedef QHdr * QHdrPtr;
|
||
|
#endif /* TARGET_OS_MAC */
|
||
|
|
||
|
typedef CALLBACK_API_REGISTER68K( void , DeferredTaskProcPtr, (long dtParam) );
|
||
|
typedef REGISTER_UPP_TYPE(DeferredTaskProcPtr) DeferredTaskUPP;
|
||
|
/*
|
||
|
* NewDeferredTaskUPP()
|
||
|
*
|
||
|
* Availability:
|
||
|
* Non-Carbon CFM: available as macro/inline
|
||
|
* CarbonLib: in CarbonLib 1.0 and later
|
||
|
* Mac OS X: in version 10.0 and later
|
||
|
*/
|
||
|
EXTERN_API_C( DeferredTaskUPP )
|
||
|
NewDeferredTaskUPP(DeferredTaskProcPtr userRoutine);
|
||
|
#if !OPAQUE_UPP_TYPES
|
||
|
enum { uppDeferredTaskProcInfo = 0x0000B802 }; /* register no_return_value Func(4_bytes:A1) */
|
||
|
#ifdef __cplusplus
|
||
|
inline DEFINE_API_C(DeferredTaskUPP) NewDeferredTaskUPP(DeferredTaskProcPtr userRoutine) { return (DeferredTaskUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppDeferredTaskProcInfo, GetCurrentArchitecture()); }
|
||
|
#else
|
||
|
#define NewDeferredTaskUPP(userRoutine) (DeferredTaskUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppDeferredTaskProcInfo, GetCurrentArchitecture())
|
||
|
#endif
|
||
|
#endif
|
||
|
|
||
|
/*
|
||
|
* DisposeDeferredTaskUPP()
|
||
|
*
|
||
|
* Availability:
|
||
|
* Non-Carbon CFM: available as macro/inline
|
||
|
* CarbonLib: in CarbonLib 1.0 and later
|
||
|
* Mac OS X: in version 10.0 and later
|
||
|
*/
|
||
|
EXTERN_API_C( void )
|
||
|
DisposeDeferredTaskUPP(DeferredTaskUPP userUPP);
|
||
|
#if !OPAQUE_UPP_TYPES
|
||
|
#ifdef __cplusplus
|
||
|
inline DEFINE_API_C(void) DisposeDeferredTaskUPP(DeferredTaskUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); }
|
||
|
#else
|
||
|
#define DisposeDeferredTaskUPP(userUPP) DisposeRoutineDescriptor(userUPP)
|
||
|
#endif
|
||
|
#endif
|
||
|
|
||
|
/*
|
||
|
* InvokeDeferredTaskUPP()
|
||
|
*
|
||
|
* Availability:
|
||
|
* Non-Carbon CFM: available as macro/inline
|
||
|
* CarbonLib: in CarbonLib 1.0 and later
|
||
|
* Mac OS X: in version 10.0 and later
|
||
|
*/
|
||
|
#if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
|
||
|
#pragma parameter InvokeDeferredTaskUPP(__A1, __A0)
|
||
|
#endif
|
||
|
EXTERN_API_C( void )
|
||
|
InvokeDeferredTaskUPP(
|
||
|
long dtParam,
|
||
|
DeferredTaskUPP userUPP) ONEWORDINLINE(0x4E90);
|
||
|
#if !OPAQUE_UPP_TYPES && (!TARGET_OS_MAC || !TARGET_CPU_68K || TARGET_RT_MAC_CFM)
|
||
|
#ifdef __cplusplus
|
||
|
inline DEFINE_API_C(void) InvokeDeferredTaskUPP(long dtParam, DeferredTaskUPP userUPP) { CALL_ONE_PARAMETER_UPP(userUPP, uppDeferredTaskProcInfo, dtParam); }
|
||
|
#else
|
||
|
#define InvokeDeferredTaskUPP(dtParam, userUPP) CALL_ONE_PARAMETER_UPP((userUPP), uppDeferredTaskProcInfo, (dtParam))
|
||
|
#endif
|
||
|
#endif
|
||
|
|
||
|
#if CALL_NOT_IN_CARBON || OLDROUTINENAMES
|
||
|
/* support for pre-Carbon UPP routines: New...Proc and Call...Proc */
|
||
|
#define NewDeferredTaskProc(userRoutine) NewDeferredTaskUPP(userRoutine)
|
||
|
#define CallDeferredTaskProc(userRoutine, dtParam) InvokeDeferredTaskUPP(dtParam, userRoutine)
|
||
|
#endif /* CALL_NOT_IN_CARBON */
|
||
|
|
||
|
struct DeferredTask {
|
||
|
volatile QElemPtr qLink;
|
||
|
short qType;
|
||
|
volatile short dtFlags;
|
||
|
DeferredTaskUPP dtAddr;
|
||
|
long dtParam;
|
||
|
long dtReserved;
|
||
|
};
|
||
|
typedef struct DeferredTask DeferredTask;
|
||
|
typedef DeferredTask * DeferredTaskPtr;
|
||
|
/*
|
||
|
In order for MachineLocation to be endian-safe, a new member
|
||
|
has been added to the 'u' union in the structure. You are
|
||
|
encouraged to use the new member instead of the old one.
|
||
|
|
||
|
If your code looked like this:
|
||
|
|
||
|
MachineLocation.u.dlsDelta = 1;
|
||
|
|
||
|
you should change it to this:
|
||
|
|
||
|
MachineLocation.u.dls.Delta = 1;
|
||
|
|
||
|
to be endian safe. The gmtDelta remains the same; the low 24-bits
|
||
|
are used. Remember that order of assignment DOES matter:
|
||
|
|
||
|
This will overwrite results:
|
||
|
|
||
|
MachineLocation.u.dls.Delta = 0xAA; // u = 0xAAGGGGGG; G=Garbage
|
||
|
MachineLocation.u.gmtDelta = 0xBBBBBB; // u = 0x00BBBBBB;
|
||
|
|
||
|
when in fact reversing the assignment would have preserved the values:
|
||
|
|
||
|
MachineLocation.u.gmtDelta = 0xBBBBBB; // u = 0x00BBBBBB;
|
||
|
MachineLocation.u.dls.Delta = 0xAA; // u = 0xAABBBBBB;
|
||
|
*/
|
||
|
#if TARGET_OS_MAC
|
||
|
struct MachineLocation {
|
||
|
Fract latitude;
|
||
|
Fract longitude;
|
||
|
union {
|
||
|
#if TARGET_RT_BIG_ENDIAN
|
||
|
SInt8 dlsDelta;
|
||
|
#endif
|
||
|
long gmtDelta; /* use low 24-bits only */
|
||
|
struct {
|
||
|
#if TARGET_RT_LITTLE_ENDIAN
|
||
|
SInt8 pad[3];
|
||
|
#endif
|
||
|
SInt8 Delta; /* signed byte; daylight savings delta */
|
||
|
} dls;
|
||
|
} u;
|
||
|
};
|
||
|
typedef struct MachineLocation MachineLocation;
|
||
|
#else
|
||
|
/*
|
||
|
QuickTime 3.0:
|
||
|
Alignment of MachineLocation is weird. The union above used for delta
|
||
|
tends not to work on non-Mac compilers.
|
||
|
*/
|
||
|
struct MachineLocation {
|
||
|
Fract latitude;
|
||
|
Fract longitude;
|
||
|
BigEndianLong delta; /* high byte is daylight savings delta, low 24-bits is GMT delta */
|
||
|
};
|
||
|
typedef struct MachineLocation MachineLocation;
|
||
|
#endif /* TARGET_OS_MAC */
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
/*
|
||
|
* IsMetric()
|
||
|
*
|
||
|
* Availability:
|
||
|
* Non-Carbon CFM: in InterfaceLib 7.1 and later
|
||
|
* CarbonLib: in CarbonLib 1.0 and later
|
||
|
* Mac OS X: in version 10.0 and later
|
||
|
*/
|
||
|
EXTERN_API( Boolean )
|
||
|
IsMetric(void) THREEWORDINLINE(0x3F3C, 0x0004, 0xA9ED);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* GetSysPPtr()
|
||
|
*
|
||
|
* Availability:
|
||
|
* Non-Carbon CFM: in InterfaceLib 7.1 and later
|
||
|
* CarbonLib: in CarbonLib 1.0 and later
|
||
|
* Mac OS X: in version 10.0 and later
|
||
|
*/
|
||
|
EXTERN_API( SysPPtr )
|
||
|
GetSysPPtr(void) THREEWORDINLINE(0x2EBC, 0x0000, 0x01F8);
|
||
|
|
||
|
|
||
|
|
||
|
/*
|
||
|
NOTE: SysBeep() has been moved to Sound.h.
|
||
|
We could not automatically #include Sound.h in this file
|
||
|
because Sound.h indirectly #include's OSUtils.h which
|
||
|
would make a circular include.
|
||
|
*/
|
||
|
/*
|
||
|
* DTInstall()
|
||
|
*
|
||
|
* Availability:
|
||
|
* Non-Carbon CFM: in InterfaceLib 7.1 and later
|
||
|
* CarbonLib: in CarbonLib 1.0 and later
|
||
|
* Mac OS X: in version 10.0 and later
|
||
|
*/
|
||
|
#if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
|
||
|
#pragma parameter __D0 DTInstall(__A0)
|
||
|
#endif
|
||
|
EXTERN_API( OSErr )
|
||
|
DTInstall(DeferredTaskPtr dtTaskPtr) ONEWORDINLINE(0xA082);
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
#if TARGET_CPU_PPC || !TARGET_OS_MAC
|
||
|
#define GetMMUMode() ((SInt8)true32b)
|
||
|
#define SwapMMUMode(x) (*(SInt8*)(x) = true32b)
|
||
|
#else
|
||
|
#if CALL_NOT_IN_CARBON
|
||
|
/*
|
||
|
* GetMMUMode()
|
||
|
*
|
||
|
* Availability:
|
||
|
* Non-Carbon CFM: not available
|
||
|
* CarbonLib: not available
|
||
|
* Mac OS X: not available
|
||
|
*/
|
||
|
EXTERN_API( SInt8 )
|
||
|
GetMMUMode(void) TWOWORDINLINE(0x1EB8, 0x0CB2);
|
||
|
|
||
|
|
||
|
#endif /* CALL_NOT_IN_CARBON */
|
||
|
|
||
|
#if CALL_NOT_IN_CARBON
|
||
|
/*
|
||
|
* SwapMMUMode()
|
||
|
*
|
||
|
* Availability:
|
||
|
* Non-Carbon CFM: not available
|
||
|
* CarbonLib: not available
|
||
|
* Mac OS X: not available
|
||
|
*/
|
||
|
#if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
|
||
|
#pragma parameter SwapMMUMode(__A0)
|
||
|
#endif
|
||
|
EXTERN_API( void )
|
||
|
SwapMMUMode(SInt8 * mode) THREEWORDINLINE(0x1010, 0xA05D, 0x1080);
|
||
|
|
||
|
|
||
|
#endif /* CALL_NOT_IN_CARBON */
|
||
|
|
||
|
#endif
|
||
|
/*
|
||
|
* Delay()
|
||
|
*
|
||
|
* Availability:
|
||
|
* Non-Carbon CFM: in InterfaceLib 7.1 and later
|
||
|
* CarbonLib: in CarbonLib 1.0 and later
|
||
|
* Mac OS X: in version 10.0 and later
|
||
|
*/
|
||
|
#if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
|
||
|
#pragma parameter Delay(__A0, __A1)
|
||
|
#endif
|
||
|
EXTERN_API( void )
|
||
|
Delay(
|
||
|
unsigned long numTicks,
|
||
|
unsigned long * finalTicks) TWOWORDINLINE(0xA03B, 0x2280);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* WriteParam()
|
||
|
*
|
||
|
* Availability:
|
||
|
* Non-Carbon CFM: in InterfaceLib 7.1 and later
|
||
|
* CarbonLib: in CarbonLib 1.0 and later
|
||
|
* Mac OS X: in version 10.0 and later
|
||
|
*/
|
||
|
EXTERN_API( OSErr )
|
||
|
WriteParam(void);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* Enqueue()
|
||
|
*
|
||
|
* Availability:
|
||
|
* Non-Carbon CFM: in InterfaceLib 7.1 and later
|
||
|
* CarbonLib: in CarbonLib 1.0 and later
|
||
|
* Mac OS X: in version 10.0 and later
|
||
|
*/
|
||
|
#if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
|
||
|
#pragma parameter Enqueue(__A0, __A1)
|
||
|
#endif
|
||
|
EXTERN_API( void )
|
||
|
Enqueue(
|
||
|
QElemPtr qElement,
|
||
|
QHdrPtr qHeader) ONEWORDINLINE(0xA96F);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* Dequeue()
|
||
|
*
|
||
|
* Availability:
|
||
|
* Non-Carbon CFM: in InterfaceLib 7.1 and later
|
||
|
* CarbonLib: in CarbonLib 1.0 and later
|
||
|
* Mac OS X: in version 10.0 and later
|
||
|
*/
|
||
|
#if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
|
||
|
#pragma parameter __D0 Dequeue(__A0, __A1)
|
||
|
#endif
|
||
|
EXTERN_API( OSErr )
|
||
|
Dequeue(
|
||
|
QElemPtr qElement,
|
||
|
QHdrPtr qHeader) ONEWORDINLINE(0xA96E);
|
||
|
|
||
|
|
||
|
|
||
|
/*
|
||
|
* SetCurrentA5()
|
||
|
*
|
||
|
* Availability:
|
||
|
* Non-Carbon CFM: in InterfaceLib 7.1 and later
|
||
|
* CarbonLib: in CarbonLib 1.0 and later
|
||
|
* Mac OS X: in version 10.0 and later
|
||
|
*/
|
||
|
#if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
|
||
|
#pragma parameter __D0 SetCurrentA5
|
||
|
#endif
|
||
|
EXTERN_API( long )
|
||
|
SetCurrentA5(void) THREEWORDINLINE(0x200D, 0x2A78, 0x0904);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* SetA5()
|
||
|
*
|
||
|
* Availability:
|
||
|
* Non-Carbon CFM: in InterfaceLib 7.1 and later
|
||
|
* CarbonLib: in CarbonLib 1.0 and later
|
||
|
* Mac OS X: in version 10.0 and later
|
||
|
*/
|
||
|
#if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
|
||
|
#pragma parameter __D0 SetA5(__D0)
|
||
|
#endif
|
||
|
EXTERN_API( long )
|
||
|
SetA5(long newA5) ONEWORDINLINE(0xC18D);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* InitUtil()
|
||
|
*
|
||
|
* Availability:
|
||
|
* Non-Carbon CFM: in InterfaceLib 7.1 and later
|
||
|
* CarbonLib: in CarbonLib 1.0 and later
|
||
|
* Mac OS X: in version 10.0 and later
|
||
|
*/
|
||
|
#if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
|
||
|
#pragma parameter __D0 InitUtil
|
||
|
#endif
|
||
|
EXTERN_API( OSErr )
|
||
|
InitUtil(void) ONEWORDINLINE(0xA03F);
|
||
|
|
||
|
|
||
|
|
||
|
#if !TARGET_CPU_68K
|
||
|
/*
|
||
|
* MakeDataExecutable()
|
||
|
*
|
||
|
* Availability:
|
||
|
* Non-Carbon CFM: in InterfaceLib 7.5 and later
|
||
|
* CarbonLib: in CarbonLib 1.0 and later
|
||
|
* Mac OS X: in version 10.0 and later
|
||
|
*/
|
||
|
EXTERN_API( void )
|
||
|
MakeDataExecutable(
|
||
|
void * baseAddress,
|
||
|
unsigned long length);
|
||
|
|
||
|
|
||
|
#endif /* !TARGET_CPU_68K */
|
||
|
|
||
|
|
||
|
#if TARGET_CPU_68K
|
||
|
#if CALL_NOT_IN_CARBON
|
||
|
/*
|
||
|
* SwapInstructionCache()
|
||
|
*
|
||
|
* Availability:
|
||
|
* Non-Carbon CFM: not available
|
||
|
* CarbonLib: not available
|
||
|
* Mac OS X: not available
|
||
|
*/
|
||
|
EXTERN_API( Boolean )
|
||
|
SwapInstructionCache(Boolean cacheEnable);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* SwapDataCache()
|
||
|
*
|
||
|
* Availability:
|
||
|
* Non-Carbon CFM: not available
|
||
|
* CarbonLib: not available
|
||
|
* Mac OS X: not available
|
||
|
*/
|
||
|
EXTERN_API( Boolean )
|
||
|
SwapDataCache(Boolean cacheEnable);
|
||
|
|
||
|
|
||
|
#endif /* CALL_NOT_IN_CARBON */
|
||
|
|
||
|
#if CALL_NOT_IN_CARBON
|
||
|
/*
|
||
|
* FlushInstructionCache()
|
||
|
*
|
||
|
* Availability:
|
||
|
* Non-Carbon CFM: not available
|
||
|
* CarbonLib: not available
|
||
|
* Mac OS X: not available
|
||
|
*/
|
||
|
EXTERN_API( void )
|
||
|
FlushInstructionCache(void) TWOWORDINLINE(0x7001, 0xA098);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* FlushDataCache()
|
||
|
*
|
||
|
* Availability:
|
||
|
* Non-Carbon CFM: not available
|
||
|
* CarbonLib: not available
|
||
|
* Mac OS X: not available
|
||
|
*/
|
||
|
EXTERN_API( void )
|
||
|
FlushDataCache(void) TWOWORDINLINE(0x7003, 0xA098);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* FlushCodeCache()
|
||
|
*
|
||
|
* Availability:
|
||
|
* Non-Carbon CFM: not available
|
||
|
* CarbonLib: not available
|
||
|
* Mac OS X: not available
|
||
|
*/
|
||
|
EXTERN_API( void )
|
||
|
FlushCodeCache(void) ONEWORDINLINE(0xA0BD);
|
||
|
|
||
|
|
||
|
#endif /* CALL_NOT_IN_CARBON */
|
||
|
|
||
|
#endif /* TARGET_CPU_68K */
|
||
|
|
||
|
#if CALL_NOT_IN_CARBON
|
||
|
/*
|
||
|
* FlushCodeCacheRange()
|
||
|
*
|
||
|
* Availability:
|
||
|
* Non-Carbon CFM: in InterfaceLib 8.5 and later
|
||
|
* CarbonLib: not available
|
||
|
* Mac OS X: not available
|
||
|
*/
|
||
|
#if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
|
||
|
#pragma parameter __D0 FlushCodeCacheRange(__A0, __A1)
|
||
|
#endif
|
||
|
EXTERN_API( OSErr )
|
||
|
FlushCodeCacheRange(
|
||
|
void * address,
|
||
|
unsigned long count) TWOWORDINLINE(0x7009, 0xA098);
|
||
|
|
||
|
|
||
|
#endif /* CALL_NOT_IN_CARBON */
|
||
|
|
||
|
/*
|
||
|
* ReadLocation()
|
||
|
*
|
||
|
* Availability:
|
||
|
* Non-Carbon CFM: in InterfaceLib 7.1 and later
|
||
|
* CarbonLib: in CarbonLib 1.0 and later
|
||
|
* Mac OS X: in version 10.0 and later
|
||
|
*/
|
||
|
#if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
|
||
|
#pragma parameter ReadLocation(__A0)
|
||
|
#endif
|
||
|
EXTERN_API( void )
|
||
|
ReadLocation(MachineLocation * loc) FOURWORDINLINE(0x203C, 0x000C, 0x00E4, 0xA051);
|
||
|
|
||
|
|
||
|
|
||
|
/*
|
||
|
* WriteLocation()
|
||
|
*
|
||
|
* Availability:
|
||
|
* Non-Carbon CFM: in InterfaceLib 7.1 and later
|
||
|
* CarbonLib: in CarbonLib 1.0 and later
|
||
|
* Mac OS X: in version 10.0 and later
|
||
|
*/
|
||
|
#if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
|
||
|
#pragma parameter WriteLocation(__A0)
|
||
|
#endif
|
||
|
EXTERN_API( void )
|
||
|
WriteLocation(const MachineLocation * loc) FOURWORDINLINE(0x203C, 0x000C, 0x00E4, 0xA052);
|
||
|
|
||
|
|
||
|
|
||
|
/*
|
||
|
* TickCount()
|
||
|
*
|
||
|
* Availability:
|
||
|
* Non-Carbon CFM: in InterfaceLib 7.1 and later
|
||
|
* CarbonLib: in CarbonLib 1.0 and later
|
||
|
* Mac OS X: in version 10.0 and later
|
||
|
*/
|
||
|
EXTERN_API( UInt32 )
|
||
|
TickCount(void) ONEWORDINLINE(0xA975);
|
||
|
|
||
|
|
||
|
|
||
|
/*
|
||
|
* CSCopyUserName()
|
||
|
*
|
||
|
* Availability:
|
||
|
* Non-Carbon CFM: not available
|
||
|
* CarbonLib: in CarbonLib 1.5 and later
|
||
|
* Mac OS X: in version 10.0 and later
|
||
|
*/
|
||
|
EXTERN_API_C( CFStringRef )
|
||
|
CSCopyUserName(Boolean useShortName);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* CSCopyMachineName()
|
||
|
*
|
||
|
* Availability:
|
||
|
* Non-Carbon CFM: not available
|
||
|
* CarbonLib: in CarbonLib 1.5 and later
|
||
|
* Mac OS X: in version 10.0 and later
|
||
|
*/
|
||
|
EXTERN_API_C( CFStringRef )
|
||
|
CSCopyMachineName(void);
|
||
|
|
||
|
|
||
|
|
||
|
#if OLDROUTINENAMES
|
||
|
#define IUMetric() IsMetric()
|
||
|
#endif /* OLDROUTINENAMES */
|
||
|
|
||
|
/*
|
||
|
NOTE: SysEnvirons is obsolete. You should be using Gestalt.
|
||
|
*/
|
||
|
/* Environs Equates */
|
||
|
enum {
|
||
|
curSysEnvVers = 2 /*Updated to equal latest SysEnvirons version*/
|
||
|
};
|
||
|
|
||
|
struct SysEnvRec {
|
||
|
short environsVersion;
|
||
|
short machineType;
|
||
|
short systemVersion;
|
||
|
short processor;
|
||
|
Boolean hasFPU;
|
||
|
Boolean hasColorQD;
|
||
|
short keyBoardType;
|
||
|
short atDrvrVersNum;
|
||
|
short sysVRefNum;
|
||
|
};
|
||
|
typedef struct SysEnvRec SysEnvRec;
|
||
|
enum {
|
||
|
/* Machine Types */
|
||
|
envMac = -1,
|
||
|
envXL = -2,
|
||
|
envMachUnknown = 0,
|
||
|
env512KE = 1,
|
||
|
envMacPlus = 2,
|
||
|
envSE = 3,
|
||
|
envMacII = 4,
|
||
|
envMacIIx = 5,
|
||
|
envMacIIcx = 6,
|
||
|
envSE30 = 7,
|
||
|
envPortable = 8,
|
||
|
envMacIIci = 9,
|
||
|
envMacIIfx = 11
|
||
|
};
|
||
|
|
||
|
enum {
|
||
|
/* CPU types */
|
||
|
envCPUUnknown = 0,
|
||
|
env68000 = 1,
|
||
|
env68010 = 2,
|
||
|
env68020 = 3,
|
||
|
env68030 = 4,
|
||
|
env68040 = 5
|
||
|
};
|
||
|
|
||
|
enum {
|
||
|
/* Keyboard types */
|
||
|
envUnknownKbd = 0,
|
||
|
envMacKbd = 1,
|
||
|
envMacAndPad = 2,
|
||
|
envMacPlusKbd = 3,
|
||
|
envAExtendKbd = 4,
|
||
|
envStandADBKbd = 5,
|
||
|
envPrtblADBKbd = 6,
|
||
|
envPrtblISOKbd = 7,
|
||
|
envStdISOADBKbd = 8,
|
||
|
envExtISOADBKbd = 9
|
||
|
};
|
||
|
|
||
|
#if CALL_NOT_IN_CARBON
|
||
|
/*
|
||
|
* SysEnvirons()
|
||
|
*
|
||
|
* Availability:
|
||
|
* Non-Carbon CFM: in InterfaceLib 7.1 and later
|
||
|
* CarbonLib: not available
|
||
|
* Mac OS X: not available
|
||
|
*/
|
||
|
#if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
|
||
|
#pragma parameter __D0 SysEnvirons(__D0, __A0)
|
||
|
#endif
|
||
|
EXTERN_API( OSErr )
|
||
|
SysEnvirons(
|
||
|
short versionRequested,
|
||
|
SysEnvRec * theWorld) ONEWORDINLINE(0xA090);
|
||
|
|
||
|
|
||
|
|
||
|
#endif /* CALL_NOT_IN_CARBON */
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
#if PRAGMA_STRUCT_ALIGN
|
||
|
#pragma options align=reset
|
||
|
#elif PRAGMA_STRUCT_PACKPUSH
|
||
|
#pragma pack(pop)
|
||
|
#elif PRAGMA_STRUCT_PACK
|
||
|
#pragma pack()
|
||
|
#endif
|
||
|
|
||
|
#ifdef PRAGMA_IMPORT_OFF
|
||
|
#pragma import off
|
||
|
#elif PRAGMA_IMPORT
|
||
|
#pragma import reset
|
||
|
#endif
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
}
|
||
|
#endif
|
||
|
|
||
|
#endif /* __OSUTILS__ */
|
||
|
|