Code Search for Developers
 
 
  

DriverServices.h from guliverkli at Krugle


Show DriverServices.h syntax highlighted

/*
     File:       DriverServices.h
 
     Contains:   Driver Services Interfaces.
 
     Version:    Technology: PowerSurge 1.0.2
                 Release:    QuickTime 6.0.2
 
     Copyright:  (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 __DRIVERSERVICES__
#define __DRIVERSERVICES__

#ifndef __CONDITIONALMACROS__
#include "ConditionalMacros.h"
#endif

#ifndef __MACTYPES__
#include "MacTypes.h"
#endif

#ifndef __MACERRORS__
#include "MacErrors.h"
#endif

#ifndef __MACHINEEXCEPTIONS__
#include "MachineExceptions.h"
#endif

#ifndef __DEVICES__
#include "Devices.h"
#endif

#ifndef __DRIVERSYNCHRONIZATION__
#include "DriverSynchronization.h"
#endif

#ifndef __NAMEREGISTRY__
#include "NameRegistry.h"
#endif




#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=power
#elif PRAGMA_STRUCT_PACKPUSH
    #pragma pack(push, 2)
#elif PRAGMA_STRUCT_PACK
    #pragma pack(2)
#endif

/******************************************************************
 *
 *      Previously in Kernel.h
 *
 ******************************************************************/
/* Kernel basics*/
typedef struct OpaqueIOPreparationID*   IOPreparationID;
typedef struct OpaqueSoftwareInterruptID*  SoftwareInterruptID;
typedef struct OpaqueTaskID*            TaskID;
typedef struct OpaqueTimerID*           TimerID;
/* Tasking*/
typedef UInt32                          ExecutionLevel;
enum {
    kTaskLevel                  = 0,
    kSoftwareInterruptLevel     = 1,
    kAcceptFunctionLevel        = 2,
    kKernelLevel                = 3,
    kSIHAcceptFunctionLevel     = 4,
    kSecondaryInterruptLevel    = 5,
    kHardwareInterruptLevel     = 6
};

typedef CALLBACK_API_C( void , SoftwareInterruptHandler )(void *p1, void *p2);
typedef CALLBACK_API_C( OSStatus , SecondaryInterruptHandler2 )(void *p1, void *p2);
#define kCurrentAddressSpaceID ((AddressSpaceID) -1)
/* Memory System basics*/

struct LogicalAddressRange {
    LogicalAddress                  address;
    ByteCount                       count;
};
typedef struct LogicalAddressRange      LogicalAddressRange;
typedef LogicalAddressRange *           LogicalAddressRangePtr;

struct PhysicalAddressRange {
    PhysicalAddress                 address;
    ByteCount                       count;
};
typedef struct PhysicalAddressRange     PhysicalAddressRange;
typedef PhysicalAddressRange *          PhysicalAddressRangePtr;
/* For PrepareMemoryForIO and CheckpointIO*/

typedef OptionBits                      IOPreparationOptions;
enum {
    kIOMultipleRanges           = 0x00000001,
    kIOLogicalRanges            = 0x00000002,
    kIOMinimalLogicalMapping    = 0x00000004,
    kIOShareMappingTables       = 0x00000008,
    kIOIsInput                  = 0x00000010,
    kIOIsOutput                 = 0x00000020,
    kIOCoherentDataPath         = 0x00000040,
    kIOTransferIsLogical        = 0x00000080,
    kIOClientIsUserMode         = 0x00000080
};

typedef OptionBits                      IOPreparationState;
enum {
    kIOStateDone                = 0x00000001
};

enum {
    kInvalidPageAddress         = (-1)
};


struct AddressRange {
    void *                          base;
    ByteCount                       length;
};
typedef struct AddressRange             AddressRange;
/* C's treatment of arrays and array pointers is atypical*/

typedef LogicalAddress *                LogicalMappingTablePtr;
typedef PhysicalAddress *               PhysicalMappingTablePtr;
typedef AddressRange *                  AddressRangeTablePtr;

struct MultipleAddressRange {
    ItemCount                       entryCount;
    AddressRangeTablePtr            rangeTable;
};
typedef struct MultipleAddressRange     MultipleAddressRange;
/*
   Separate C definition so that union has a name.  A future version of the interfacer
   tool will allow a name (that gets thrown out in Pascal and Asm).
*/

struct IOPreparationTable {
    IOPreparationOptions            options;
    IOPreparationState              state;
    IOPreparationID                 preparationID;
    AddressSpaceID                  addressSpace;
    ByteCount                       granularity;
    ByteCount                       firstPrepared;
    ByteCount                       lengthPrepared;
    ItemCount                       mappingEntryCount;
    LogicalMappingTablePtr          logicalMapping;
    PhysicalMappingTablePtr         physicalMapping;
    union {
        AddressRange                    range;
        MultipleAddressRange            multipleRanges;
    }                                 rangeInfo;
};
typedef struct IOPreparationTable       IOPreparationTable;

typedef OptionBits                      IOCheckpointOptions;
enum {
    kNextIOIsInput              = 0x00000001,
    kNextIOIsOutput             = 0x00000002,
    kMoreIOTransfers            = 0x00000004
};

/* For SetProcessorCacheMode*/

typedef UInt32                          ProcessorCacheMode;
enum {
    kProcessorCacheModeDefault  = 0,
    kProcessorCacheModeInhibited = 1,
    kProcessorCacheModeWriteThrough = 2,
    kProcessorCacheModeCopyBack = 3
};

/*
   For GetPageInformation
   (Note: if kPageInformationVersion fails, try 0 -- old versions of DSL defined  kPageInformationVersion as 0)
*/

enum {
    kPageInformationVersion     = 1
};

typedef UInt32                          PageStateInformation;
enum {
    kPageIsProtected            = 0x00000001,
    kPageIsProtectedPrivileged  = 0x00000002,
    kPageIsModified             = 0x00000004,
    kPageIsReferenced           = 0x00000008,
    kPageIsLockedResident       = 0x00000010,                   /* held and locked resident*/
    kPageIsInMemory             = 0x00000020,
    kPageIsShared               = 0x00000040,
    kPageIsWriteThroughCached   = 0x00000080,
    kPageIsCopyBackCached       = 0x00000100,
    kPageIsHeldResident         = 0x00000200,                   /* held resident - use kPageIsLockedResident to check for locked state*/
    kPageIsLocked               = kPageIsLockedResident,        /* Deprecated*/
    kPageIsResident             = kPageIsInMemory               /* Deprecated*/
};


struct PageInformation {
    AreaID                          area;
    ItemCount                       count;
    PageStateInformation            information[1];
};
typedef struct PageInformation          PageInformation;
typedef PageInformation *               PageInformationPtr;

/*  Tasks  */
#if CALL_NOT_IN_CARBON
EXTERN_API_C( ExecutionLevel )
CurrentExecutionLevel           (void);

EXTERN_API_C( TaskID )
CurrentTaskID                   (void);

EXTERN_API_C( OSStatus )
DelayFor                        (Duration               delayDuration);

EXTERN_API_C( Boolean )
InPrivilegedMode                (void);


/*  Software Interrupts  */
EXTERN_API_C( OSStatus )
CreateSoftwareInterrupt         (SoftwareInterruptHandler  handler,
                                 TaskID                 task,
                                 void *                 p1,
                                 Boolean                persistent,
                                 SoftwareInterruptID *  theSoftwareInterrupt);


EXTERN_API_C( OSStatus )
SendSoftwareInterrupt           (SoftwareInterruptID    theSoftwareInterrupt,
                                 void *                 p2);

EXTERN_API_C( OSStatus )
DeleteSoftwareInterrupt         (SoftwareInterruptID    theSoftwareInterrupt);

#endif  /* CALL_NOT_IN_CARBON */

#if TARGET_OS_MAC
/*  Secondary Interrupts  */
#if CALL_NOT_IN_CARBON
EXTERN_API_C( OSStatus )
CallSecondaryInterruptHandler2  (SecondaryInterruptHandler2  theHandler,
                                 ExceptionHandler       exceptionHandler,
                                 void *                 p1,
                                 void *                 p2);

EXTERN_API_C( OSStatus )
QueueSecondaryInterruptHandler  (SecondaryInterruptHandler2  theHandler,
                                 ExceptionHandler       exceptionHandler,
                                 void *                 p1,
                                 void *                 p2);

#endif  /* CALL_NOT_IN_CARBON */

#endif  /* TARGET_OS_MAC */

/*  Timers  */
#if CALL_NOT_IN_CARBON
EXTERN_API_C( OSStatus )
SetInterruptTimer               (const AbsoluteTime *   expirationTime,
                                 SecondaryInterruptHandler2  handler,
                                 void *                 p1,
                                 TimerID *              theTimer);

EXTERN_API_C( OSStatus )
SetPersistentTimer              (Duration               frequency,
                                 SecondaryInterruptHandler2  theHandler,
                                 void *                 p1,
                                 TimerID *              theTimer);

EXTERN_API_C( OSStatus )
CancelTimer                     (TimerID                theTimer,
                                 AbsoluteTime *         timeRemaining);


/*  I/O related Operations  */
EXTERN_API_C( OSStatus )
PrepareMemoryForIO              (IOPreparationTable *   theIOPreparationTable);

EXTERN_API_C( OSStatus )
CheckpointIO                    (IOPreparationID        theIOPreparation,
                                 IOCheckpointOptions    options);


/*  Memory Operations  */
EXTERN_API_C( OSStatus )
GetPageInformation              (AddressSpaceID         addressSpace,
                                 ConstLogicalAddress    base,
                                 ByteCount              length,
                                 PBVersion              version,
                                 PageInformation *      thePageInfo);

/*  Processor Cache Related  */
EXTERN_API_C( OSStatus )
SetProcessorCacheMode           (AddressSpaceID         addressSpace,
                                 ConstLogicalAddress    base,
                                 ByteCount              length,
                                 ProcessorCacheMode     cacheMode);

/******************************************************************
 *
 *      Was in DriverSupport.h or DriverServices.h
 *
 ******************************************************************/
#define kAAPLDeviceLogicalAddress "AAPL,address"
#endif  /* CALL_NOT_IN_CARBON */


typedef LogicalAddress *                DeviceLogicalAddressPtr;
enum {
    durationMicrosecond         = -1L,                          /* Microseconds are negative*/
    durationMillisecond         = 1L,                           /* Milliseconds are positive*/
    durationSecond              = 1000L,                        /* 1000 * durationMillisecond*/
    durationMinute              = 60000L,                       /* 60 * durationSecond,*/
    durationHour                = 3600000L,                     /* 60 * durationMinute,*/
    durationDay                 = 86400000L,                    /* 24 * durationHour,*/
    durationNoWait              = 0L,                           /* don't block*/
    durationForever             = 0x7FFFFFFF                    /* no time limit*/
};

enum {
    k8BitAccess                 = 0,                            /* access as 8 bit*/
    k16BitAccess                = 1,                            /* access as 16 bit*/
    k32BitAccess                = 2                             /* access as 32 bit*/
};

typedef UnsignedWide                    Nanoseconds;

#if CALL_NOT_IN_CARBON
EXTERN_API_C( OSErr )
IOCommandIsComplete             (IOCommandID            theID,
                                 OSErr                  theResult);

EXTERN_API_C( OSErr )
GetIOCommandInfo                (IOCommandID            theID,
                                 IOCommandContents *    theContents,
                                 IOCommandCode *        theCommand,
                                 IOCommandKind *        theKind);

EXTERN_API_C( void )
UpdateDeviceActivity            (RegEntryID *           deviceEntry);

EXTERN_API_C( void )
BlockCopy                       (const void *           srcPtr,
                                 void *                 destPtr,
                                 Size                   byteCount);

EXTERN_API_C( LogicalAddress )
PoolAllocateResident            (ByteCount              byteSize,
                                 Boolean                clear);

EXTERN_API_C( OSStatus )
PoolDeallocate                  (LogicalAddress         address);

EXTERN_API_C( ByteCount )
GetLogicalPageSize              (void);

EXTERN_API_C( ByteCount )
GetDataCacheLineSize            (void);

EXTERN_API_C( OSStatus )
FlushProcessorCache             (AddressSpaceID         spaceID,
                                 LogicalAddress         base,
                                 ByteCount              length);

EXTERN_API_C( LogicalAddress )
MemAllocatePhysicallyContiguous (ByteCount              byteSize,
                                 Boolean                clear);

EXTERN_API_C( OSStatus )
MemDeallocatePhysicallyContiguous (LogicalAddress       address);


#endif  /* CALL_NOT_IN_CARBON */

EXTERN_API_C( AbsoluteTime )
UpTime                          (void);

#if CALL_NOT_IN_CARBON
EXTERN_API_C( void )
GetTimeBaseInfo                 (UInt32 *               minAbsoluteTimeDelta,
                                 UInt32 *               theAbsoluteTimeToNanosecondNumerator,
                                 UInt32 *               theAbsoluteTimeToNanosecondDenominator,
                                 UInt32 *               theProcessorToAbsoluteTimeNumerator,
                                 UInt32 *               theProcessorToAbsoluteTimeDenominator);


#endif  /* CALL_NOT_IN_CARBON */

EXTERN_API_C( Nanoseconds )
AbsoluteToNanoseconds           (AbsoluteTime           absoluteTime);

EXTERN_API_C( Duration )
AbsoluteToDuration              (AbsoluteTime           absoluteTime);

EXTERN_API_C( AbsoluteTime )
NanosecondsToAbsolute           (Nanoseconds            nanoseconds);

EXTERN_API_C( AbsoluteTime )
DurationToAbsolute              (Duration               duration);

EXTERN_API_C( AbsoluteTime )
AddAbsoluteToAbsolute           (AbsoluteTime           absoluteTime1,
                                 AbsoluteTime           absoluteTime2);

EXTERN_API_C( AbsoluteTime )
SubAbsoluteFromAbsolute         (AbsoluteTime           leftAbsoluteTime,
                                 AbsoluteTime           rightAbsoluteTime);

EXTERN_API_C( AbsoluteTime )
AddNanosecondsToAbsolute        (Nanoseconds            nanoseconds,
                                 AbsoluteTime           absoluteTime);

EXTERN_API_C( AbsoluteTime )
AddDurationToAbsolute           (Duration               duration,
                                 AbsoluteTime           absoluteTime);

EXTERN_API_C( AbsoluteTime )
SubNanosecondsFromAbsolute      (Nanoseconds            nanoseconds,
                                 AbsoluteTime           absoluteTime);

EXTERN_API_C( AbsoluteTime )
SubDurationFromAbsolute         (Duration               duration,
                                 AbsoluteTime           absoluteTime);

EXTERN_API_C( Nanoseconds )
AbsoluteDeltaToNanoseconds      (AbsoluteTime           leftAbsoluteTime,
                                 AbsoluteTime           rightAbsoluteTime);

EXTERN_API_C( Duration )
AbsoluteDeltaToDuration         (AbsoluteTime           leftAbsoluteTime,
                                 AbsoluteTime           rightAbsoluteTime);

EXTERN_API_C( Nanoseconds )
DurationToNanoseconds           (Duration               theDuration);

EXTERN_API_C( Duration )
NanosecondsToDuration           (Nanoseconds            theNanoseconds);


#if CALL_NOT_IN_CARBON
EXTERN_API_C( OSErr )
PBQueueInit                     (QHdrPtr                qHeader);

EXTERN_API_C( OSErr )
PBQueueCreate                   (QHdrPtr *              qHeader);

EXTERN_API_C( OSErr )
PBQueueDelete                   (QHdrPtr                qHeader);

EXTERN_API_C( void )
PBEnqueue                       (QElemPtr               qElement,
                                 QHdrPtr                qHeader);

EXTERN_API_C( OSErr )
PBEnqueueLast                   (QElemPtr               qElement,
                                 QHdrPtr                qHeader);

EXTERN_API_C( OSErr )
PBDequeue                       (QElemPtr               qElement,
                                 QHdrPtr                qHeader);

EXTERN_API_C( OSErr )
PBDequeueFirst                  (QHdrPtr                qHeader,
                                 QElemPtr *             theFirstqElem);

EXTERN_API_C( OSErr )
PBDequeueLast                   (QHdrPtr                qHeader,
                                 QElemPtr *             theLastqElem);

EXTERN_API_C( char *)
CStrCopy                        (char *                 dst,
                                 const char *           src);

EXTERN_API_C( StringPtr )
PStrCopy                        (StringPtr              dst,
                                 ConstStr255Param       src);

EXTERN_API_C( char *)
CStrNCopy                       (char *                 dst,
                                 const char *           src,
                                 UInt32                 max);

EXTERN_API_C( StringPtr )
PStrNCopy                       (StringPtr              dst,
                                 ConstStr255Param       src,
                                 UInt32                 max);

EXTERN_API_C( char *)
CStrCat                         (char *                 dst,
                                 const char *           src);

EXTERN_API_C( StringPtr )
PStrCat                         (StringPtr              dst,
                                 ConstStr255Param       src);

EXTERN_API_C( char *)
CStrNCat                        (char *                 dst,
                                 const char *           src,
                                 UInt32                 max);

EXTERN_API_C( StringPtr )
PStrNCat                        (StringPtr              dst,
                                 ConstStr255Param       src,
                                 UInt32                 max);

EXTERN_API_C( void )
PStrToCStr                      (char *                 dst,
                                 ConstStr255Param       src);

EXTERN_API_C( void )
CStrToPStr                      (Str255                 dst,
                                 const char *           src);

EXTERN_API_C( SInt16 )
CStrCmp                         (const char *           s1,
                                 const char *           s2);

EXTERN_API_C( SInt16 )
PStrCmp                         (ConstStr255Param       str1,
                                 ConstStr255Param       str2);

EXTERN_API_C( SInt16 )
CStrNCmp                        (const char *           s1,
                                 const char *           s2,
                                 UInt32                 max);

EXTERN_API_C( SInt16 )
PStrNCmp                        (ConstStr255Param       str1,
                                 ConstStr255Param       str2,
                                 UInt32                 max);

EXTERN_API_C( UInt32 )
CStrLen                         (const char *           src);

EXTERN_API_C( UInt32 )
PStrLen                         (ConstStr255Param       src);

EXTERN_API_C( OSStatus )
DeviceProbe                     (void *                 theSrc,
                                 void *                 theDest,
                                 UInt32                 AccessType);

EXTERN_API_C( OSStatus )
DelayForHardware                (AbsoluteTime           absoluteTime);



/******************************************************************
 *
 *      Was in Interrupts.h 
 *
 ******************************************************************/
/*  Interrupt types  */
#endif  /* CALL_NOT_IN_CARBON */

typedef struct OpaqueInterruptSetID*    InterruptSetID;
typedef long                            InterruptMemberNumber;

struct InterruptSetMember {
    InterruptSetID                  setID;
    InterruptMemberNumber           member;
};
typedef struct InterruptSetMember       InterruptSetMember;
enum {
    kISTChipInterruptSource     = 0,
    kISTOutputDMAInterruptSource = 1,
    kISTInputDMAInterruptSource = 2,
    kISTPropertyMemberCount     = 3
};


typedef InterruptSetMember              ISTProperty[3];
#define kISTPropertyName    "driver-ist" 

typedef long                            InterruptReturnValue;
enum {
    kFirstMemberNumber          = 1,
    kIsrIsComplete              = 0,
    kIsrIsNotComplete           = -1,
    kMemberNumberParent         = -2
};

typedef Boolean                         InterruptSourceState;
enum {
    kSourceWasEnabled           = true,
    kSourceWasDisabled          = false
};


typedef CALLBACK_API_C( InterruptMemberNumber , InterruptHandler )(InterruptSetMember ISTmember, void *refCon, UInt32 theIntCount);
typedef CALLBACK_API_C( void , InterruptEnabler )(InterruptSetMember ISTmember, void *refCon);
typedef CALLBACK_API_C( InterruptSourceState , InterruptDisabler )(InterruptSetMember ISTmember, void *refCon);
enum {
    kReturnToParentWhenComplete = 0x00000001,
    kReturnToParentWhenNotComplete = 0x00000002
};

typedef OptionBits                      InterruptSetOptions;
/*  Interrupt Services  */
#if CALL_NOT_IN_CARBON
EXTERN_API_C( OSStatus )
CreateInterruptSet              (InterruptSetID         parentSet,
                                 InterruptMemberNumber  parentMember,
                                 InterruptMemberNumber  setSize,
                                 InterruptSetID *       setID,
                                 InterruptSetOptions    options);


EXTERN_API_C( OSStatus )
InstallInterruptFunctions       (InterruptSetID         setID,
                                 InterruptMemberNumber  member,
                                 void *                 refCon,
                                 InterruptHandler       handlerFunction,
                                 InterruptEnabler       enableFunction,
                                 InterruptDisabler      disableFunction);


EXTERN_API_C( OSStatus )
GetInterruptFunctions           (InterruptSetID         setID,
                                 InterruptMemberNumber  member,
                                 void **                refCon,
                                 InterruptHandler *     handlerFunction,
                                 InterruptEnabler *     enableFunction,
                                 InterruptDisabler *    disableFunction);

EXTERN_API_C( OSStatus )
ChangeInterruptSetOptions       (InterruptSetID         setID,
                                 InterruptSetOptions    options);

EXTERN_API_C( OSStatus )
GetInterruptSetOptions          (InterruptSetID         setID,
                                 InterruptSetOptions *  options);



#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 /* __DRIVERSERVICES__ */





See more files for this project here

guliverkli

Home of VobSub, Media Player Classic (MPC) and other misc utils.

Project homepage: http://sourceforge.net/projects/guliverkli
Programming language(s): C,C++,PHP
License: other

  ADSP.h
  ADSPSecure.h
  AEDataModel.h
  AEObjects.h
  AEPackObject.h
  AERegistry.h
  AEUserTermTypes.h
  AGP.h
  AIFF.h
  ASDebugging.h
  ASRegistry.h
  ATA.h
  ATSLayoutTypes.h
  ATSTypes.h
  ATSUnicode.h
  AVComponents.h
  AVLTree.h
  Aliases.h
  Appearance.h
  AppleEvents.h
  AppleGuide.h
  AppleScript.h
  AppleTalk.h
  Balloons.h
  CFArray.h
  CFBag.h
  CFBase.h
  CFBundle.h
  CFCharacterSet.h
  CFData.h
  CFDate.h
  CFDictionary.h
  CFNumber.h
  CFPlugIn.h
  CFPreferences.h
  CFPropertyList.h
  CFSet.h
  CFString.h
  CFStringEncodingExt.h
  CFTimeZone.h
  CFURL.h
  CFURLAccess.h
  CMAcceleration.h
  CMApplication.h
  CMCalibrator.h
  CMComponent.h
  CMConversions.h
  CMICCProfile.h
  CMMComponent.h
  CMPRComponent.h
  CMScriptingPlugin.h
  CRMSerialDevices.h
  CTBUtilities.h
  CarbonEvents.h
  CardServices.h
  CodeFragments.h
  Collections.h
  ColorPicker.h
  ColorPickerComponents.h
  CommResources.h
  Components.h
  ConditionalMacros.h
  ConnectionTools.h
  Connections.h
  ControlDefinitions.h
  ControlStrip.h
  Controls.h
  CoreFoundation.h
  CryptoMessageSyntax.h
  CursorDevices.h
  DatabaseAccess.h
  DateTimeUtils.h
  Debugging.h
  DeskBus.h
  DeviceControl.h
  Devices.h
  Dialogs.h
  Dictionary.h
  DigitalSignature.h
  DiskInit.h
  Disks.h
  Displays.h
  Drag.h
  DrawSprocket.h
  DriverFamilyMatching.h
  DriverGestalt.h
  DriverServices.h
  DriverSupport.h
  DriverSynchronization.h
  ENET.h
  EPPC.h
  Editions.h
  Endian.h
  Events.h
  FSM.h
  FileSigning.h
  FileTransferTools.h
  FileTransfers.h
  FileTypesAndCreators.h
  Files.h