@abstract Provides a basis for communication between client applications and I/O Kit objects.
*/
-
class IOUserClient : public IOService
{
OSDeclareAbstractStructors(IOUserClient)
bool reserve();
#ifdef XNU_KERNEL_PRIVATE
+
public:
-#else
-private:
-#endif
OSSet * mappings;
UInt8 sharedInstance;
UInt8 closed;
UInt8 __ipcFinal;
UInt8 __reservedA[1];
volatile SInt32 __ipc;
+ queue_head_t owners;
#if __LP64__
- void * __reserved[7];
+ void * __reserved[5];
#else
- void * __reserved[6];
+ void * __reserved[4];
#endif
+#else /* XNU_KERNEL_PRIVATE */
+private:
+ void * __reserved[9];
+#endif /* XNU_KERNEL_PRIVATE */
+
public:
virtual IOReturn externalMethod( uint32_t selector, IOExternalMethodArguments * arguments,
IOExternalMethodDispatch * dispatch = 0, OSObject * target = 0, void * reference = 0 );
OSMetaClassDeclareReservedUnused(IOUserClient, 15);
#ifdef XNU_KERNEL_PRIVATE
+
/* Available within xnu source only */
public:
static void initialize( void );
task_t task,
IOOptionBits mapFlags = kIOMapAnywhere,
mach_vm_address_t atAddress = 0 );
-#endif
+ IOReturn registerOwner(task_t task);
+ void noMoreSenders(void);
+
+#endif /* XNU_KERNEL_PRIVATE */
protected:
static IOReturn sendAsyncResult(OSAsyncReference reference,