1368ad365SApple OSS Distributions /* 2186b8fceSApple OSS Distributions * Copyright (c) 1998-2012 Apple Computer, Inc. All rights reserved. 3368ad365SApple OSS Distributions * 4e13b1fa5SApple OSS Distributions * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ 5368ad365SApple OSS Distributions * 6e13b1fa5SApple OSS Distributions * This file contains Original Code and/or Modifications of Original Code 7e13b1fa5SApple OSS Distributions * as defined in and that are subject to the Apple Public Source License 8e13b1fa5SApple OSS Distributions * Version 2.0 (the 'License'). You may not use this file except in 9e13b1fa5SApple OSS Distributions * compliance with the License. The rights granted to you under the License 10e13b1fa5SApple OSS Distributions * may not be used to create, or enable the creation or redistribution of, 11e13b1fa5SApple OSS Distributions * unlawful or unlicensed copies of an Apple operating system, or to 12e13b1fa5SApple OSS Distributions * circumvent, violate, or enable the circumvention or violation of, any 13e13b1fa5SApple OSS Distributions * terms of an Apple operating system software license agreement. 14368ad365SApple OSS Distributions * 15e13b1fa5SApple OSS Distributions * Please obtain a copy of the License at 16e13b1fa5SApple OSS Distributions * http://www.opensource.apple.com/apsl/ and read it before using this file. 17e13b1fa5SApple OSS Distributions * 18e13b1fa5SApple OSS Distributions * The Original Code and all software distributed under the License are 19e13b1fa5SApple OSS Distributions * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 20368ad365SApple OSS Distributions * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 21368ad365SApple OSS Distributions * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 22e13b1fa5SApple OSS Distributions * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 23e13b1fa5SApple OSS Distributions * Please see the License for the specific language governing rights and 24e13b1fa5SApple OSS Distributions * limitations under the License. 25368ad365SApple OSS Distributions * 26e13b1fa5SApple OSS Distributions * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ 27368ad365SApple OSS Distributions */ 28368ad365SApple OSS Distributions /* 29368ad365SApple OSS Distributions * Copyright (c) 1999 Apple Computer, Inc. All rights reserved. 30368ad365SApple OSS Distributions * 31368ad365SApple OSS Distributions */ 32368ad365SApple OSS Distributions 33368ad365SApple OSS Distributions #include <IOKit/assert.h> 34368ad365SApple OSS Distributions #include <IOKit/IOLib.h> 35e13b1fa5SApple OSS Distributions #include <IOKit/IOKitKeys.h> 36368ad365SApple OSS Distributions #include <IOKit/IOBufferMemoryDescriptor.h> 37368ad365SApple OSS Distributions #include "RootDomainUserClient.h" 38368ad365SApple OSS Distributions #include <IOKit/pwr_mgt/IOPMLibDefs.h> 39d0c1fef6SApple OSS Distributions #include <IOKit/pwr_mgt/IOPMPrivate.h> 40186b8fceSApple OSS Distributions #include <sys/proc.h> 41368ad365SApple OSS Distributions 42368ad365SApple OSS Distributions #define super IOUserClient 43368ad365SApple OSS Distributions 44368ad365SApple OSS Distributions /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 45368ad365SApple OSS Distributions 46368ad365SApple OSS Distributions OSDefineMetaClassAndStructors(RootDomainUserClient, IOUserClient) 47368ad365SApple OSS Distributions 48368ad365SApple OSS Distributions /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 49368ad365SApple OSS Distributions 50e13b1fa5SApple OSS Distributions bool RootDomainUserClient::initWithTask(task_t owningTask, void *security_id, 51e13b1fa5SApple OSS Distributions UInt32 type, OSDictionary * properties) 5214e3d835SApple OSS Distributions { 53e13b1fa5SApple OSS Distributions if (properties) 54e13b1fa5SApple OSS Distributions properties->setObject(kIOUserClientCrossEndianCompatibleKey, kOSBooleanTrue); 55e13b1fa5SApple OSS Distributions 56e13b1fa5SApple OSS Distributions if (!super::initWithTask(owningTask, security_id, type, properties)) 5714e3d835SApple OSS Distributions return false; 5814e3d835SApple OSS Distributions 5914e3d835SApple OSS Distributions fOwningTask = owningTask; 6014e3d835SApple OSS Distributions task_reference (fOwningTask); 6114e3d835SApple OSS Distributions return true; 6214e3d835SApple OSS Distributions } 6314e3d835SApple OSS Distributions 6414e3d835SApple OSS Distributions 65368ad365SApple OSS Distributions bool RootDomainUserClient::start( IOService * provider ) 66368ad365SApple OSS Distributions { 67368ad365SApple OSS Distributions assert(OSDynamicCast(IOPMrootDomain, provider)); 68368ad365SApple OSS Distributions if(!super::start(provider)) 69368ad365SApple OSS Distributions return false; 70368ad365SApple OSS Distributions fOwner = (IOPMrootDomain *)provider; 71368ad365SApple OSS Distributions 72368ad365SApple OSS Distributions 73368ad365SApple OSS Distributions return true; 74368ad365SApple OSS Distributions } 75368ad365SApple OSS Distributions 76e13b1fa5SApple OSS Distributions IOReturn RootDomainUserClient::secureSleepSystem( uint32_t *return_code ) 7714e3d835SApple OSS Distributions { 78855239e5SApple OSS Distributions return secureSleepSystemOptions(NULL, 0, return_code); 79e13b1fa5SApple OSS Distributions } 80e13b1fa5SApple OSS Distributions 81e13b1fa5SApple OSS Distributions IOReturn RootDomainUserClient::secureSleepSystemOptions( 82855239e5SApple OSS Distributions const void *inOptions, 83186b8fceSApple OSS Distributions IOByteCount inOptionsSize, 84855239e5SApple OSS Distributions uint32_t *returnCode) 85e13b1fa5SApple OSS Distributions { 86e13b1fa5SApple OSS Distributions 8714e3d835SApple OSS Distributions int local_priv = 0; 8814e3d835SApple OSS Distributions int admin_priv = 0; 8914e3d835SApple OSS Distributions IOReturn ret = kIOReturnNotPrivileged; 90e13b1fa5SApple OSS Distributions OSDictionary *unserializedOptions = NULL; 91e13b1fa5SApple OSS Distributions OSString *unserializeErrorString = NULL; 9214e3d835SApple OSS Distributions 9314e3d835SApple OSS Distributions ret = clientHasPrivilege(fOwningTask, kIOClientPrivilegeLocalUser); 9414e3d835SApple OSS Distributions local_priv = (kIOReturnSuccess == ret); 9514e3d835SApple OSS Distributions 9614e3d835SApple OSS Distributions ret = clientHasPrivilege(fOwningTask, kIOClientPrivilegeAdministrator); 9714e3d835SApple OSS Distributions admin_priv = (kIOReturnSuccess == ret); 9814e3d835SApple OSS Distributions 99e13b1fa5SApple OSS Distributions 100e13b1fa5SApple OSS Distributions if (inOptions) 101e13b1fa5SApple OSS Distributions { 102e13b1fa5SApple OSS Distributions unserializedOptions = OSDynamicCast( OSDictionary, 103186b8fceSApple OSS Distributions OSUnserializeXML((const char *)inOptions, inOptionsSize, &unserializeErrorString)); 104e13b1fa5SApple OSS Distributions 105e13b1fa5SApple OSS Distributions if (!unserializedOptions) { 106e13b1fa5SApple OSS Distributions IOLog("IOPMRootDomain SleepSystem unserialization failure: %s\n", 107e13b1fa5SApple OSS Distributions unserializeErrorString ? unserializeErrorString->getCStringNoCopy() : "Unknown"); 108e13b1fa5SApple OSS Distributions } 10914e3d835SApple OSS Distributions } 11014e3d835SApple OSS Distributions 111186b8fceSApple OSS Distributions if ( (local_priv || admin_priv) && fOwner ) 112e13b1fa5SApple OSS Distributions { 113186b8fceSApple OSS Distributions proc_t p; 114186b8fceSApple OSS Distributions p = (proc_t)get_bsdtask_info(fOwningTask); 115186b8fceSApple OSS Distributions if (p) { 116186b8fceSApple OSS Distributions fOwner->setProperty("SleepRequestedByPID", proc_pid(p), 32); 117186b8fceSApple OSS Distributions } 118186b8fceSApple OSS Distributions 119e13b1fa5SApple OSS Distributions if (unserializedOptions) 120e13b1fa5SApple OSS Distributions { 121e13b1fa5SApple OSS Distributions // Publish Sleep Options in registry under root_domain 122e13b1fa5SApple OSS Distributions fOwner->setProperty( kRootDomainSleepOptionsKey, unserializedOptions); 123e13b1fa5SApple OSS Distributions 124e13b1fa5SApple OSS Distributions *returnCode = fOwner->sleepSystemOptions( unserializedOptions ); 125e13b1fa5SApple OSS Distributions 126e13b1fa5SApple OSS Distributions unserializedOptions->release(); 127e13b1fa5SApple OSS Distributions } else { 128e13b1fa5SApple OSS Distributions // No options 129e13b1fa5SApple OSS Distributions // Clear any pre-existing options 130e13b1fa5SApple OSS Distributions fOwner->removeProperty( kRootDomainSleepOptionsKey ); 131e13b1fa5SApple OSS Distributions 132e13b1fa5SApple OSS Distributions *returnCode = fOwner->sleepSystemOptions( NULL ); 133e13b1fa5SApple OSS Distributions } 134e13b1fa5SApple OSS Distributions 135e13b1fa5SApple OSS Distributions } else { 136e13b1fa5SApple OSS Distributions *returnCode = kIOReturnNotPrivileged; 137e13b1fa5SApple OSS Distributions } 138e13b1fa5SApple OSS Distributions 139e13b1fa5SApple OSS Distributions return kIOReturnSuccess; 14014e3d835SApple OSS Distributions } 14114e3d835SApple OSS Distributions 14214e3d835SApple OSS Distributions IOReturn RootDomainUserClient::secureSetAggressiveness( 14314e3d835SApple OSS Distributions unsigned long type, 14414e3d835SApple OSS Distributions unsigned long newLevel, 14514e3d835SApple OSS Distributions int *return_code ) 14614e3d835SApple OSS Distributions { 14714e3d835SApple OSS Distributions int local_priv = 0; 14814e3d835SApple OSS Distributions int admin_priv = 0; 14914e3d835SApple OSS Distributions IOReturn ret = kIOReturnNotPrivileged; 15014e3d835SApple OSS Distributions 15114e3d835SApple OSS Distributions ret = clientHasPrivilege(fOwningTask, kIOClientPrivilegeLocalUser); 15214e3d835SApple OSS Distributions local_priv = (kIOReturnSuccess == ret); 15314e3d835SApple OSS Distributions 15414e3d835SApple OSS Distributions ret = clientHasPrivilege(fOwningTask, kIOClientPrivilegeAdministrator); 15514e3d835SApple OSS Distributions admin_priv = (kIOReturnSuccess == ret); 15614e3d835SApple OSS Distributions 15714e3d835SApple OSS Distributions if((local_priv || admin_priv) && fOwner) { 15814e3d835SApple OSS Distributions *return_code = fOwner->setAggressiveness(type, newLevel); 15914e3d835SApple OSS Distributions } else { 16014e3d835SApple OSS Distributions *return_code = kIOReturnNotPrivileged; 16114e3d835SApple OSS Distributions } 162855239e5SApple OSS Distributions return kIOReturnSuccess; 16314e3d835SApple OSS Distributions } 16414e3d835SApple OSS Distributions 1653ca3bd55SApple OSS Distributions IOReturn RootDomainUserClient::secureSetMaintenanceWakeCalendar( 166855239e5SApple OSS Distributions IOPMCalendarStruct *inCalendar, 167855239e5SApple OSS Distributions uint32_t *returnCode) 1683ca3bd55SApple OSS Distributions { 1693ca3bd55SApple OSS Distributions int admin_priv = 0; 1703ca3bd55SApple OSS Distributions IOReturn ret = kIOReturnNotPrivileged; 1713ca3bd55SApple OSS Distributions 1723ca3bd55SApple OSS Distributions ret = clientHasPrivilege(fOwningTask, kIOClientPrivilegeAdministrator); 1733ca3bd55SApple OSS Distributions admin_priv = (kIOReturnSuccess == ret); 1743ca3bd55SApple OSS Distributions 1753ca3bd55SApple OSS Distributions if (admin_priv && fOwner) { 1763ca3bd55SApple OSS Distributions *returnCode = fOwner->setMaintenanceWakeCalendar(inCalendar); 1773ca3bd55SApple OSS Distributions } else { 1783ca3bd55SApple OSS Distributions *returnCode = kIOReturnNotPrivileged; 179855239e5SApple OSS Distributions } 1803ca3bd55SApple OSS Distributions return kIOReturnSuccess; 1813ca3bd55SApple OSS Distributions } 182855239e5SApple OSS Distributions 183855239e5SApple OSS Distributions IOReturn RootDomainUserClient::secureSetUserAssertionLevels( 184855239e5SApple OSS Distributions uint32_t assertionBitfield) 185855239e5SApple OSS Distributions { 186855239e5SApple OSS Distributions int admin_priv = 0; 187855239e5SApple OSS Distributions IOReturn ret = kIOReturnNotPrivileged; 188855239e5SApple OSS Distributions 189855239e5SApple OSS Distributions ret = clientHasPrivilege(fOwningTask, kIOClientPrivilegeAdministrator); 190855239e5SApple OSS Distributions admin_priv = (kIOReturnSuccess == ret); 191855239e5SApple OSS Distributions 192855239e5SApple OSS Distributions if (admin_priv && fOwner) { 193855239e5SApple OSS Distributions ret = fOwner->setPMAssertionUserLevels(assertionBitfield); 194855239e5SApple OSS Distributions } else { 195855239e5SApple OSS Distributions ret = kIOReturnNotPrivileged; 196855239e5SApple OSS Distributions } 197855239e5SApple OSS Distributions return kIOReturnSuccess; 1983ca3bd55SApple OSS Distributions } 199368ad365SApple OSS Distributions 200186b8fceSApple OSS Distributions IOReturn RootDomainUserClient::secureGetSystemSleepType( 201186b8fceSApple OSS Distributions uint32_t *outSleepType) 202186b8fceSApple OSS Distributions { 203186b8fceSApple OSS Distributions int admin_priv = 0; 204186b8fceSApple OSS Distributions IOReturn ret; 205186b8fceSApple OSS Distributions 206186b8fceSApple OSS Distributions ret = clientHasPrivilege(fOwningTask, kIOClientPrivilegeAdministrator); 207186b8fceSApple OSS Distributions admin_priv = (kIOReturnSuccess == ret); 208186b8fceSApple OSS Distributions 209186b8fceSApple OSS Distributions if (admin_priv && fOwner) { 210186b8fceSApple OSS Distributions ret = fOwner->getSystemSleepType(outSleepType); 211186b8fceSApple OSS Distributions } else { 212186b8fceSApple OSS Distributions ret = kIOReturnNotPrivileged; 213186b8fceSApple OSS Distributions } 214186b8fceSApple OSS Distributions return ret; 215186b8fceSApple OSS Distributions } 216186b8fceSApple OSS Distributions 217368ad365SApple OSS Distributions IOReturn RootDomainUserClient::clientClose( void ) 218368ad365SApple OSS Distributions { 219368ad365SApple OSS Distributions detach(fOwner); 22014e3d835SApple OSS Distributions 22114e3d835SApple OSS Distributions if(fOwningTask) { 22214e3d835SApple OSS Distributions task_deallocate(fOwningTask); 22314e3d835SApple OSS Distributions fOwningTask = 0; 22414e3d835SApple OSS Distributions } 22514e3d835SApple OSS Distributions 226368ad365SApple OSS Distributions return kIOReturnSuccess; 227368ad365SApple OSS Distributions } 228368ad365SApple OSS Distributions 229855239e5SApple OSS Distributions IOReturn RootDomainUserClient::externalMethod( 230855239e5SApple OSS Distributions uint32_t selector, 231855239e5SApple OSS Distributions IOExternalMethodArguments * arguments, 232855239e5SApple OSS Distributions IOExternalMethodDispatch * dispatch __unused, 233855239e5SApple OSS Distributions OSObject * target __unused, 234855239e5SApple OSS Distributions void * reference __unused ) 235855239e5SApple OSS Distributions { 236855239e5SApple OSS Distributions IOReturn ret = kIOReturnBadArgument; 237855239e5SApple OSS Distributions 238855239e5SApple OSS Distributions switch (selector) 239855239e5SApple OSS Distributions { 240855239e5SApple OSS Distributions case kPMSetAggressiveness: 241855239e5SApple OSS Distributions if ((2 == arguments->scalarInputCount) 242855239e5SApple OSS Distributions && (1 == arguments->scalarOutputCount)) 243855239e5SApple OSS Distributions { 244855239e5SApple OSS Distributions ret = this->secureSetAggressiveness( 245855239e5SApple OSS Distributions (unsigned long)arguments->scalarInput[0], 246855239e5SApple OSS Distributions (unsigned long)arguments->scalarInput[1], 247855239e5SApple OSS Distributions (int *)&arguments->scalarOutput[0]); 248855239e5SApple OSS Distributions } 249855239e5SApple OSS Distributions break; 250855239e5SApple OSS Distributions 251855239e5SApple OSS Distributions case kPMGetAggressiveness: 252855239e5SApple OSS Distributions if ((1 == arguments->scalarInputCount) 253855239e5SApple OSS Distributions && (1 == arguments->scalarOutputCount)) 254855239e5SApple OSS Distributions { 255855239e5SApple OSS Distributions ret = fOwner->getAggressiveness( 256855239e5SApple OSS Distributions (unsigned long)arguments->scalarInput[0], 257855239e5SApple OSS Distributions (unsigned long *)&arguments->scalarOutput[0]); 258855239e5SApple OSS Distributions } 259855239e5SApple OSS Distributions break; 260855239e5SApple OSS Distributions 261855239e5SApple OSS Distributions case kPMSleepSystem: 262855239e5SApple OSS Distributions if (1 == arguments->scalarOutputCount) 263855239e5SApple OSS Distributions { 264855239e5SApple OSS Distributions ret = this->secureSleepSystem( 265855239e5SApple OSS Distributions (uint32_t *)&arguments->scalarOutput[0]); 266855239e5SApple OSS Distributions } 267855239e5SApple OSS Distributions break; 268855239e5SApple OSS Distributions 269855239e5SApple OSS Distributions case kPMAllowPowerChange: 270855239e5SApple OSS Distributions if (1 == arguments->scalarInputCount) 271855239e5SApple OSS Distributions { 272855239e5SApple OSS Distributions ret = fOwner->allowPowerChange( 273855239e5SApple OSS Distributions arguments->scalarInput[0]); 274855239e5SApple OSS Distributions } 275855239e5SApple OSS Distributions break; 276855239e5SApple OSS Distributions 277855239e5SApple OSS Distributions case kPMCancelPowerChange: 278855239e5SApple OSS Distributions if (1 == arguments->scalarInputCount) 279855239e5SApple OSS Distributions { 280855239e5SApple OSS Distributions ret = fOwner->cancelPowerChange( 281855239e5SApple OSS Distributions arguments->scalarInput[0]); 282855239e5SApple OSS Distributions } 283855239e5SApple OSS Distributions break; 284855239e5SApple OSS Distributions 285855239e5SApple OSS Distributions case kPMShutdownSystem: 286855239e5SApple OSS Distributions // deperecated interface 287855239e5SApple OSS Distributions ret = kIOReturnUnsupported; 288855239e5SApple OSS Distributions break; 289855239e5SApple OSS Distributions 290855239e5SApple OSS Distributions case kPMRestartSystem: 291855239e5SApple OSS Distributions // deperecated interface 292855239e5SApple OSS Distributions ret = kIOReturnUnsupported; 293855239e5SApple OSS Distributions break; 294855239e5SApple OSS Distributions 295855239e5SApple OSS Distributions case kPMSleepSystemOptions: 296855239e5SApple OSS Distributions ret = this->secureSleepSystemOptions( 297855239e5SApple OSS Distributions arguments->structureInput, 298855239e5SApple OSS Distributions arguments->structureInputSize, 299855239e5SApple OSS Distributions (uint32_t *)&arguments->scalarOutput[0]); 300855239e5SApple OSS Distributions break; 301855239e5SApple OSS Distributions case kPMSetMaintenanceWakeCalendar: 302855239e5SApple OSS Distributions ret = this->secureSetMaintenanceWakeCalendar( 303855239e5SApple OSS Distributions (IOPMCalendarStruct *)arguments->structureInput, 304855239e5SApple OSS Distributions (uint32_t *)&arguments->structureOutput); 305855239e5SApple OSS Distributions arguments->structureOutputSize = sizeof(uint32_t); 306855239e5SApple OSS Distributions break; 307855239e5SApple OSS Distributions 308855239e5SApple OSS Distributions case kPMSetUserAssertionLevels: 309855239e5SApple OSS Distributions ret = this->secureSetUserAssertionLevels( 310855239e5SApple OSS Distributions (uint32_t)arguments->scalarInput[0]); 311855239e5SApple OSS Distributions break; 312855239e5SApple OSS Distributions 313d0c1fef6SApple OSS Distributions case kPMActivityTickle: 314186b8fceSApple OSS Distributions if ( fOwner->checkSystemCanSustainFullWake() ) 315186b8fceSApple OSS Distributions { 316d0c1fef6SApple OSS Distributions fOwner->reportUserInput( ); 317d0c1fef6SApple OSS Distributions fOwner->setProperty(kIOPMRootDomainWakeTypeKey, "UserActivity Assertion"); 318186b8fceSApple OSS Distributions } 319d0c1fef6SApple OSS Distributions ret = kIOReturnSuccess; 320d0c1fef6SApple OSS Distributions break; 321d0c1fef6SApple OSS Distributions 322186b8fceSApple OSS Distributions case kPMSetClamshellSleepState: 323186b8fceSApple OSS Distributions fOwner->setDisableClamShellSleep(arguments->scalarInput[0] ? true : false); 324186b8fceSApple OSS Distributions ret = kIOReturnSuccess; 325186b8fceSApple OSS Distributions break; 326186b8fceSApple OSS Distributions 327186b8fceSApple OSS Distributions case kPMGetSystemSleepType: 328186b8fceSApple OSS Distributions if (1 == arguments->scalarOutputCount) 329186b8fceSApple OSS Distributions { 330186b8fceSApple OSS Distributions ret = this->secureGetSystemSleepType( 331186b8fceSApple OSS Distributions (uint32_t *) &arguments->scalarOutput[0]); 332186b8fceSApple OSS Distributions } 333186b8fceSApple OSS Distributions break; 334186b8fceSApple OSS Distributions 335*a3bb9fccSApple OSS Distributions #if defined(__i386__) || defined(__x86_64__) 336186b8fceSApple OSS Distributions case kPMSleepWakeWatchdogEnable: 337186b8fceSApple OSS Distributions ret = clientHasPrivilege(fOwningTask, kIOClientPrivilegeAdministrator); 338186b8fceSApple OSS Distributions if (ret == kIOReturnSuccess) 339186b8fceSApple OSS Distributions fOwner->sleepWakeDebugEnableWdog(); 340186b8fceSApple OSS Distributions break; 341186b8fceSApple OSS Distributions 342186b8fceSApple OSS Distributions 343186b8fceSApple OSS Distributions case kPMSleepWakeDebugTrig: 344186b8fceSApple OSS Distributions ret = clientHasPrivilege(fOwningTask, kIOClientPrivilegeAdministrator); 345186b8fceSApple OSS Distributions if (ret == kIOReturnSuccess) 346186b8fceSApple OSS Distributions fOwner->sleepWakeDebugTrig(false); 347186b8fceSApple OSS Distributions break; 348*a3bb9fccSApple OSS Distributions #endif 349186b8fceSApple OSS Distributions 350186b8fceSApple OSS Distributions case kPMSetDisplayPowerOn: 351186b8fceSApple OSS Distributions if (1 == arguments->scalarInputCount) 352186b8fceSApple OSS Distributions { 353186b8fceSApple OSS Distributions ret = clientHasPrivilege(fOwningTask, kIOClientPrivilegeAdministrator); 354186b8fceSApple OSS Distributions if (ret == kIOReturnSuccess) 355186b8fceSApple OSS Distributions fOwner->setDisplayPowerOn((uint32_t)arguments->scalarInput[0]); 356186b8fceSApple OSS Distributions } 357186b8fceSApple OSS Distributions break; 358855239e5SApple OSS Distributions 359855239e5SApple OSS Distributions default: 360855239e5SApple OSS Distributions // bad selector 361855239e5SApple OSS Distributions return kIOReturnBadArgument; 362855239e5SApple OSS Distributions } 363855239e5SApple OSS Distributions 364855239e5SApple OSS Distributions return ret; 365855239e5SApple OSS Distributions } 366855239e5SApple OSS Distributions 367855239e5SApple OSS Distributions /* getTargetAndMethodForIndex 368855239e5SApple OSS Distributions * Not used. We prefer to use externalMethod() for user client invocations. 369855239e5SApple OSS Distributions * We maintain getTargetAndExternalMethod since it's an exported symbol, 370855239e5SApple OSS Distributions * and only for that reason. 371855239e5SApple OSS Distributions */ 372855239e5SApple OSS Distributions IOExternalMethod * RootDomainUserClient::getTargetAndMethodForIndex( 373855239e5SApple OSS Distributions IOService ** targetP, UInt32 index ) 374855239e5SApple OSS Distributions { 375855239e5SApple OSS Distributions // DO NOT EDIT 376855239e5SApple OSS Distributions return super::getTargetAndMethodForIndex(targetP, index); 377855239e5SApple OSS Distributions } 378855239e5SApple OSS Distributions 379855239e5SApple OSS Distributions /* setPreventative 380855239e5SApple OSS Distributions * Does nothing. Exists only for exported symbol compatibility. 381855239e5SApple OSS Distributions */ 382368ad365SApple OSS Distributions void 383368ad365SApple OSS Distributions RootDomainUserClient::setPreventative(UInt32 on_off, UInt32 types_of_sleep) 384855239e5SApple OSS Distributions { return; } // DO NOT EDIT 385