1368ad365SApple OSS Distributions /* 2368ad365SApple OSS Distributions * Copyright (c) 1998-2000 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> 39368ad365SApple OSS Distributions 40368ad365SApple OSS Distributions #define super IOUserClient 41368ad365SApple OSS Distributions 42368ad365SApple OSS Distributions /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 43368ad365SApple OSS Distributions 44368ad365SApple OSS Distributions OSDefineMetaClassAndStructors(RootDomainUserClient, IOUserClient) 45368ad365SApple OSS Distributions 46368ad365SApple OSS Distributions /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 47368ad365SApple OSS Distributions 48e13b1fa5SApple OSS Distributions bool RootDomainUserClient::initWithTask(task_t owningTask, void *security_id, 49e13b1fa5SApple OSS Distributions UInt32 type, OSDictionary * properties) 5014e3d835SApple OSS Distributions { 51e13b1fa5SApple OSS Distributions if (properties) 52e13b1fa5SApple OSS Distributions properties->setObject(kIOUserClientCrossEndianCompatibleKey, kOSBooleanTrue); 53e13b1fa5SApple OSS Distributions 54e13b1fa5SApple OSS Distributions if (!super::initWithTask(owningTask, security_id, type, properties)) 5514e3d835SApple OSS Distributions return false; 5614e3d835SApple OSS Distributions 5714e3d835SApple OSS Distributions fOwningTask = owningTask; 5814e3d835SApple OSS Distributions task_reference (fOwningTask); 5914e3d835SApple OSS Distributions return true; 6014e3d835SApple OSS Distributions } 6114e3d835SApple OSS Distributions 6214e3d835SApple OSS Distributions 63368ad365SApple OSS Distributions bool RootDomainUserClient::start( IOService * provider ) 64368ad365SApple OSS Distributions { 65368ad365SApple OSS Distributions assert(OSDynamicCast(IOPMrootDomain, provider)); 66368ad365SApple OSS Distributions if(!super::start(provider)) 67368ad365SApple OSS Distributions return false; 68368ad365SApple OSS Distributions fOwner = (IOPMrootDomain *)provider; 69368ad365SApple OSS Distributions 70368ad365SApple OSS Distributions 71368ad365SApple OSS Distributions return true; 72368ad365SApple OSS Distributions } 73368ad365SApple OSS Distributions 74e13b1fa5SApple OSS Distributions IOReturn RootDomainUserClient::secureSleepSystem( uint32_t *return_code ) 7514e3d835SApple OSS Distributions { 76*855239e5SApple OSS Distributions return secureSleepSystemOptions(NULL, 0, return_code); 77e13b1fa5SApple OSS Distributions } 78e13b1fa5SApple OSS Distributions 79e13b1fa5SApple OSS Distributions IOReturn RootDomainUserClient::secureSleepSystemOptions( 80*855239e5SApple OSS Distributions const void *inOptions, 81*855239e5SApple OSS Distributions IOByteCount inOptionsSize __unused, 82*855239e5SApple OSS Distributions uint32_t *returnCode) 83e13b1fa5SApple OSS Distributions { 84e13b1fa5SApple OSS Distributions 8514e3d835SApple OSS Distributions int local_priv = 0; 8614e3d835SApple OSS Distributions int admin_priv = 0; 8714e3d835SApple OSS Distributions IOReturn ret = kIOReturnNotPrivileged; 88e13b1fa5SApple OSS Distributions OSDictionary *unserializedOptions = NULL; 89e13b1fa5SApple OSS Distributions OSString *unserializeErrorString = NULL; 9014e3d835SApple OSS Distributions 9114e3d835SApple OSS Distributions ret = clientHasPrivilege(fOwningTask, kIOClientPrivilegeLocalUser); 9214e3d835SApple OSS Distributions local_priv = (kIOReturnSuccess == ret); 9314e3d835SApple OSS Distributions 9414e3d835SApple OSS Distributions ret = clientHasPrivilege(fOwningTask, kIOClientPrivilegeAdministrator); 9514e3d835SApple OSS Distributions admin_priv = (kIOReturnSuccess == ret); 9614e3d835SApple OSS Distributions 97e13b1fa5SApple OSS Distributions 98e13b1fa5SApple OSS Distributions if (inOptions) 99e13b1fa5SApple OSS Distributions { 100e13b1fa5SApple OSS Distributions unserializedOptions = OSDynamicCast( OSDictionary, 101e13b1fa5SApple OSS Distributions OSUnserializeXML((const char *)inOptions, &unserializeErrorString)); 102e13b1fa5SApple OSS Distributions 103e13b1fa5SApple OSS Distributions if (!unserializedOptions) { 104e13b1fa5SApple OSS Distributions IOLog("IOPMRootDomain SleepSystem unserialization failure: %s\n", 105e13b1fa5SApple OSS Distributions unserializeErrorString ? unserializeErrorString->getCStringNoCopy() : "Unknown"); 106e13b1fa5SApple OSS Distributions } 10714e3d835SApple OSS Distributions } 10814e3d835SApple OSS Distributions 109e13b1fa5SApple OSS Distributions if ( (local_priv || admin_priv) 110e13b1fa5SApple OSS Distributions && fOwner ) 111e13b1fa5SApple OSS Distributions { 112e13b1fa5SApple OSS Distributions if (unserializedOptions) 113e13b1fa5SApple OSS Distributions { 114e13b1fa5SApple OSS Distributions // Publish Sleep Options in registry under root_domain 115e13b1fa5SApple OSS Distributions fOwner->setProperty( kRootDomainSleepOptionsKey, unserializedOptions); 116e13b1fa5SApple OSS Distributions 117e13b1fa5SApple OSS Distributions *returnCode = fOwner->sleepSystemOptions( unserializedOptions ); 118e13b1fa5SApple OSS Distributions 119e13b1fa5SApple OSS Distributions unserializedOptions->release(); 120e13b1fa5SApple OSS Distributions } else { 121e13b1fa5SApple OSS Distributions // No options 122e13b1fa5SApple OSS Distributions // Clear any pre-existing options 123e13b1fa5SApple OSS Distributions fOwner->removeProperty( kRootDomainSleepOptionsKey ); 124e13b1fa5SApple OSS Distributions 125e13b1fa5SApple OSS Distributions *returnCode = fOwner->sleepSystemOptions( NULL ); 126e13b1fa5SApple OSS Distributions } 127e13b1fa5SApple OSS Distributions 128e13b1fa5SApple OSS Distributions } else { 129e13b1fa5SApple OSS Distributions *returnCode = kIOReturnNotPrivileged; 130e13b1fa5SApple OSS Distributions } 131e13b1fa5SApple OSS Distributions 132e13b1fa5SApple OSS Distributions return kIOReturnSuccess; 13314e3d835SApple OSS Distributions } 13414e3d835SApple OSS Distributions 13514e3d835SApple OSS Distributions IOReturn RootDomainUserClient::secureSetAggressiveness( 13614e3d835SApple OSS Distributions unsigned long type, 13714e3d835SApple OSS Distributions unsigned long newLevel, 13814e3d835SApple OSS Distributions int *return_code ) 13914e3d835SApple OSS Distributions { 14014e3d835SApple OSS Distributions int local_priv = 0; 14114e3d835SApple OSS Distributions int admin_priv = 0; 14214e3d835SApple OSS Distributions IOReturn ret = kIOReturnNotPrivileged; 14314e3d835SApple OSS Distributions 14414e3d835SApple OSS Distributions ret = clientHasPrivilege(fOwningTask, kIOClientPrivilegeLocalUser); 14514e3d835SApple OSS Distributions local_priv = (kIOReturnSuccess == ret); 14614e3d835SApple OSS Distributions 14714e3d835SApple OSS Distributions ret = clientHasPrivilege(fOwningTask, kIOClientPrivilegeAdministrator); 14814e3d835SApple OSS Distributions admin_priv = (kIOReturnSuccess == ret); 14914e3d835SApple OSS Distributions 15014e3d835SApple OSS Distributions if((local_priv || admin_priv) && fOwner) { 15114e3d835SApple OSS Distributions *return_code = fOwner->setAggressiveness(type, newLevel); 15214e3d835SApple OSS Distributions } else { 15314e3d835SApple OSS Distributions *return_code = kIOReturnNotPrivileged; 15414e3d835SApple OSS Distributions } 155*855239e5SApple OSS Distributions return kIOReturnSuccess; 15614e3d835SApple OSS Distributions } 15714e3d835SApple OSS Distributions 1583ca3bd55SApple OSS Distributions IOReturn RootDomainUserClient::secureSetMaintenanceWakeCalendar( 159*855239e5SApple OSS Distributions IOPMCalendarStruct *inCalendar, 160*855239e5SApple OSS Distributions uint32_t *returnCode) 1613ca3bd55SApple OSS Distributions { 1623ca3bd55SApple OSS Distributions int admin_priv = 0; 1633ca3bd55SApple OSS Distributions IOReturn ret = kIOReturnNotPrivileged; 1643ca3bd55SApple OSS Distributions 1653ca3bd55SApple OSS Distributions ret = clientHasPrivilege(fOwningTask, kIOClientPrivilegeAdministrator); 1663ca3bd55SApple OSS Distributions admin_priv = (kIOReturnSuccess == ret); 1673ca3bd55SApple OSS Distributions 1683ca3bd55SApple OSS Distributions if (admin_priv && fOwner) { 1693ca3bd55SApple OSS Distributions *returnCode = fOwner->setMaintenanceWakeCalendar(inCalendar); 1703ca3bd55SApple OSS Distributions } else { 1713ca3bd55SApple OSS Distributions *returnCode = kIOReturnNotPrivileged; 172*855239e5SApple OSS Distributions } 1733ca3bd55SApple OSS Distributions return kIOReturnSuccess; 1743ca3bd55SApple OSS Distributions } 175*855239e5SApple OSS Distributions 176*855239e5SApple OSS Distributions IOReturn RootDomainUserClient::secureSetUserAssertionLevels( 177*855239e5SApple OSS Distributions uint32_t assertionBitfield) 178*855239e5SApple OSS Distributions { 179*855239e5SApple OSS Distributions int admin_priv = 0; 180*855239e5SApple OSS Distributions IOReturn ret = kIOReturnNotPrivileged; 181*855239e5SApple OSS Distributions 182*855239e5SApple OSS Distributions ret = clientHasPrivilege(fOwningTask, kIOClientPrivilegeAdministrator); 183*855239e5SApple OSS Distributions admin_priv = (kIOReturnSuccess == ret); 184*855239e5SApple OSS Distributions 185*855239e5SApple OSS Distributions if (admin_priv && fOwner) { 186*855239e5SApple OSS Distributions ret = fOwner->setPMAssertionUserLevels(assertionBitfield); 187*855239e5SApple OSS Distributions } else { 188*855239e5SApple OSS Distributions ret = kIOReturnNotPrivileged; 189*855239e5SApple OSS Distributions } 190*855239e5SApple OSS Distributions return kIOReturnSuccess; 1913ca3bd55SApple OSS Distributions } 192368ad365SApple OSS Distributions 193368ad365SApple OSS Distributions IOReturn RootDomainUserClient::clientClose( void ) 194368ad365SApple OSS Distributions { 195368ad365SApple OSS Distributions detach(fOwner); 19614e3d835SApple OSS Distributions 19714e3d835SApple OSS Distributions if(fOwningTask) { 19814e3d835SApple OSS Distributions task_deallocate(fOwningTask); 19914e3d835SApple OSS Distributions fOwningTask = 0; 20014e3d835SApple OSS Distributions } 20114e3d835SApple OSS Distributions 202368ad365SApple OSS Distributions return kIOReturnSuccess; 203368ad365SApple OSS Distributions } 204368ad365SApple OSS Distributions 205*855239e5SApple OSS Distributions IOReturn RootDomainUserClient::clientMemoryForType( 206*855239e5SApple OSS Distributions UInt32 type, 207*855239e5SApple OSS Distributions IOOptionBits *options, 208*855239e5SApple OSS Distributions IOMemoryDescriptor ** memory) 209368ad365SApple OSS Distributions { 210*855239e5SApple OSS Distributions if (!fOwner) 211*855239e5SApple OSS Distributions return kIOReturnNotReady; 212e13b1fa5SApple OSS Distributions 213*855239e5SApple OSS Distributions if (kPMRootDomainMapTraceBuffer == type) 214e13b1fa5SApple OSS Distributions { 215*855239e5SApple OSS Distributions *memory = fOwner->getPMTraceMemoryDescriptor(); 216*855239e5SApple OSS Distributions if (*memory) { 217*855239e5SApple OSS Distributions (*memory)->retain(); 218*855239e5SApple OSS Distributions *options = 0; 219*855239e5SApple OSS Distributions return kIOReturnSuccess; 220*855239e5SApple OSS Distributions } else { 221*855239e5SApple OSS Distributions return kIOReturnNotFound; 222368ad365SApple OSS Distributions } 223368ad365SApple OSS Distributions 224*855239e5SApple OSS Distributions } 225*855239e5SApple OSS Distributions return kIOReturnUnsupported; 226*855239e5SApple OSS Distributions } 227*855239e5SApple OSS Distributions 228*855239e5SApple OSS Distributions IOReturn RootDomainUserClient::externalMethod( 229*855239e5SApple OSS Distributions uint32_t selector, 230*855239e5SApple OSS Distributions IOExternalMethodArguments * arguments, 231*855239e5SApple OSS Distributions IOExternalMethodDispatch * dispatch __unused, 232*855239e5SApple OSS Distributions OSObject * target __unused, 233*855239e5SApple OSS Distributions void * reference __unused ) 234*855239e5SApple OSS Distributions { 235*855239e5SApple OSS Distributions IOReturn ret = kIOReturnBadArgument; 236*855239e5SApple OSS Distributions 237*855239e5SApple OSS Distributions switch (selector) 238*855239e5SApple OSS Distributions { 239*855239e5SApple OSS Distributions case kPMSetAggressiveness: 240*855239e5SApple OSS Distributions if ((2 == arguments->scalarInputCount) 241*855239e5SApple OSS Distributions && (1 == arguments->scalarOutputCount)) 242*855239e5SApple OSS Distributions { 243*855239e5SApple OSS Distributions ret = this->secureSetAggressiveness( 244*855239e5SApple OSS Distributions (unsigned long)arguments->scalarInput[0], 245*855239e5SApple OSS Distributions (unsigned long)arguments->scalarInput[1], 246*855239e5SApple OSS Distributions (int *)&arguments->scalarOutput[0]); 247*855239e5SApple OSS Distributions } 248*855239e5SApple OSS Distributions break; 249*855239e5SApple OSS Distributions 250*855239e5SApple OSS Distributions case kPMGetAggressiveness: 251*855239e5SApple OSS Distributions if ((1 == arguments->scalarInputCount) 252*855239e5SApple OSS Distributions && (1 == arguments->scalarOutputCount)) 253*855239e5SApple OSS Distributions { 254*855239e5SApple OSS Distributions ret = fOwner->getAggressiveness( 255*855239e5SApple OSS Distributions (unsigned long)arguments->scalarInput[0], 256*855239e5SApple OSS Distributions (unsigned long *)&arguments->scalarOutput[0]); 257*855239e5SApple OSS Distributions } 258*855239e5SApple OSS Distributions break; 259*855239e5SApple OSS Distributions 260*855239e5SApple OSS Distributions case kPMSleepSystem: 261*855239e5SApple OSS Distributions if (1 == arguments->scalarOutputCount) 262*855239e5SApple OSS Distributions { 263*855239e5SApple OSS Distributions ret = this->secureSleepSystem( 264*855239e5SApple OSS Distributions (uint32_t *)&arguments->scalarOutput[0]); 265*855239e5SApple OSS Distributions } 266*855239e5SApple OSS Distributions break; 267*855239e5SApple OSS Distributions 268*855239e5SApple OSS Distributions case kPMAllowPowerChange: 269*855239e5SApple OSS Distributions if (1 == arguments->scalarInputCount) 270*855239e5SApple OSS Distributions { 271*855239e5SApple OSS Distributions ret = fOwner->allowPowerChange( 272*855239e5SApple OSS Distributions arguments->scalarInput[0]); 273*855239e5SApple OSS Distributions } 274*855239e5SApple OSS Distributions break; 275*855239e5SApple OSS Distributions 276*855239e5SApple OSS Distributions case kPMCancelPowerChange: 277*855239e5SApple OSS Distributions if (1 == arguments->scalarInputCount) 278*855239e5SApple OSS Distributions { 279*855239e5SApple OSS Distributions ret = fOwner->cancelPowerChange( 280*855239e5SApple OSS Distributions arguments->scalarInput[0]); 281*855239e5SApple OSS Distributions } 282*855239e5SApple OSS Distributions break; 283*855239e5SApple OSS Distributions 284*855239e5SApple OSS Distributions case kPMShutdownSystem: 285*855239e5SApple OSS Distributions // deperecated interface 286*855239e5SApple OSS Distributions ret = kIOReturnUnsupported; 287*855239e5SApple OSS Distributions break; 288*855239e5SApple OSS Distributions 289*855239e5SApple OSS Distributions case kPMRestartSystem: 290*855239e5SApple OSS Distributions // deperecated interface 291*855239e5SApple OSS Distributions ret = kIOReturnUnsupported; 292*855239e5SApple OSS Distributions break; 293*855239e5SApple OSS Distributions 294*855239e5SApple OSS Distributions case kPMSleepSystemOptions: 295*855239e5SApple OSS Distributions ret = this->secureSleepSystemOptions( 296*855239e5SApple OSS Distributions arguments->structureInput, 297*855239e5SApple OSS Distributions arguments->structureInputSize, 298*855239e5SApple OSS Distributions (uint32_t *)&arguments->scalarOutput[0]); 299*855239e5SApple OSS Distributions break; 300*855239e5SApple OSS Distributions case kPMSetMaintenanceWakeCalendar: 301*855239e5SApple OSS Distributions ret = this->secureSetMaintenanceWakeCalendar( 302*855239e5SApple OSS Distributions (IOPMCalendarStruct *)arguments->structureInput, 303*855239e5SApple OSS Distributions (uint32_t *)&arguments->structureOutput); 304*855239e5SApple OSS Distributions arguments->structureOutputSize = sizeof(uint32_t); 305*855239e5SApple OSS Distributions break; 306*855239e5SApple OSS Distributions 307*855239e5SApple OSS Distributions case kPMSetUserAssertionLevels: 308*855239e5SApple OSS Distributions ret = this->secureSetUserAssertionLevels( 309*855239e5SApple OSS Distributions (uint32_t)arguments->scalarInput[0]); 310*855239e5SApple OSS Distributions break; 311*855239e5SApple OSS Distributions 312*855239e5SApple OSS Distributions /* 313*855239e5SApple OSS Distributions case kPMMethodCopySystemTimeline: 314*855239e5SApple OSS Distributions // intentional fallthrough 315*855239e5SApple OSS Distributions case kPMMethodCopyDetailedTimeline: 316*855239e5SApple OSS Distributions 317*855239e5SApple OSS Distributions if (!arguments->structureOutputDescriptor) 318*855239e5SApple OSS Distributions { 319*855239e5SApple OSS Distributions // TODO: Force IOKit.framework to always send this data out 320*855239e5SApple OSS Distributions // of line; so I don't have to create a MemoryDescriptor here. 321*855239e5SApple OSS Distributions mem_size = arguments->structureOutputSize; 322*855239e5SApple OSS Distributions mem = IOMemoryDescriptor::withAddressRange( 323*855239e5SApple OSS Distributions (mach_vm_address_t)arguments->structureOutput, 324*855239e5SApple OSS Distributions (mach_vm_size_t)mem_size, 325*855239e5SApple OSS Distributions kIODirectionIn, current_task()); 326*855239e5SApple OSS Distributions } else { 327*855239e5SApple OSS Distributions mem_size = arguments->structureOutputDescriptorSize; 328*855239e5SApple OSS Distributions if (( mem = arguments->structureOutputDescriptor )) 329*855239e5SApple OSS Distributions mem->retain(); 330*855239e5SApple OSS Distributions } 331*855239e5SApple OSS Distributions 332*855239e5SApple OSS Distributions if (mem) 333*855239e5SApple OSS Distributions { 334*855239e5SApple OSS Distributions mem->prepare(kIODirectionNone); 335*855239e5SApple OSS Distributions 336*855239e5SApple OSS Distributions if (kPMMethodCopySystemTimeline == selector) { 337*855239e5SApple OSS Distributions arguments->scalarOutput[0] = fOwner->copySystemTimeline( 338*855239e5SApple OSS Distributions mem, &mem_size); 339*855239e5SApple OSS Distributions } 340*855239e5SApple OSS Distributions else 341*855239e5SApple OSS Distributions if (kPMMethodCopyDetailedTimeline == selector) { 342*855239e5SApple OSS Distributions arguments->scalarOutput[0] = fOwner->copyDetailedTimeline( 343*855239e5SApple OSS Distributions mem, &mem_size); 344*855239e5SApple OSS Distributions } 345*855239e5SApple OSS Distributions 346*855239e5SApple OSS Distributions if (arguments->structureOutputDescriptor) { 347*855239e5SApple OSS Distributions arguments->structureOutputDescriptorSize = mem_size; 348*855239e5SApple OSS Distributions } else { 349*855239e5SApple OSS Distributions arguments->structureOutputSize = mem_size; 350*855239e5SApple OSS Distributions } 351*855239e5SApple OSS Distributions 352*855239e5SApple OSS Distributions mem->release(); 353*855239e5SApple OSS Distributions 354*855239e5SApple OSS Distributions ret = kIOReturnSuccess; 355*855239e5SApple OSS Distributions } else { 356*855239e5SApple OSS Distributions ret = kIOReturnCannotWire; 357*855239e5SApple OSS Distributions } 358*855239e5SApple OSS Distributions 359*855239e5SApple OSS Distributions break; 360*855239e5SApple OSS Distributions */ 361*855239e5SApple OSS Distributions default: 362*855239e5SApple OSS Distributions // bad selector 363*855239e5SApple OSS Distributions return kIOReturnBadArgument; 364*855239e5SApple OSS Distributions } 365*855239e5SApple OSS Distributions 366*855239e5SApple OSS Distributions return ret; 367*855239e5SApple OSS Distributions } 368*855239e5SApple OSS Distributions 369*855239e5SApple OSS Distributions /* getTargetAndMethodForIndex 370*855239e5SApple OSS Distributions * Not used. We prefer to use externalMethod() for user client invocations. 371*855239e5SApple OSS Distributions * We maintain getTargetAndExternalMethod since it's an exported symbol, 372*855239e5SApple OSS Distributions * and only for that reason. 373*855239e5SApple OSS Distributions */ 374*855239e5SApple OSS Distributions IOExternalMethod * RootDomainUserClient::getTargetAndMethodForIndex( 375*855239e5SApple OSS Distributions IOService ** targetP, UInt32 index ) 376*855239e5SApple OSS Distributions { 377*855239e5SApple OSS Distributions // DO NOT EDIT 378*855239e5SApple OSS Distributions return super::getTargetAndMethodForIndex(targetP, index); 379*855239e5SApple OSS Distributions } 380*855239e5SApple OSS Distributions 381*855239e5SApple OSS Distributions /* setPreventative 382*855239e5SApple OSS Distributions * Does nothing. Exists only for exported symbol compatibility. 383*855239e5SApple OSS Distributions */ 384368ad365SApple OSS Distributions void 385368ad365SApple OSS Distributions RootDomainUserClient::setPreventative(UInt32 on_off, UInt32 types_of_sleep) 386*855239e5SApple OSS Distributions { return; } // DO NOT EDIT 387