|
|
1.1 root 1: /*
2: * Copyright (c) 1998-2000 Apple Computer, Inc. All rights reserved.
3: *
4: * @APPLE_LICENSE_HEADER_START@
5: *
6: * The contents of this file constitute Original Code as defined in and
7: * are subject to the Apple Public Source License Version 1.1 (the
8: * "License"). You may not use this file except in compliance with the
9: * License. Please obtain a copy of the License at
10: * http://www.apple.com/publicsource and read it before using this file.
11: *
12: * This Original Code and all software distributed under the License are
13: * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
14: * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
15: * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
16: * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the
17: * License for the specific language governing rights and limitations
18: * under the License.
19: *
20: * @APPLE_LICENSE_HEADER_END@
21: */
22: /*
23: * Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
24: *
25: * HISTORY
26: *
27: */
28:
29:
30: #ifndef _IOKIT_IOSERVICEPRIVATE_H
31: #define _IOKIT_IOSERVICEPRIVATE_H
32:
33: // options for getExistingServices()
34: enum {
35: kIONotifyOnce = 0x00000001
36: };
37:
38: // masks for __state[1]
39: enum {
40: kIOServiceBusyStateMask = 0x000000ff,
41: kIOServiceBusyMax = 255,
42: kIOServiceTerminatedState = 0x80000000,
43: kIOServiceConfigState = 0x40000000,
44: kIOServiceSynchronousState = 0x20000000,
45: };
46:
47: // options for terminate()
48: enum {
49: kIOServiceRecursing = 0x00100000,
50: };
51:
52:
53: class _IOServiceNotifier : public IONotifier
54: {
55: friend IOService;
56:
57: OSDeclareDefaultStructors(_IOServiceNotifier)
58:
59: public:
60: OSOrderedSet * whence;
61:
62: OSDictionary * matching;
63: IOServiceNotificationHandler handler;
64: void * target;
65: void * ref;
66: SInt32 priority;
67: bool fEnable;
68:
69: virtual void remove();
70: virtual bool disable();
71: virtual void enable( bool was );
72: };
73:
74: class _IOServiceInterestNotifier : public IONotifier
75: {
76: friend IOService;
77:
78: OSDeclareDefaultStructors(_IOServiceInterestNotifier)
79:
80: public:
81: OSArray * whence;
82:
83: IOServiceInterestHandler handler;
84: void * target;
85: void * ref;
86: bool fEnable;
87:
88: virtual void remove();
89: virtual bool disable();
90: virtual void enable( bool was );
91: };
92:
93: class _IOConfigThread : public OSObject
94: {
95: friend IOService;
96:
97: OSDeclareDefaultStructors(_IOConfigThread)
98:
99: public:
100: IOThread thread;
101:
102: virtual void free();
103:
104: static _IOConfigThread * configThread( void );
105: static void main( _IOConfigThread * self );
106: };
107:
108: enum {
109: #ifdef LESS_THREAD_CREATE
110: kMaxConfigThreads = 4,
111: #else
112: kMaxConfigThreads = 32,
113: #endif
114: };
115:
116: enum {
117: kMatchNubJob = 10,
118: kTerminateNubJob,
119: };
120:
121: class _IOServiceJob : public OSObject
122: {
123: friend IOService;
124:
125: OSDeclareDefaultStructors(_IOServiceJob)
126:
127: public:
128: int type;
129: IOService * nub;
130: IOOptionBits options;
131:
132: static _IOServiceJob * startJob( IOService * nub, int type,
133: IOOptionBits options = 0 );
134: static void pingConfig( class _IOServiceJob * job );
135:
136: };
137:
138: class IOResources : public IOService
139: {
140: friend IOService;
141:
142: OSDeclareDefaultStructors(IOResources)
143:
144: public:
145: static IOService * resources( void );
146: virtual bool matchPropertyTable( OSDictionary * table );
147: };
148:
149: class _IOOpenServiceIterator : public OSIterator
150: {
151: friend IOService;
152:
153: OSDeclareDefaultStructors(_IOOpenServiceIterator)
154:
155: OSIterator * iter;
156: const IOService * client;
157: const IOService * provider;
158: IOService * last;
159:
160: public:
161: static OSIterator * iterator( OSIterator * _iter,
162: const IOService * client,
163: const IOService * provider );
164: virtual void free();
165: virtual void reset();
166: virtual bool isValid();
167: virtual OSObject * getNextObject();
168: };
169:
170: #endif /* ! _IOKIT_IOSERVICEPRIVATE_H */
171:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.