{ File: DriverSynchronization.p Contains: Driver Synchronization Interfaces. Version: Technology: MacOS 8 Release: Universal Interfaces 3.4.2 Copyright: © 1985-2002 by Apple Computer, Inc., all rights reserved Bugs?: For bug reports, consult the following page on the World Wide Web: http://www.freepascal.org/bugs.html } { Modified for use with Free Pascal Version 200 Please report any bugs to } {$mode macpas} {$packenum 1} {$macro on} {$inline on} {$CALLING MWPASCAL} unit DriverSynchronization; interface {$setc UNIVERSAL_INTERFACES_VERSION := $0342} {$setc GAP_INTERFACES_VERSION := $0200} {$ifc not defined USE_CFSTR_CONSTANT_MACROS} {$setc USE_CFSTR_CONSTANT_MACROS := TRUE} {$endc} {$ifc defined CPUPOWERPC and defined CPUI386} {$error Conflicting initial definitions for CPUPOWERPC and CPUI386} {$endc} {$ifc defined FPC_BIG_ENDIAN and defined FPC_LITTLE_ENDIAN} {$error Conflicting initial definitions for FPC_BIG_ENDIAN and FPC_LITTLE_ENDIAN} {$endc} {$ifc not defined __ppc__ and defined CPUPOWERPC} {$setc __ppc__ := 1} {$elsec} {$setc __ppc__ := 0} {$endc} {$ifc not defined __i386__ and defined CPUI386} {$setc __i386__ := 1} {$elsec} {$setc __i386__ := 0} {$endc} {$ifc defined __ppc__ and __ppc__ and defined __i386__ and __i386__} {$error Conflicting definitions for __ppc__ and __i386__} {$endc} {$ifc defined __ppc__ and __ppc__} {$setc TARGET_CPU_PPC := TRUE} {$setc TARGET_CPU_X86 := FALSE} {$elifc defined __i386__ and __i386__} {$setc TARGET_CPU_PPC := FALSE} {$setc TARGET_CPU_X86 := TRUE} {$elsec} {$error Neither __ppc__ nor __i386__ is defined.} {$endc} {$setc TARGET_CPU_PPC_64 := FALSE} {$ifc defined FPC_BIG_ENDIAN} {$setc TARGET_RT_BIG_ENDIAN := TRUE} {$setc TARGET_RT_LITTLE_ENDIAN := FALSE} {$elifc defined FPC_LITTLE_ENDIAN} {$setc TARGET_RT_BIG_ENDIAN := FALSE} {$setc TARGET_RT_LITTLE_ENDIAN := TRUE} {$elsec} {$error Neither FPC_BIG_ENDIAN nor FPC_LITTLE_ENDIAN are defined.} {$endc} {$setc ACCESSOR_CALLS_ARE_FUNCTIONS := TRUE} {$setc CALL_NOT_IN_CARBON := FALSE} {$setc OLDROUTINENAMES := FALSE} {$setc OPAQUE_TOOLBOX_STRUCTS := TRUE} {$setc OPAQUE_UPP_TYPES := TRUE} {$setc OTCARBONAPPLICATION := TRUE} {$setc OTKERNEL := FALSE} {$setc PM_USE_SESSION_APIS := TRUE} {$setc TARGET_API_MAC_CARBON := TRUE} {$setc TARGET_API_MAC_OS8 := FALSE} {$setc TARGET_API_MAC_OSX := TRUE} {$setc TARGET_CARBON := TRUE} {$setc TARGET_CPU_68K := FALSE} {$setc TARGET_CPU_MIPS := FALSE} {$setc TARGET_CPU_SPARC := FALSE} {$setc TARGET_OS_MAC := TRUE} {$setc TARGET_OS_UNIX := FALSE} {$setc TARGET_OS_WIN32 := FALSE} {$setc TARGET_RT_MAC_68881 := FALSE} {$setc TARGET_RT_MAC_CFM := FALSE} {$setc TARGET_RT_MAC_MACHO := TRUE} {$setc TYPED_FUNCTION_POINTERS := TRUE} {$setc TYPE_BOOL := FALSE} {$setc TYPE_EXTENDED := FALSE} {$setc TYPE_LONGLONG := TRUE} uses MacTypes,ConditionalMacros; {$ALIGN MAC68K} {$ifc CALL_NOT_IN_CARBON} { * SynchronizeIO() * * Availability: * Non-Carbon CFM: in DriverServicesLib 1.0 and later * CarbonLib: not available * Mac OS X: not available } procedure SynchronizeIO; external name '_SynchronizeIO'; {$endc} {CALL_NOT_IN_CARBON} { * CompareAndSwap() * * Availability: * Non-Carbon CFM: in InterfaceLib 8.5 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later } function CompareAndSwap(oldVvalue: UInt32; newValue: UInt32; var OldValueAdr: UInt32): boolean; external name '_CompareAndSwap'; { * TestAndClear() * * Availability: * Non-Carbon CFM: in InterfaceLib 8.5 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later } function TestAndClear(bit: UInt32; startAddress: UnivPtr): boolean; external name '_TestAndClear'; { * TestAndSet() * * Availability: * Non-Carbon CFM: in InterfaceLib 8.5 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later } function TestAndSet(bit: UInt32; startAddress: UnivPtr): boolean; external name '_TestAndSet'; { * IncrementAtomic8() * * Availability: * Non-Carbon CFM: in InterfaceLib 8.5 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later } function IncrementAtomic8(var value: SInt8): SInt8; external name '_IncrementAtomic8'; { * DecrementAtomic8() * * Availability: * Non-Carbon CFM: in InterfaceLib 8.5 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later } function DecrementAtomic8(var value: SInt8): SInt8; external name '_DecrementAtomic8'; { * AddAtomic8() * * Availability: * Non-Carbon CFM: in InterfaceLib 8.5 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later } function AddAtomic8(amount: SInt32; var value: SInt8): SInt8; external name '_AddAtomic8'; { * BitAndAtomic8() * * Availability: * Non-Carbon CFM: in InterfaceLib 8.5 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later } function BitAndAtomic8(mask: UInt32; var value: UInt8): ByteParameter; external name '_BitAndAtomic8'; { * BitOrAtomic8() * * Availability: * Non-Carbon CFM: in InterfaceLib 8.5 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later } function BitOrAtomic8(mask: UInt32; var value: UInt8): ByteParameter; external name '_BitOrAtomic8'; { * BitXorAtomic8() * * Availability: * Non-Carbon CFM: in InterfaceLib 8.5 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later } function BitXorAtomic8(mask: UInt32; var value: UInt8): ByteParameter; external name '_BitXorAtomic8'; { * IncrementAtomic16() * * Availability: * Non-Carbon CFM: in InterfaceLib 8.5 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later } function IncrementAtomic16(var value: SInt16): SInt16; external name '_IncrementAtomic16'; { * DecrementAtomic16() * * Availability: * Non-Carbon CFM: in InterfaceLib 8.5 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later } function DecrementAtomic16(var value: SInt16): SInt16; external name '_DecrementAtomic16'; { * AddAtomic16() * * Availability: * Non-Carbon CFM: in InterfaceLib 8.5 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later } function AddAtomic16(amount: SInt32; var value: SInt16): SInt16; external name '_AddAtomic16'; { * BitAndAtomic16() * * Availability: * Non-Carbon CFM: in InterfaceLib 8.5 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later } function BitAndAtomic16(mask: UInt32; var value: UInt16): UInt16; external name '_BitAndAtomic16'; { * BitOrAtomic16() * * Availability: * Non-Carbon CFM: in InterfaceLib 8.5 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later } function BitOrAtomic16(mask: UInt32; var value: UInt16): UInt16; external name '_BitOrAtomic16'; { * BitXorAtomic16() * * Availability: * Non-Carbon CFM: in InterfaceLib 8.5 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later } function BitXorAtomic16(mask: UInt32; var value: UInt16): UInt16; external name '_BitXorAtomic16'; { * IncrementAtomic() * * Availability: * Non-Carbon CFM: in InterfaceLib 8.5 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later } function IncrementAtomic(var value: SInt32): SInt32; external name '_IncrementAtomic'; { * DecrementAtomic() * * Availability: * Non-Carbon CFM: in InterfaceLib 8.5 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later } function DecrementAtomic(var value: SInt32): SInt32; external name '_DecrementAtomic'; { * AddAtomic() * * Availability: * Non-Carbon CFM: in InterfaceLib 8.5 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later } function AddAtomic(amount: SInt32; var value: SInt32): SInt32; external name '_AddAtomic'; { * BitAndAtomic() * * Availability: * Non-Carbon CFM: in InterfaceLib 8.5 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later } function BitAndAtomic(mask: UInt32; var value: UInt32): UInt32; external name '_BitAndAtomic'; { * BitOrAtomic() * * Availability: * Non-Carbon CFM: in InterfaceLib 8.5 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later } function BitOrAtomic(mask: UInt32; var value: UInt32): UInt32; external name '_BitOrAtomic'; { * BitXorAtomic() * * Availability: * Non-Carbon CFM: in InterfaceLib 8.5 and later * CarbonLib: in CarbonLib 1.0 and later * Mac OS X: in version 10.0 and later } function BitXorAtomic(mask: UInt32; var value: UInt32): UInt32; external name '_BitXorAtomic'; {$ALIGN MAC68K} end.