|
|
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.