|
|
1.1 ! root 1: /* ! 2: * Copyright (c) 1999 Apple Computer, Inc. All rights reserved. ! 3: * ! 4: * @APPLE_LICENSE_HEADER_START@ ! 5: * ! 6: * Portions Copyright (c) 1999 Apple Computer, Inc. All Rights ! 7: * Reserved. This file contains Original Code and/or Modifications of ! 8: * Original Code as defined in and that are subject to the Apple Public ! 9: * Source License Version 1.1 (the "License"). You may not use this file ! 10: * except in compliance with the License. Please obtain a copy of the ! 11: * License at http://www.apple.com/publicsource and read it before using ! 12: * this file. ! 13: * ! 14: * The Original Code and all software distributed under the License are ! 15: * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER ! 16: * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, ! 17: * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, ! 18: * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the ! 19: * License for the specific language governing rights and limitations ! 20: * under the License. ! 21: * ! 22: * @APPLE_LICENSE_HEADER_END@ ! 23: */ ! 24: ! 25: /* ! 26: * Copyright 1994 NeXT Computer, Inc. ! 27: * All rights reserved. ! 28: */ ! 29: ! 30: #import <mach/mach_types.h> ! 31: #import <mach/error.h> ! 32: ! 33: /* ! 34: * Power Management (PM) kernel interface. ! 35: */ ! 36: ! 37: #define pm_err(errno) (err_kern|err_sub(4000)|errno) ! 38: ! 39: typedef enum { ! 40: PM_R_SUCCESS = 0x00, ! 41: PM_R_DISABLED = pm_err(0x01), // power management disabled ! 42: PM_R_CONNECTED = pm_err(0x02), // interface already connected ! 43: PM_R_NOT_CONNECTED = pm_err(0x03), // interface not connected ! 44: PM_R_BAD_ID = pm_err(0x09), // unrecognized device ID ! 45: PM_R_BAD_VALUE = pm_err(0x0a), // parameter value out of range ! 46: PM_R_BAD_STATE = pm_err(0x60), // can't enter requested state ! 47: PM_R_NO_EVENT = pm_err(0x80), // no power events pending ! 48: PM_R_NO_PM = pm_err(0x86), // PM not present ! 49: PM_R_UNSUPPORTED = pm_err(0x100), // unsupported function call ! 50: PM_R_UNKNOWN = pm_err(0x101) // unknown error from hardware ! 51: } PMReturn; ! 52: ! 53: typedef enum { ! 54: PM_CPU_IDLE, ! 55: PM_CPU_BUSY ! 56: } PMCpuState; ! 57: ! 58: typedef enum { ! 59: PM_READY = 0x00, // PM enabled, full power ! 60: PM_STANDBY = 0x01, // Standby mode ! 61: PM_SUSPENDED = 0x02, // Suspend mode ! 62: PM_OFF = 0x03 // Off completely ! 63: } PMPowerState; ! 64: ! 65: typedef enum { ! 66: PM_SYSTEM = 0x00, ! 67: PM_DISPLAY = 0x01, ! 68: PM_STORAGE = 0x02, ! 69: PM_PARALLEL = 0x03, ! 70: PM_SERIAL = 0x04, ! 71: PM_NETWORK = 0x05, ! 72: PM_PCMCIA = 0x06 ! 73: } PMDeviceType; ! 74: ! 75: typedef struct { ! 76: unsigned int deviceNumber :16; ! 77: PMDeviceType deviceType :16; ! 78: } PMDeviceID; ! 79: ! 80: /* ! 81: * Note: the entire computer is referred to as device type PM_SYSTEM, ! 82: * device number 1. ! 83: */ ! 84: #define PM_SYSTEM_DEVICE ((PMDeviceID){1, PM_SYSTEM}) ! 85: ! 86: typedef enum { ! 87: PM_STANDBY_REQUEST = 0x01, ! 88: PM_SUSPEND_REQUEST = 0x02, ! 89: PM_NORMAL_RESUME = 0x03, ! 90: PM_CRITICAL_RESUME = 0x04, ! 91: PM_BATTERY_LOW = 0x05, ! 92: PM_POWER_STATUS_CHANGE = 0x06, ! 93: PM_UPDATE_TIME = 0x07, ! 94: PM_CRITICAL_SUSPEND = 0x08, ! 95: PM_USER_STANDBY_REQUEST = 0x09, ! 96: PM_USER_SUSPEND_REQUEST = 0x0a, ! 97: PM_STANDBY_RESUME = 0x0b ! 98: } PMPowerEvent; ! 99: ! 100: typedef enum { ! 101: PM_LINE_OFFLINE = 0x00, ! 102: PM_LINE_ONLINE = 0x01, ! 103: PM_LINE_BACKUP = 0x02, ! 104: PM_LINE_UNKNOWN = 0xFF ! 105: } PMLineStatus; ! 106: ! 107: typedef enum { ! 108: PM_BATT_HIGH = 0x00, ! 109: PM_BATT_LOW = 0x01, ! 110: PM_BATT_CRITICAL = 0x02, ! 111: PM_BATT_CHARGING = 0x03, ! 112: PM_BATT_UNKNOWN = 0xFF ! 113: } PMBatteryStatus; ! 114: ! 115: typedef struct { ! 116: PMLineStatus lineStatus; ! 117: PMBatteryStatus batteryStatus; ! 118: int batteryLife; ! 119: } PMPowerStatus; ! 120: ! 121: typedef enum { ! 122: PM_DISABLED, ! 123: PM_ENABLED ! 124: } PMPowerManagementState; ! 125: ! 126: ! 127: #ifdef KERNEL ! 128: ! 129: #define MARK_CPU_IDLE(mycpu) PMSetCpuState(PM_CPU_IDLE) ! 130: #define MARK_CPU_ACTIVE(mycpu) PMSetCpuState(PM_CPU_BUSY) ! 131: ! 132: /* ! 133: * Initialize PM support. Returns TRUE if PM is available. ! 134: */ ! 135: PMReturn PMConnect(void); ! 136: ! 137: /* ! 138: * Return PM control to previous user (probably the BIOS). ! 139: * Normally this will never be called. ! 140: */ ! 141: PMReturn PMDisconnect(void); ! 142: ! 143: /* ! 144: * Inform PM of the CPU state. If the CPU is idle, PM may ! 145: * put the CPU in a power-saving state until the next system event ! 146: * (typically an interrupt). Marking the CPU busy will ensure ! 147: * that the CPU is running at full speed. ! 148: */ ! 149: PMReturn PMSetCpuState(PMCpuState state); ! 150: ! 151: /* ! 152: * Update current kernel clock from real-time clock. ! 153: */ ! 154: void PMUpdateClock(void); ! 155: ! 156: /* ! 157: * Set the power state of a device or the entire computer. ! 158: */ ! 159: PMReturn PMSetPowerState(PMDeviceID device, PMPowerState state); ! 160: ! 161: /* ! 162: * Get a power event from PM, if one has occurred. ! 163: */ ! 164: PMReturn PMGetPowerEvent(PMPowerEvent *event); ! 165: ! 166: /* ! 167: * Get the power state of the computer. ! 168: */ ! 169: PMReturn PMGetPowerStatus(PMPowerStatus *status); ! 170: ! 171: /* ! 172: * Enable or disable power management by the computer. ! 173: * If enable == PM_ENABLED, the computer can take power saving steps ! 174: * when the CPU state is idle. If enable == PM_DISABLED, no automatic ! 175: * power saving steps will be taken and power management functions ! 176: * will be disabled. ! 177: */ ! 178: PMReturn PMSetPowerManagement(PMDeviceID device, ! 179: PMPowerManagementState state); ! 180: ! 181: /* ! 182: * Restores the default settings for all power management settings. ! 183: */ ! 184: PMReturn PMRestoreDefaults(void); ! 185: ! 186: #else /* KERNEL */ ! 187: ! 188: /* ! 189: * Set the power state of a device or the entire computer. ! 190: */ ! 191: kern_return_t _PMSetPowerState( ! 192: host_t host, ! 193: PMDeviceID device, ! 194: PMPowerState state); ! 195: ! 196: /* ! 197: * Get a power event from PM, if one has occurred. ! 198: */ ! 199: kern_return_t _PMGetPowerEvent( ! 200: host_t host, ! 201: PMPowerEvent *event); ! 202: ! 203: /* ! 204: * Get the power state of the computer. ! 205: */ ! 206: kern_return_t _PMGetPowerStatus( ! 207: host_t host, ! 208: PMPowerStatus *status); ! 209: ! 210: /* ! 211: * Enable or disable power management by the computer. ! 212: * If enable == PM_ENABLED, the computer can take power saving steps ! 213: * when the CPU state is idle. If enable == PM_DISABLED, no automatic ! 214: * power saving steps will be taken and power management functions ! 215: * will be disabled. ! 216: */ ! 217: kern_return_t _PMSetPowerManagement( ! 218: host_t host, ! 219: PMDeviceID device, ! 220: PMPowerManagementState state); ! 221: ! 222: /* ! 223: * Restores the default settings for all power management settings. ! 224: */ ! 225: kern_return_t _PMRestoreDefaults( ! 226: host_t host); ! 227: ! 228: ! 229: #endif /* KERNEL */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.