/*
- * Copyright (c) 1998-2000 Apple Computer, Inc. All rights reserved.
+ * Copyright (c) 1998-2019 Apple Inc. All rights reserved.
*
* @APPLE_OSREFERENCE_LICENSE_HEADER_START@
- *
+ *
* 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
* 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.
- *
+ *
* 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,
* 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_OSREFERENCE_LICENSE_HEADER_END@
*/
/*
- * Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
+ * Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
*
* HISTORY
*
// options for getExistingServices()
enum {
- kIONotifyOnce = 0x00000001,
- kIOServiceExistingSet = 0x00000002,
- kIOServiceChangesOK = 0x00000004,
- kIOServiceInternalDone = 0x00000008,
- kIOServiceClassDone = 0x00000010,
+ kIONotifyOnce = 0x00000001,
+ kIOServiceExistingSet = 0x00000002,
+ kIOServiceChangesOK = 0x00000004,
+ kIOServiceInternalDone = 0x00000008,
+ kIOServiceClassDone = 0x00000010,
};
// masks for __state[1]
enum {
- kIOServiceBusyStateMask = 0x000003ff,
- kIOServiceBusyMax = 1023,
- kIOServiceNeedConfigState = 0x80000000,
- kIOServiceSynchronousState = 0x40000000,
- kIOServiceModuleStallState = 0x20000000,
- kIOServiceBusyWaiterState = 0x10000000,
-
- kIOServiceSyncPubState = 0x08000000,
- kIOServiceConfigState = 0x04000000,
- kIOServiceStartState = 0x02000000,
- kIOServiceTermPhase2State = 0x01000000,
- kIOServiceTermPhase3State = 0x00800000,
- kIOServiceTermPhase1State = 0x00400000,
- kIOServiceTerm1WaiterState = 0x00200000,
- kIOServiceRecursing = 0x00100000,
- kIOServiceNeedWillTerminate = 0x00080000,
- kIOServiceWaitDetachState = 0x00040000,
- kIOServiceConfigRunning = 0x00020000,
- kIOServiceFinalized = 0x00010000,
+ kIOServiceBusyStateMask = 0x000003ff,
+ kIOServiceBusyMax = 1023,
+ kIOServiceNeedConfigState = 0x80000000,
+ kIOServiceSynchronousState = 0x40000000,
+ kIOServiceModuleStallState = 0x20000000,
+ kIOServiceBusyWaiterState = 0x10000000,
+
+ kIOServiceSyncPubState = 0x08000000,
+ kIOServiceConfigState = 0x04000000,
+ kIOServiceStartState = 0x02000000,
+ kIOServiceTermPhase2State = 0x01000000,
+ kIOServiceTermPhase3State = 0x00800000,
+ kIOServiceTermPhase1State = 0x00400000,
+ kIOServiceTerm1WaiterState = 0x00200000,
+ kIOServiceRecursing = 0x00100000,
+ kIOServiceNeedWillTerminate = 0x00080000,
+ kIOServiceWaitDetachState = 0x00040000,
+ kIOServiceConfigRunning = 0x00020000,
+ kIOServiceFinalized = 0x00010000,
};
// notify state
enum {
- kIOServiceNotifyEnable = 0x00000001,
- kIOServiceNotifyWaiter = 0x00000002,
- kIOServiceNotifyBlock = 0x00000004
+ kIOServiceNotifyEnable = 0x00000001,
+ kIOServiceNotifyWaiter = 0x00000002,
+ kIOServiceNotifyBlock = 0x00000004
};
-struct _IOServiceNotifierInvocation
-{
- IOThread thread;
- queue_chain_t link;
+struct _IOServiceNotifierInvocation {
+ IOThread thread;
+ queue_chain_t link;
};
class _IOServiceNotifier : public IONotifier
{
- friend class IOService;
+ friend class IOService;
- OSDeclareDefaultStructors(_IOServiceNotifier)
+ OSDeclareDefaultStructors(_IOServiceNotifier);
public:
- OSOrderedSet * whence;
-
- OSDictionary * matching;
- const OSSymbol * type;
- IOServiceMatchingNotificationHandler handler;
- IOServiceNotificationHandler compatHandler;
- void * target;
- void * ref;
- SInt32 priority;
- queue_head_t handlerInvocations;
- IOOptionBits state;
-
- 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();
+ OSOrderedSet * whence;
+
+ OSDictionary * matching;
+ const OSSymbol * type;
+ IOServiceMatchingNotificationHandler handler;
+ IOServiceNotificationHandler compatHandler;
+ void * target;
+ void * ref;
+ SInt32 priority;
+ queue_head_t handlerInvocations;
+ IOOptionBits state;
+
+ 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 class IOService;
+ friend class IOService;
- OSDeclareDefaultStructors(_IOServiceInterestNotifier)
+ OSDeclareDefaultStructors(_IOServiceInterestNotifier);
public:
- queue_chain_t chain;
-
- IOServiceInterestHandler handler;
- void * target;
- void * ref;
- queue_head_t handlerInvocations;
- IOOptionBits state;
-
- 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;
+ queue_chain_t chain;
+
+ IOServiceInterestHandler handler;
+ void * target;
+ void * ref;
+ queue_head_t handlerInvocations;
+ IOOptionBits state;
+
+ 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)
+ 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();
+ 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 class IOService;
+ friend class IOService;
- OSDeclareDefaultStructors(_IOConfigThread)
+ OSDeclareDefaultStructors(_IOConfigThread);
public:
- virtual void free() APPLE_KEXT_OVERRIDE;
-
- static void configThread( void );
- static void main( void * arg, wait_result_t result );
+ static void configThread( int configThreadId );
+ static void main( void * arg, wait_result_t result );
};
enum {
- kMaxConfigThreads = CONFIG_MAX_THREADS,
+ kMaxConfigThreads = CONFIG_MAX_THREADS,
};
enum {
- kMatchNubJob = 10,
+ kMatchNubJob = 10,
};
class _IOServiceJob : public OSObject
{
- friend class IOService;
+ friend class IOService;
- OSDeclareDefaultStructors(_IOServiceJob)
+ OSDeclareDefaultStructors(_IOServiceJob);
public:
- int type;
- IOService * nub;
- IOOptionBits options;
-
- static _IOServiceJob * startJob( IOService * nub, int type,
- IOOptionBits options = 0 );
- static void pingConfig( class _IOServiceJob * job );
+ int type;
+ IOService * nub;
+ IOOptionBits options;
+ static _IOServiceJob * startJob( IOService * nub, int type,
+ IOOptionBits options = 0 );
+ static void pingConfig( class _IOServiceJob * job );
};
class IOResources : public IOService
{
- friend class IOService;
+ friend class IOService;
- OSDeclareDefaultStructors(IOResources)
+ OSDeclareDefaultStructors(IOResources);
public:
- static IOService * resources( void );
- 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;
+ static IOService * resources( void );
+ virtual bool init( OSDictionary * dictionary = NULL ) 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 IOUserResources : public IOService
+{
+ friend class IOService;
+
+ OSDeclareDefaultStructors(IOUserResources);
+
+public:
+ static IOService * resources( void );
+ virtual bool init( OSDictionary * dictionary = NULL ) 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;
};
class _IOOpenServiceIterator : public OSIterator
{
- friend class IOService;
+ friend class IOService;
- OSDeclareDefaultStructors(_IOOpenServiceIterator)
+ OSDeclareDefaultStructors(_IOOpenServiceIterator);
- OSIterator * iter;
- const IOService * client;
- const IOService * provider;
- IOService * last;
+ OSIterator * iter;
+ const IOService * client;
+ const IOService * provider;
+ IOService * last;
public:
- static OSIterator * iterator( OSIterator * _iter,
- const IOService * client,
- const IOService * provider );
- virtual void free() APPLE_KEXT_OVERRIDE;
- virtual void reset() APPLE_KEXT_OVERRIDE;
- virtual bool isValid() APPLE_KEXT_OVERRIDE;
- virtual OSObject * getNextObject() APPLE_KEXT_OVERRIDE;
+ static OSIterator * iterator(LIBKERN_CONSUMED OSIterator * _iter,
+ const IOService * client,
+ const IOService * provider );
+ 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 * gIOConsoleSessionAuditIDKey;
extern const OSSymbol * gIOConsoleSessionOnConsoleKey;
extern const OSSymbol * gIOConsoleSessionSecureInputPIDKey;
(sizeof(IOInterruptSourcePrivate) + sizeof(IOInterruptSource))
#endif /* ! _IOKIT_IOSERVICEPRIVATE_H */
-