1/*
2 * Copyright (c) 1998-2000 Apple Computer, Inc. All rights reserved.
3 *
4 * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
5 *
6 * This file contains Original Code and/or Modifications of Original Code
7 * as defined in and that are subject to the Apple Public Source License
8 * Version 2.0 (the 'License'). You may not use this file except in
9 * compliance with the License. The rights granted to you under the License
10 * may not be used to create, or enable the creation or redistribution of,
11 * unlawful or unlicensed copies of an Apple operating system, or to
12 * circumvent, violate, or enable the circumvention or violation of, any
13 * terms of an Apple operating system software license agreement.
14 *
15 * Please obtain a copy of the License at
16 * http://www.opensource.apple.com/apsl/ and read it before using this file.
17 *
18 * The Original Code and all software distributed under the License are
19 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
20 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
21 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
22 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
23 * Please see the License for the specific language governing rights and
24 * limitations under the License.
25 *
26 * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
27 */
28/*
29 * Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
30 *
31 * Common symbol definitions for IOKit.
32 *
33 * HISTORY
34 *
35 */
36
37
38#ifndef _IOKIT_IOKITKEYS_H
39#define _IOKIT_IOKITKEYS_H
40
41// properties found in the registry root
42#define kIOKitBuildVersionKey "IOKitBuildVersion"
43#define kIOKitDiagnosticsKey "IOKitDiagnostics"
44// a dictionary keyed by plane name
45#define kIORegistryPlanesKey "IORegistryPlanes"
46#define kIOCatalogueKey "IOCatalogue"
47
48// registry plane names
49#define kIOServicePlane "IOService"
50#define kIOPowerPlane "IOPower"
51#define kIODeviceTreePlane "IODeviceTree"
52#define kIOAudioPlane "IOAudio"
53#define kIOFireWirePlane "IOFireWire"
54#define kIOUSBPlane "IOUSB"
55
56// registry ID number
57#define kIORegistryEntryIDKey "IORegistryEntryID"
58// property name to get array of property names
59#define kIORegistryEntryPropertyKeysKey "IORegistryEntryPropertyKeys"
60// property name to allow only the given keys present in an OSDictionary from
61// a user space call to IORegistryEntry::setProperties (OSArray)
62#define kIORegistryEntryAllowableSetPropertiesKey "IORegistryEntryAllowableSetProperties"
63// property name to single thread a user space call to IORegistryEntry::setProperties (OSBoolean)
64#define kIORegistryEntryDefaultLockingSetPropertiesKey "IORegistryEntryDefaultLockingSetProperties"
65
66
67// IOService class name
68#define kIOServiceClass "IOService"
69
70// IOResources class name
71#define kIOResourcesClass "IOResources"
72
73// IOService driver probing property names
74#define kIOClassKey "IOClass"
75#define kIOProbeScoreKey "IOProbeScore"
76#define kIOKitDebugKey "IOKitDebug"
77
78// DriverKit class keys
79#define kIOUserClassKey "IOUserClass"
80#define kIOUserClassesKey "IOUserClasses"
81
82// Properties to be supported as API
83#define kIOSupportedPropertiesKey "IOSupportedProperties"
84// Properties writable by dexts
85#define kIOUserServicePropertiesKey "IOUserServiceProperties"
86
87
88// IOService matching property names
89#define kIOProviderClassKey "IOProviderClass"
90#define kIONameMatchKey "IONameMatch"
91#define kIOPropertyMatchKey "IOPropertyMatch"
92#define kIOPropertyExistsMatchKey "IOPropertyExistsMatch"
93#define kIOPathMatchKey "IOPathMatch"
94#define kIOLocationMatchKey "IOLocationMatch"
95#define kIOParentMatchKey "IOParentMatch"
96#define kIOResourceMatchKey "IOResourceMatch"
97#define kIOResourceMatchedKey "IOResourceMatched"
98#define kIOMatchedServiceCountKey "IOMatchedServiceCountMatch"
99
100#define kIONameMatchedKey "IONameMatched"
101
102#define kIOMatchCategoryKey "IOMatchCategory"
103#define kIODefaultMatchCategoryKey "IODefaultMatchCategory"
104
105#define kIOMatchedPersonalityKey "IOMatchedPersonality"
106#define kIORematchPersonalityKey "IORematchPersonality"
107#define kIORematchCountKey "IORematchCount"
108#define kIODEXTMatchCountKey "IODEXTMatchCount"
109
110// Property specifying the entitlement to check against an IOUserClient's opening process
111// kOSBooleanFalse - Allow access (no entitlements required)
112// string - If the opening process has the named entitlement with value == boolean true, allow access
113#define kIOUserClientEntitlementsKey "IOUserClientEntitlements"
114
115// Entitlements to check against dext process
116// Property is an array, one or more of which may match, of:
117// an array of entitlement strings, all must be present
118// Any array can be a single string.
119#define kIOServiceDEXTEntitlementsKey "IOServiceDEXTEntitlements"
120
121// Entitlement required to open dext connection
122#define kIODriverKitEntitlementKey "com.apple.developer.driverkit"
123
124// Entitlements required to open dext IOUserClient
125// Property is an array of strings containing CFBundleIdentifiers of service being opened
126#define kIODriverKitUserClientEntitlementsKey "com.apple.developer.driverkit.userclient-access"
127
128// Allows the entitled process to open a user client connection to any dext that has specific entitlements
129// Property is an array of strings containing entitlements, one of which needs to be present
130// in the dext providing the user client being opened
131#define kIODriverKitRequiredEntitlementsKey "com.apple.private.driverkit.driver-access"
132
133// Specifies that this driver is used for internal tests. This opts the driver out of our policy to
134// reboot the device if a driver crashes too often.
135#define kIODriverKitTestDriverEntitlementKey "com.apple.private.driverkit.test-driver"
136
137// Entitlement of a dext that allows any task to open one of its IOUserClients
138#define kIODriverKitUserClientEntitlementAllowAnyKey "com.apple.developer.driverkit.allow-any-userclient-access"
139
140#define kIODriverKitUserClientEntitlementAdministratorKey "com.apple.developer.driverkit.administrator"
141
142// Entitlements for third party drivers on iOS
143#define kIODriverKitUserClientEntitlementCommunicatesWithDriversKey "com.apple.developer.driverkit.communicates-with-drivers"
144#define kIODriverKitUserClientEntitlementAllowThirdPartyUserClientsKey "com.apple.developer.driverkit.allow-third-party-userclients"
145
146// Other DriverKit entitlements
147#define kIODriverKitUSBTransportEntitlementKey "com.apple.developer.driverkit.transport.usb"
148#define kIODriverKitHIDTransportEntitlementKey "com.apple.developer.driverkit.transport.hid"
149#define kIODriverKitHIDFamilyDeviceEntitlementKey "com.apple.developer.driverkit.family.hid.device"
150#define kIODriverKitHIDFamilyEventServiceEntitlementKey "com.apple.developer.driverkit.family.hid.eventservice"
151#define kIODriverKitTransportBuiltinEntitlementKey "com.apple.developer.driverkit.builtin"
152
153// Entitlement required to read nvram root-only properties as non-root user
154#define kIONVRAMReadAccessKey "com.apple.private.iokit.nvram-read-access"
155// Entitlement required to write nvram properties as non-root user
156#define kIONVRAMWriteAccessKey "com.apple.private.iokit.nvram-write-access"
157// Entitlement required to set properties on the IOResources object as non-root user
158#define kIOResourcesSetPropertyKey "com.apple.private.iokit.ioresources.setproperty"
159// Entitlement required to read/write to the system nvram region
160#define kIONVRAMSystemAllowKey "com.apple.private.iokit.system-nvram-allow"
161
162// When possible, defer matching of this driver until kextd has started.
163#define kIOMatchDeferKey "IOMatchDefer"
164
165// Published after processor_start() has been called on all CPUs at boot time.
166#define kIOAllCPUInitializedKey "IOAllCPUInitialized"
167
168// IOService default user client class, for loadable user clients
169#define kIOUserClientClassKey "IOUserClientClass"
170
171// key to find IOMappers
172#define kIOMapperIDKey "IOMapperID"
173
174#ifdef XNU_KERNEL_PRIVATE
175// Apple Kext Exclude List
176#define kIOExcludeListBundleID "com.apple.driver.KextExcludeList"
177#endif
178
179#define kIOUserClientCrossEndianKey "IOUserClientCrossEndian"
180#define kIOUserClientCrossEndianCompatibleKey "IOUserClientCrossEndianCompatible"
181#define kIOUserClientSharedInstanceKey "IOUserClientSharedInstance"
182#if KERNEL_PRIVATE
183#define kIOUserClientMessageAppSuspendedKey "IOUserClientMessageAppSuspended"
184#endif
185
186#define kIOUserClientDefaultLockingKey "IOUserClientDefaultLocking"
187#define kIOUserClientDefaultLockingSetPropertiesKey "IOUserClientDefaultLockingSetProperties"
188#define kIOUserClientDefaultLockingSingleThreadExternalMethodKey "IOUserClientDefaultLockingSingleThreadExternalMethod"
189
190// diagnostic string describing the creating task
191#define kIOUserClientCreatorKey "IOUserClientCreator"
192// the expected cdhash value of the userspace driver executable
193#define kIOUserServerCDHashKey "IOUserServerCDHash"
194
195#define kIOUserUserClientKey "IOUserUserClient"
196
197#define kIOUserServerOneProcessKey "IOUserServerOneProcess"
198#define kIOUserServerPreserveUserspaceRebootKey "IOUserServerPreserveUserspaceReboot"
199
200
201// IOService notification types
202#define kIOPublishNotification "IOServicePublish"
203#define kIOFirstPublishNotification "IOServiceFirstPublish"
204#define kIOMatchedNotification "IOServiceMatched"
205#define kIOFirstMatchNotification "IOServiceFirstMatch"
206#define kIOTerminatedNotification "IOServiceTerminate"
207#define kIOWillTerminateNotification "IOServiceWillTerminate"
208
209// IOService interest notification types
210#define kIOGeneralInterest "IOGeneralInterest"
211#define kIOBusyInterest "IOBusyInterest"
212#define kIOAppPowerStateInterest "IOAppPowerStateInterest"
213#define kIOPriorityPowerStateInterest "IOPriorityPowerStateInterest"
214
215#define kIOPlatformDeviceMessageKey "IOPlatformDeviceMessage"
216
217// IOService interest notification types
218#define kIOCFPlugInTypesKey "IOCFPlugInTypes"
219
220#define kIOCompatibilityMatchKey "IOCompatibilityMatch"
221#define kIOCompatibilityPropertiesKey "IOCompatibilityProperties"
222#define kIOPathKey "IOPath"
223
224
225// properties found in services that implement command pooling
226#define kIOCommandPoolSizeKey "IOCommandPoolSize" // (OSNumber)
227
228// properties found in services that implement priority
229#define kIOMaximumPriorityCountKey "IOMaximumPriorityCount" // (OSNumber)
230
231// properties found in services that have transfer constraints
232#define kIOMaximumBlockCountReadKey "IOMaximumBlockCountRead" // (OSNumber)
233#define kIOMaximumBlockCountWriteKey "IOMaximumBlockCountWrite" // (OSNumber)
234#define kIOMaximumByteCountReadKey "IOMaximumByteCountRead" // (OSNumber)
235#define kIOMaximumByteCountWriteKey "IOMaximumByteCountWrite" // (OSNumber)
236#define kIOMaximumSegmentCountReadKey "IOMaximumSegmentCountRead" // (OSNumber)
237#define kIOMaximumSegmentCountWriteKey "IOMaximumSegmentCountWrite" // (OSNumber)
238#define kIOMaximumSegmentByteCountReadKey "IOMaximumSegmentByteCountRead" // (OSNumber)
239#define kIOMaximumSegmentByteCountWriteKey "IOMaximumSegmentByteCountWrite" // (OSNumber)
240#define kIOMinimumSegmentAlignmentByteCountKey "IOMinimumSegmentAlignmentByteCount" // (OSNumber)
241#define kIOMaximumSegmentAddressableBitCountKey "IOMaximumSegmentAddressableBitCount" // (OSNumber)
242#define kIOMinimumSaturationByteCountKey "IOMinimumSaturationByteCount" // (OSNumber)
243#define kIOMaximumSwapWriteKey "IOMaximumSwapWrite" // (OSNumber)
244
245// properties found in services that wish to describe an icon
246//
247// IOIcon =
248// {
249// CFBundleIdentifier = "com.example.driver.example";
250// IOBundleResourceFile = "example.icns";
251// };
252//
253// where IOBundleResourceFile is the filename of the resource
254
255#define kIOIconKey "IOIcon" // (OSDictionary)
256#define kIOBundleResourceFileKey "IOBundleResourceFile" // (OSString)
257
258#define kIOBusBadgeKey "IOBusBadge" // (OSDictionary)
259#define kIODeviceIconKey "IODeviceIcon" // (OSDictionary)
260
261// property of root that describes the machine's serial number as a string
262#define kIOPlatformSerialNumberKey "IOPlatformSerialNumber" // (OSString)
263
264// property of root that describes the machine's UUID as a string
265#define kIOPlatformUUIDKey "IOPlatformUUID" // (OSString)
266
267// IODTNVRAM property keys
268#define kIONVRAMBootArgsKey "boot-args"
269#define kIONVRAMDeletePropertyKey "IONVRAM-DELETE-PROPERTY"
270#define kIONVRAMSyncNowPropertyKey "IONVRAM-SYNCNOW-PROPERTY"
271#define kIONVRAMActivateCSRConfigPropertyKey "IONVRAM-ARMCSR-PROPERTY"
272#define kIODTNVRAMPanicInfoKey "aapl,panic-info"
273#define kIONVRAMDeletePropertyKeyWRet "IONVRAM-DELETEWRET-PROPERTY"
274
275// keys for complex boot information
276#define kIOBootDeviceKey "IOBootDevice" // dict | array of dicts
277#define kIOBootDevicePathKey "IOBootDevicePath" // arch-neutral OSString
278#define kIOBootDeviceSizeKey "IOBootDeviceSize" // OSNumber of bytes
279
280// keys for OS Version information
281#define kOSBuildVersionKey "OS Build Version"
282
283//
284#define kIOStateNotificationItemCreateKey "com.apple.iokit.statenotification.create"
285#define kIOStateNotificationItemSetKey "com.apple.iokit.statenotification.set"
286#define kIOStateNotificationItemCopyKey "com.apple.iokit.statenotification.copy"
287
288#define kIOStateNotificationNameKey "com.apple.iokit.statenotification.name"
289#define kIOStateNotificationEntitlementSetKey "com.apple.iokit.statenotification.entitlement-set"
290#define kIOStateNotificationEntitlementGetKey "com.apple.iokit.statenotification.entitlement-get"
291
292//
293#define kIOSystemStateClamshellKey "com.apple.iokit.pm.clamshell"
294
295#define kIOSystemStateSleepDescriptionKey "com.apple.iokit.pm.sleepdescription"
296#define kIOSystemStateSleepDescriptionReasonKey "com.apple.iokit.pm.sleepreason"
297#define kIOSystemStateSleepDescriptionHibernateStateKey "com.apple.iokit.pm.hibernatestate"
298
299#define kIOSystemStateWakeDescriptionKey "com.apple.iokit.pm.wakedescription"
300#define kIOSystemStateWakeDescriptionWakeReasonKey "com.apple.iokit.pm.wakereason"
301
302#define kIOSystemStateHaltDescriptionKey "com.apple.iokit.pm.haltdescription"
303#define kIOSystemStateHaltDescriptionHaltStateKey "com.apple.iokit.pm.haltstate"
304
305#define kIOSystemStatePowerSourceDescriptionKey "com.apple.iokit.pm.powersourcedescription"
306#define kIOSystemStatePowerSourceDescriptionACAttachedKey "com.apple.iokit.pm.acattached"
307
308#endif /* ! _IOKIT_IOKITKEYS_H */
309