Loading...
--- xnu/xnu-3789.1.32/iokit/Kernel/RootDomainUserClient.cpp
+++ xnu/xnu-4570.71.2/iokit/Kernel/RootDomainUserClient.cpp
@@ -198,7 +198,7 @@
}
IOReturn RootDomainUserClient::secureGetSystemSleepType(
- uint32_t *outSleepType)
+ uint32_t *outSleepType, uint32_t *sleepTimer)
{
int admin_priv = 0;
IOReturn ret;
@@ -207,7 +207,7 @@
admin_priv = (kIOReturnSuccess == ret);
if (admin_priv && fOwner) {
- ret = fOwner->getSystemSleepType(outSleepType);
+ ret = fOwner->getSystemSleepType(outSleepType, sleepTimer);
} else {
ret = kIOReturnNotPrivileged;
}
@@ -216,14 +216,19 @@
IOReturn RootDomainUserClient::clientClose( void )
{
- detach(fOwner);
-
+ terminate();
+
+ return kIOReturnSuccess;
+}
+
+void RootDomainUserClient::stop( IOService *provider)
+{
if(fOwningTask) {
task_deallocate(fOwningTask);
fOwningTask = 0;
}
- return kIOReturnSuccess;
+ super::stop(provider);
}
IOReturn RootDomainUserClient::externalMethod(
@@ -328,10 +333,11 @@
break;
case kPMGetSystemSleepType:
- if (1 == arguments->scalarOutputCount)
+ if (2 == arguments->scalarOutputCount)
{
ret = this->secureGetSystemSleepType(
- (uint32_t *) &arguments->scalarOutput[0]);
+ (uint32_t *) &arguments->scalarOutput[0],
+ (uint32_t *) &arguments->scalarOutput[1]);
}
break;