+IOReturn RootDomainUserClient::secureSetMaintenanceWakeCalendar(
+ void * p1, void * p2, void * p3,
+ void * p4, void * p5, void * p6 )
+{
+#if ROOT_DOMAIN_RUN_STATES
+ IOPMCalendarStruct * inCalendar = (IOPMCalendarStruct *) p1;
+ uint32_t * returnCode = (uint32_t *) p2;
+ IOByteCount * returnCodeSize = (IOByteCount *) p4;
+ int admin_priv = 0;
+ IOReturn ret = kIOReturnNotPrivileged;
+
+ ret = clientHasPrivilege(fOwningTask, kIOClientPrivilegeAdministrator);
+ admin_priv = (kIOReturnSuccess == ret);
+
+ *returnCodeSize = sizeof(uint32_t);
+
+ if (admin_priv && fOwner) {
+ *returnCode = fOwner->setMaintenanceWakeCalendar(inCalendar);
+ return kIOReturnSuccess;
+ } else {
+ *returnCode = kIOReturnNotPrivileged;
+ return kIOReturnSuccess;
+ }
+#else
+ return kIOReturnUnsupported;
+#endif
+}