|
|
1.1 ! root 1: /* ! 2: * Copyright (c) 1999 Apple Computer, Inc. All rights reserved. ! 3: * ! 4: * DRI: Josh de Cesare ! 5: * ! 6: */ ! 7: ! 8: #ifndef _IOKIT_CPU_H ! 9: #define _IOKIT_CPU_H ! 10: ! 11: extern "C" { ! 12: #include <machine/machine_routines.h> ! 13: #include <pexpert/pexpert.h> ! 14: } ! 15: ! 16: #include <IOKit/IOService.h> ! 17: #include <IOKit/IOInterruptController.h> ! 18: ! 19: #define kIOCPUStateUnregistered (0) ! 20: #define kIOCPUStateUninitalized (1) ! 21: #define kIOCPUStateStopped (2) ! 22: #define kIOCPUStateRunning (3) ! 23: ! 24: class IOCPUInterruptController; ! 25: ! 26: extern IOCPUInterruptController *gIOCPUInterruptController; ! 27: ! 28: class IOCPU : public IOService ! 29: { ! 30: OSDeclareAbstractStructors(IOCPU); ! 31: ! 32: protected: ! 33: OSDictionary *cpuGroup; ! 34: IOService *cpuNub; ! 35: int physCPU; ! 36: int cpuState; ! 37: processor_t machProcessor; ! 38: ipi_handler_t ipi_handler; ! 39: ! 40: public: ! 41: static void initCPUs(void); ! 42: ! 43: virtual bool start(IOService *provider); ! 44: virtual void initCPU(void); ! 45: virtual kern_return_t startCPU(vm_offset_t start_paddr, ! 46: vm_offset_t arg_paddr); ! 47: virtual void haltCPU(vm_offset_t start_paddr, ! 48: vm_offset_t arg_paddr); ! 49: virtual void signalCPU(IOCPU *target); ! 50: ! 51: virtual int getCPUNumber(void); ! 52: virtual int getCPUState(void); ! 53: virtual OSDictionary *getCPUGroup(void); ! 54: virtual int getCPUGroupSize(void); ! 55: ! 56: virtual OSSymbol *getCPUName(void) = 0; ! 57: }; ! 58: ! 59: class IOCPUInterruptController : public IOInterruptController ! 60: { ! 61: OSDeclareDefaultStructors(IOCPUInterruptController); ! 62: ! 63: private: ! 64: int enabledCPUs; ! 65: ! 66: protected: ! 67: int numCPUs; ! 68: IOCPU **cpus; ! 69: ! 70: ! 71: public: ! 72: virtual IOReturn initCPUInterruptController(int sources); ! 73: virtual void registerCPUInterruptController(void); ! 74: virtual void setCPUInterruptProperties(IOService *service); ! 75: virtual void enableCPUInterrupt(IOCPU *cpu); ! 76: ! 77: virtual IOReturn registerInterrupt(IOService *nub, int source, ! 78: void *target, ! 79: IOInterruptHandler handler, ! 80: void *refCon); ! 81: ! 82: virtual IOReturn getInterruptType(IOService *nub, int source, ! 83: int *interruptType); ! 84: ! 85: virtual IOReturn enableInterrupt(IOService *nub, int source); ! 86: virtual IOReturn disableInterrupt(IOService *nub, int source); ! 87: virtual IOReturn causeInterrupt(IOService *nub, int source); ! 88: ! 89: virtual IOReturn handleInterrupt(void *refCon, IOService *nub, ! 90: int source); ! 91: }; ! 92: ! 93: #endif /* ! _IOKIT_CPU_H */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.