/*
* Copyright (c) 1998-2000 Apple Computer, Inc. All rights reserved.
*
- * @APPLE_LICENSE_HEADER_START@
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
*
- * The contents of this file constitute Original Code as defined in and
- * are subject to the Apple Public Source License Version 1.1 (the
- * "License"). You may not use this file except in compliance with the
- * License. Please obtain a copy of the License at
- * http://www.apple.com/publicsource and read it before using this file.
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
*
- * This Original Code and all software distributed under the License are
- * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the
- * License for the specific language governing rights and limitations
- * under the License.
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
*
- * @APPLE_LICENSE_HEADER_END@
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
*/
/*
* Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
// options for getExistingServices()
enum {
- kIONotifyOnce = 0x00000001
+ kIONotifyOnce = 0x00000001,
+ kIOServiceExistingSet = 0x00000002,
+ kIOServiceChangesOK = 0x00000004,
+ kIOServiceInternalDone = 0x00000008,
+ kIOServiceClassDone = 0x00000010,
};
// masks for __state[1]
enum {
- kIOServiceBusyStateMask = 0x000000ff,
- kIOServiceBusyMax = 255,
+ kIOServiceBusyStateMask = 0x000003ff,
+ kIOServiceBusyMax = 1023,
kIOServiceNeedConfigState = 0x80000000,
kIOServiceSynchronousState = 0x40000000,
kIOServiceModuleStallState = 0x20000000,
kIOServiceSyncPubState = 0x08000000,
kIOServiceConfigState = 0x04000000,
+ kIOServiceStartState = 0x02000000,
kIOServiceTermPhase2State = 0x01000000,
kIOServiceTermPhase3State = 0x00800000,
-};
-
-// options for terminate()
-enum {
+ kIOServiceTermPhase1State = 0x00400000,
+ kIOServiceTerm1WaiterState = 0x00200000,
kIOServiceRecursing = 0x00100000,
+ kIOServiceNeedWillTerminate = 0x00080000,
+ kIOServiceWaitDetachState = 0x00040000,
};
// notify state
class _IOServiceNotifier : public IONotifier
{
- friend IOService;
+ friend class IOService;
OSDeclareDefaultStructors(_IOServiceNotifier)
OSOrderedSet * whence;
OSDictionary * matching;
- IOServiceNotificationHandler handler;
+ IOServiceMatchingNotificationHandler handler;
+ IOServiceNotificationHandler compatHandler;
void * target;
void * ref;
SInt32 priority;
queue_head_t handlerInvocations;
IOOptionBits state;
- virtual void free();
- virtual void remove();
- virtual bool disable();
- virtual void enable( bool was );
+ virtual void free() APPLE_KEXT_OVERRIDE;
+ virtual void remove() APPLE_KEXT_OVERRIDE;
+ virtual bool disable() APPLE_KEXT_OVERRIDE;
+ virtual void enable( bool was ) APPLE_KEXT_OVERRIDE;
virtual void wait();
};
class _IOServiceInterestNotifier : public IONotifier
{
- friend IOService;
+ friend class IOService;
OSDeclareDefaultStructors(_IOServiceInterestNotifier)
public:
- OSArray * whence;
+ queue_chain_t chain;
IOServiceInterestHandler handler;
void * target;
queue_head_t handlerInvocations;
IOOptionBits state;
- virtual void free();
- virtual void remove();
- virtual bool disable();
- virtual void enable( bool was );
+ virtual void free() APPLE_KEXT_OVERRIDE;
+ virtual void remove() APPLE_KEXT_OVERRIDE;
+ virtual bool disable() APPLE_KEXT_OVERRIDE;
+ virtual void enable( bool was ) APPLE_KEXT_OVERRIDE;
+ virtual void wait();
+ virtual bool init() APPLE_KEXT_OVERRIDE;
+};
+
+class _IOServiceNullNotifier : public IONotifier
+{
+ OSDeclareDefaultStructors(_IOServiceNullNotifier)
+
+public:
+ virtual void taggedRetain(const void *tag) const APPLE_KEXT_OVERRIDE;
+ virtual void taggedRelease(const void *tag, const int when) const APPLE_KEXT_OVERRIDE;
+ virtual void free() APPLE_KEXT_OVERRIDE;
+ virtual void remove() APPLE_KEXT_OVERRIDE;
+ virtual bool disable() APPLE_KEXT_OVERRIDE;
+ virtual void enable( bool was ) APPLE_KEXT_OVERRIDE;
virtual void wait();
};
class _IOConfigThread : public OSObject
{
- friend IOService;
+ friend class IOService;
OSDeclareDefaultStructors(_IOConfigThread)
public:
- IOThread thread;
-
- virtual void free();
+ virtual void free() APPLE_KEXT_OVERRIDE;
- static _IOConfigThread * configThread( void );
- static void main( _IOConfigThread * self );
+ static void configThread( void );
+ static void main( void * arg, wait_result_t result );
};
enum {
-#ifdef LESS_THREAD_CREATE
- kMaxConfigThreads = 4,
-#else
- kMaxConfigThreads = 32,
-#endif
+ kMaxConfigThreads = CONFIG_MAX_THREADS,
};
enum {
class _IOServiceJob : public OSObject
{
- friend IOService;
+ friend class IOService;
OSDeclareDefaultStructors(_IOServiceJob)
class IOResources : public IOService
{
- friend IOService;
+ friend class IOService;
OSDeclareDefaultStructors(IOResources)
public:
static IOService * resources( void );
- virtual IOWorkLoop * getWorkLoop( ) const;
- virtual bool matchPropertyTable( OSDictionary * table );
+ virtual bool init( OSDictionary * dictionary = 0 ) APPLE_KEXT_OVERRIDE;
+ virtual IOReturn newUserClient(task_t owningTask, void * securityID,
+ UInt32 type, OSDictionary * properties,
+ IOUserClient ** handler) APPLE_KEXT_OVERRIDE;
+ virtual IOWorkLoop * getWorkLoop( ) const APPLE_KEXT_OVERRIDE;
+ virtual bool matchPropertyTable( OSDictionary * table ) APPLE_KEXT_OVERRIDE;
+ virtual IOReturn setProperties( OSObject * properties ) APPLE_KEXT_OVERRIDE;
};
class _IOOpenServiceIterator : public OSIterator
{
- friend IOService;
+ friend class IOService;
OSDeclareDefaultStructors(_IOOpenServiceIterator)
static OSIterator * iterator( OSIterator * _iter,
const IOService * client,
const IOService * provider );
- virtual void free();
- virtual void reset();
- virtual bool isValid();
- virtual OSObject * getNextObject();
+ virtual void free() APPLE_KEXT_OVERRIDE;
+ virtual void reset() APPLE_KEXT_OVERRIDE;
+ virtual bool isValid() APPLE_KEXT_OVERRIDE;
+ virtual OSObject * getNextObject() APPLE_KEXT_OVERRIDE;
};
+extern const OSSymbol * gIOConsoleUsersKey;
+extern const OSSymbol * gIOConsoleSessionUIDKey;
+extern const OSSymbol * gIOConsoleSessionAuditIDKey;
+extern const OSSymbol * gIOConsoleSessionOnConsoleKey;
+extern const OSSymbol * gIOConsoleSessionSecureInputPIDKey;
+
#endif /* ! _IOKIT_IOSERVICEPRIVATE_H */