Annotation of kernel/bsd/dev/ppc/drvUSBCMD/driverservicespriv.h, revision 1.1.1.1

1.1       root        1: /*
                      2:  * Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
                      3:  *
                      4:  * @APPLE_LICENSE_HEADER_START@
                      5:  * 
                      6:  * Portions Copyright (c) 1999 Apple Computer, Inc.  All Rights
                      7:  * Reserved.  This file contains Original Code and/or Modifications of
                      8:  * Original Code as defined in and that are subject to the Apple Public
                      9:  * Source License Version 1.1 (the "License").  You may not use this file
                     10:  * except in compliance with the License.  Please obtain a copy of the
                     11:  * License at http://www.apple.com/publicsource and read it before using
                     12:  * this file.
                     13:  * 
                     14:  * The Original Code and all software distributed under the License are
                     15:  * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
                     16:  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
                     17:  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
                     18:  * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT.  Please see the
                     19:  * License for the specific language governing rights and limitations
                     20:  * under the License.
                     21:  * 
                     22:  * @APPLE_LICENSE_HEADER_END@
                     23:  */
                     24: 
                     25: /*
                     26:        File:           DriverServicesPriv.h
                     27:  
                     28:        Contains:       Defs for private DriverServices interfaces.
                     29:  
                     30:        Version:        
                     31:  
                     32:        DRI:            Jonathan Sand
                     33:  
                     34:        Copyright:      � 1985-1998 by Apple Computer, Inc., all rights reserved
                     35:  
                     36:        Warning:        *** APPLE INTERNAL USE ONLY ***
                     37:                                This file contains unreleased SPI's
                     38:  
                     39:        BuildInfo:      Built by:                       Naga Pappireddi
                     40:                                With Interfacer:        3.0d9 (PowerPC native)
                     41:                                From:                           DriverServicesPriv.i
                     42:                                        Revision:               32
                     43:                                        Dated:                  1/22/98
                     44:                                        Last change by: ngk
                     45:                                        Last comment:   Change Types.i to MacTypes.i
                     46:  
                     47:        Bugs:           Report bugs to Radar component "System Interfaces", "Latest"
                     48:                                List the version information (from above) in the Problem Description.
                     49:  
                     50: */
                     51: /*  naga
                     52: #ifndef __DRIVERSERVICESPRIV__
                     53: #define __DRIVERSERVICESPRIV__
                     54: 
                     55: #ifndef __CONDITIONALMACROS__
                     56: #include <ConditionalMacros.h>
                     57: #endif
                     58: #ifndef __MACTYPES__
                     59: #include <MacTypes.h>
                     60: #endif
                     61: #ifndef __OSUTILS__
                     62: #include <OSUtils.h>
                     63: #endif
                     64: #ifndef __MIXEDMODE__
                     65: #include <MixedMode.h>
                     66: #endif
                     67: #ifndef __INTERRUPTSPRIV__
                     68: #include <InterruptsPriv.h>
                     69: #endif
                     70: #ifndef __DRIVERSERVICES__
                     71: #include <DriverServices.h>
                     72: #endif
                     73: #ifndef __KERNEL__
                     74: #include <Kernel.h>
                     75: #endif
                     76: #ifndef __TIMER__
                     77: #include <Timer.h>
                     78: #endif
                     79: 
                     80: 
                     81: 
                     82: #if PRAGMA_ONCE
                     83: #pragma once
                     84: #endif
                     85: 
                     86: #ifdef __cplusplus
                     87: extern "C" {
                     88: #endif
                     89: 
                     90: #if PRAGMA_IMPORT
                     91: #pragma import on
                     92: #endif
                     93: 
                     94: #if PRAGMA_STRUCT_ALIGN
                     95:        #pragma options align=mac68k
                     96: #elif PRAGMA_STRUCT_PACKPUSH
                     97:        #pragma pack(push, 2)
                     98: #elif PRAGMA_STRUCT_PACK
                     99:        #pragma pack(2)
                    100: #endif
                    101: */
                    102: /*
                    103: **
                    104: ** Our private types and constants...
                    105: **
                    106: ** We Make sure all longs that we compare and swap on are aligned on long boundaries.
                    107: **
                    108: ** Swis, SIHs, and Timers are preallocated arrays of structures.  Each of these structs
                    109: ** must start on a long word boundary for CompareAndSwap to work.
                    110: **
                    111: */
                    112: /*
                    113:   //////////////////////////////////////////////////////////////////////////
                    114:    Secondary Interrupts 
                    115: */
                    116: 
                    117: /* # preallocated SIHs from PoolAllocateResident*/
                    118: #define SIHTaskPoolSize                        40
                    119: 
                    120: struct SIH_Routine {
                    121:        QElem                                                   qElement;                                       /* on either available OR*/
                    122:                                                                                                                                /* in-use lists*/
                    123:                                                                                                                                /*      OSType                                          name;                                           // 'SIHT' (Macsbug ready)*/
                    124:        SecondaryInterruptHandler2              theHandler;                                     /* -> handler*/
                    125: //naga ExceptionHandler                                theExceptionHandler;            /* not used in this implementation*/
                    126:        void *                                                  p1;                                                     /* first param for handler*/
                    127:        void *                                                  p2;                                                     /* second param for handler*/
                    128:        UInt32                                                  sihSequenceNumber;                      /* counts queued sihs*/
                    129:        void *                                                  reserved;                                       /* room to grow*/
                    130: };
                    131: typedef struct SIH_Routine                             SIH_Routine;
                    132: typedef SIH_Routine *                                  SIH_RoutinePtr;
                    133: 
                    134: struct SIHGlobalsStruct {
                    135:                                                                                                                                /*      OSType                                          globalsName;                            // 'SIHG' (Macsbug ready)*/
                    136:        SIH_RoutinePtr                                  taskPool;                                       /* pre-allocated queue records*/
                    137:        UInt32                                                  sihSequenceNumber;                      /* counts queued sihs*/
                    138:        UInt32                                                  sihLastExecSequenceNumber;      /* last sequence number executed.*/
                    139:        void *                                                  reserved;                                       /* room to grow*/
                    140: 
                    141: };
                    142: typedef struct SIHGlobalsStruct                        SIHGlobalsStruct;
                    143: 
                    144: typedef SIHGlobalsStruct *                             SIHGlobalsPtr;
                    145: /*
                    146:   //////////////////////////////////////////////////////////////////////////
                    147:    Memory Management
                    148: */
                    149: 
                    150: enum {
                    151:        kCacheLineSize                          = 32
                    152: };
                    153: 
                    154: typedef UInt32                                                         LogicalAddressLval;
                    155: typedef UInt32                                                         PhysicalAddressLval;
                    156: /*
                    157:   //////////////////////////////////////////////////////////////////////////
                    158:    Software Interrupts
                    159: */
                    160: /* # preallocated Swis from PoolAllocateResident*/
                    161: #define N_SWIS 24
                    162: 
                    163: struct Swi_Information {
                    164:        QElem                                                   Link;                                           /* next SWI sent to this task*/
                    165:                                                                                                                                /*      OSType                                          Name;                                           // 'SWI!' (Macsbug ready)*/
                    166:        SoftwareInterruptHandler                Handler;                                        /* &TVector of handler routine*/
                    167:        SoftwareInterruptID                     The_Id;
                    168:        TaskID                                                  The_Task;                                       /* task to which SWI was or will be sent*/
                    169:        Boolean                                                 Privileged;                                     /* whether SWI will run on master stack*/
                    170:        Boolean                                                 Temporary;                                      /* whether SWI will be deleted after delivery*/
                    171:        Boolean                                                 Sent;                                           /* whether SWI has been sent*/
                    172:        Boolean                                                 Overrun;                                        /* whether non-temporary SWI has been sent twice before delivery*/
                    173:        void *                                                  P1;                                                     /* set at CreateSwi time*/
                    174:        void *                                                  P2;                                                     /* set at SendSwi time*/
                    175:        void *                                                  reserved;                                       /* room to grow*/
                    176: };
                    177: typedef struct Swi_Information                 Swi_Information;
                    178: 
                    179: typedef Swi_Information *                              Swi_Info;
                    180: /*
                    181:   //////////////////////////////////////////////////////////////////////////
                    182:    Timer
                    183: */
                    184: /* # preallocated TimerTasks from PoolAllocateResident*/
                    185: #define TimerTaskPoolSize 32
                    186: 
                    187: struct TimerTaskStruct {
                    188:        //nagaTMTask                                                    tmTask;                                         /* Time Manager Task Elements */
                    189:        UInt16                                                  Pad;                                            /* align to long*/
                    190:                                                                                                                                /*      OSType                                          name;                   // 'TIMT' (Macsbug ready)*/
                    191:        struct TimerTaskStruct *                pNextTask;                                      /* Timer list elements */
                    192:        TimerID                                                 timerID;                                        /* Timer elements */
                    193:        SecondaryInterruptHandler2              theHandler;                                     /* -> SIH to queue*/
                    194:        void *                                                  p1;                                                     /* == param to SIH*/
                    195:        long                                                    frequency;                                      /* persistence frequency*/
                    196:        Boolean                                                 persistent;                                     /* if true, task is persistent*/
                    197: };
                    198: typedef struct TimerTaskStruct                 TimerTaskStruct;
                    199: 
                    200: typedef TimerTaskStruct *                              TimerTaskPtr;
                    201: 
                    202: struct TimerGlobalsStruct {
                    203:                                                                                                                                /*      OSType                  globalsName;            // 'TIMG' (Macsbug ready)*/
                    204:                                                                                                                                /* Timer list elements */
                    205:        TimerTaskPtr                                    taskPool;                                       /* pool of pre-allocated */
                    206:                                                                                                                                /* task records */
                    207:        TimerTaskPtr                                    taskFreeList;                           /* list of free tasks */
                    208:        TimerTaskPtr                                    taskList;                                       /* list of pending tasks */
                    209:        TimerID                                                 nextUniqueID;                           /* next unique timer ID */
                    210: 
                    211:                                                                                                                                /* Time Manager elements */
                    212:        //nagaTimerUPP                                          tmTaskHandler;                          /* Timer Manager interrupt */
                    213:                                                                                                                                /* handler */
                    214:        void *                                                  reserved;                                       /* room to grow*/
                    215: };
                    216: typedef struct TimerGlobalsStruct              TimerGlobalsStruct;
                    217: 
                    218: typedef TimerGlobalsStruct *                   TimerGlobalsPtr;
                    219: 
                    220: /*
                    221: **
                    222: ** Our private globals and external routines...
                    223: **
                    224: */
                    225: /*
                    226: ** Device Probe
                    227: */
                    228: extern OSStatus                        ProbeSuccess;
                    229: /*
                    230: ** InterruptManager.c
                    231: */
                    232: //naga
                    233: #define extern
                    234: //nagaextern InterruptSetObject        *theRootSetOfAllTrees;
                    235: extern UInt32                          gInterruptCount;
                    236: extern SInt32                          inNativeIntDispatcher;
                    237: EXTERN_API_C( void )
                    238: _SIHDeferredTaskHandler                        (void);
                    239: 
                    240: extern void                            (*nullInterruptHook)( void );
                    241: /*
                    242: ** SynchronizationUnAligned.c
                    243: */
                    244: extern UInt32                  UnAlignAddAtomicCount;
                    245: extern UInt32                  AddAtomicCount;
                    246: extern UInt32                  UnAlignIncrementAtomicCount;
                    247: extern UInt32                  IncrementAtomicCount;
                    248: extern UInt32                  UnAlignDecrementAtomicCount;
                    249: extern UInt32                  DecrementAtomicCount;
                    250: extern UInt32                  UnAlignBitOrAtomicCount;
                    251: extern UInt32                  BitOrAtomicCount;
                    252: extern UInt32                  UnAlignBitAndAtomicCount;
                    253: extern UInt32                  BitAndAtomicCount;
                    254: extern UInt32                  UnAlignBitXorAtomicCount;
                    255: extern UInt32                  BitXorAtomicCount;
                    256: extern UInt32                  UnAlignCompareAndSwapCount;
                    257: extern UInt32                  CompareAndSwapCount;
                    258: extern UInt32                  UnAlignAddByteAtomicCount;
                    259: extern UInt32                  AddByteAtomicCount;
                    260: extern UInt32                  UnAlignIncrementByteAtomicCount;
                    261: extern UInt32                  IncrementByteAtomicCount;
                    262: extern UInt32                  UnAlignDecrementByteAtomicCount;
                    263: extern UInt32                  DecrementByteAtomicCount;
                    264: extern UInt32                  UnAlignAddHalfwordAtomicCount;
                    265: extern UInt32                  AddHalfwordAtomicCount;
                    266: extern UInt32                  UnAlignIncrementHalfwordAtomicCount;
                    267: extern UInt32                  IncrementHalfwordAtomicCount;
                    268: extern UInt32                  UnAlignDecrementHalfwordAtomicCount;
                    269: extern UInt32                  DecrementHalfwordAtomicCount;
                    270: extern UInt32                  UnAlignBitAndAtomic8Count;
                    271: extern UInt32                  BitAndAtomic8Count;
                    272: extern UInt32                  UnAlignBitOrAtomic8Count;
                    273: extern UInt32                  BitOrAtomic8Count;
                    274: extern UInt32                  UnAlignBitXorAtomic8Count;
                    275: extern UInt32                  BitXorAtomic8Count;
                    276: extern UInt32                  UnAlignBitAndAtomic16Count;
                    277: extern UInt32                  BitAndAtomic16Count;
                    278: extern UInt32                  UnAlignBitOrAtomic16Count;
                    279: extern UInt32                  BitOrAtomic16Count;
                    280: extern UInt32                  UnAlignBitXorAtomic16Count;
                    281: extern UInt32                  BitXorAtomic16Count;
                    282: extern UInt32                  UnAlignTestAndSetCount;
                    283: extern UInt32                  TestAndSetCount;
                    284: extern UInt32                  UnAlignTestAndClearCount;
                    285: extern UInt32                  TestAndClearCount;
                    286: /*
                    287: ** Timer.c
                    288: */
                    289: extern TimerGlobalsPtr  gTimer;
                    290: /*
                    291: ** Don't know
                    292: */
                    293: EXTERN_API_C( void )
                    294: FlushRange                                             (LogicalAddressLval     theLogicalAddress,
                    295:                                                                 ByteCount                              theLength);
                    296: 
                    297: EXTERN_API_C( void )
                    298: InvalidateRange                                        (LogicalAddressLval     theLogicalAddress,
                    299:                                                                 ByteCount                              theLength);
                    300: 
                    301: /*
                    302: ** DriverServices.c
                    303: */
                    304: extern QHdrPtr                         CreatedSwis;
                    305: extern QHdrPtr                         AvailableSwis;
                    306: extern Swi_Information         *AllSwis;
                    307: /*
                    308: ** InterruptsControl.c
                    309: */
                    310: EXTERN_API_C( UInt16 )
                    311: Disable68kInterrupts                   (void);
                    312: 
                    313: EXTERN_API_C( void )
                    314: Restore68kInterrupts                   (UInt16                                 currentSR);
                    315: 
                    316: /*
                    317: ** InterruptManagerSAL.c
                    318: */
                    319: //nagaextern Vector *                  vectorTable;
                    320: /*
                    321: ** MemoryManagement.c
                    322: */
                    323: extern Ptr                             gDeallocateQueueHead;
                    324: extern Ptr                             gDeallocateQueueTail;
                    325: /*
                    326: ** SecondaryInterrupt.c
                    327: */
                    328: extern SIHGlobalsPtr           gSIH;
                    329: extern UInt32                          atSecondaryInterruptLevel;
                    330: extern QHdrPtr                         Available_SIHsPtr;
                    331: extern QHdrPtr                         Deferred_SIHsPtr;
                    332: /*
                    333: ** Timing.c
                    334: */
                    335: typedef AbsoluteTime   (*UpTimeProcPtr) (void);
                    336: extern UpTimeProcPtr   gUpTimeProc;
                    337: extern AbsoluteTime    gElapsedTime;
                    338: extern Boolean                 gProcessorConversionChanged;
                    339: extern UInt32                  gMinAbsoluteTimeDelta;
                    340: extern UInt32                  gAbsoluteTimeToNanosecondsNumerator;
                    341: extern UInt32                  gAbsoluteTimeToNanosecondsDenominator;
                    342: extern UInt32                  gProcessorToAbsoluteTimeNumerator;
                    343: extern UInt32                  gProcessorToAbsoluteTimeDenominator;
                    344: EXTERN_API_C( AbsoluteTime )
                    345: UpTime601                                              (void);
                    346: 
                    347: EXTERN_API_C( AbsoluteTime )
                    348: UpTimePowerPC                                  (void);
                    349: 
                    350: EXTERN_API_C( void )
                    351: InitializeTiming601                            (void);
                    352: 
                    353: EXTERN_API_C( void )
                    354: InitializeTimingPowerPC                        (void);
                    355: 
                    356: EXTERN_API_C( void )
                    357: SetTimeBaseInfo                                        (UInt32                                 minAbsoluteTimeDelta,
                    358:                                                                 UInt32                                 theAbsoluteTimeToNanosecondNumerator,
                    359:                                                                 UInt32                                 theAbsoluteTimeToNanosecondDenominator,
                    360:                                                                 UInt32                                 theProcessorToAbsoluteTimeNumerator,
                    361:                                                                 UInt32                                 theProcessorToAbsoluteTimeDenominator);
                    362: 
                    363: typedef OSStatus               (*DelayForHwdrProcPtr)(AbsoluteTime theAbsolute);
                    364: extern DelayForHwdrProcPtr     gDelayForHdwrProc;
                    365: EXTERN_API_C( UInt32 )
                    366: DSLGetProcessorVersion                 (void);
                    367: 
                    368: EXTERN_API_C( OSStatus )
                    369: DelayForHardwarePPC                            (AbsoluteTime                   theAbsolute);
                    370: 
                    371: EXTERN_API_C( OSStatus )
                    372: DelayForHardware601                            (AbsoluteTime                   theAbsolute);
                    373: 
                    374: EXTERN_API_C( UInt32 )
                    375: DeviceProbe32                                  (UInt32 *                               theAddress);
                    376: 
                    377: EXTERN_API_C( UInt16 )
                    378: DeviceProbe16                                  (UInt16 *                               theAddress);
                    379: 
                    380: EXTERN_API_C( UInt8 )
                    381: DeviceProbe8                                   (UInt8 *                                theAddress);
                    382: //naga
                    383: #undef extern
                    384: /*naga
                    385: #if PRAGMA_STRUCT_ALIGN
                    386:        #pragma options align=reset
                    387: #elif PRAGMA_STRUCT_PACKPUSH
                    388:        #pragma pack(pop)
                    389: #elif PRAGMA_STRUCT_PACK
                    390:        #pragma pack()
                    391: #endif
                    392: 
                    393: #ifdef PRAGMA_IMPORT_OFF
                    394: #pragma import off
                    395: #elif PRAGMA_IMPORT
                    396: #pragma import reset
                    397: #endif
                    398: 
                    399: #ifdef __cplusplus
                    400: }
                    401: #endif
                    402: 
                    403: #endif  __DRIVERSERVICESPRIV__ */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.