xref: /xnu-12377.61.12/iokit/IOKit/IOBSD.h (revision 4d495c6e23c53686cf65f45067f79024cf5dcee8) !
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 #ifndef _IOBSD_H
29 #define _IOBSD_H
30 
31 /*
32  * bsd-related registry properties
33  */
34 
35 #define kIOBSDKey      "IOBSD"     // (BSD subsystem resource)
36 #define kIOBSDNameKey  "BSD Name"  // (an OSString)
37 #define kIOBSDNamesKey "BSD Names" // (an OSDictionary of OSString's, for links)
38 #define kIOBSDMajorKey "BSD Major" // (an OSNumber)
39 #define kIOBSDMinorKey "BSD Minor" // (an OSNumber)
40 #define kIOBSDUnitKey  "BSD Unit"  // (an OSNumber)
41 
42 
43 #ifdef KERNEL_PRIVATE
44 
45 #include <stdint.h>
46 #include <kern/task.h>
47 
48 #ifdef __cplusplus
49 extern "C" {
50 #endif
51 
52 struct IOPolledFileIOVars;
53 struct mount;
54 struct vnode;
55 
56 enum{
57 	kIOMountChangeMount      = 0x00000101,
58 	kIOMountChangeUnmount    = 0x00000102,
59 	kIOMountChangeWillResize = 0x00000201,
60 	kIOMountChangeDidResize  = 0x00000202,
61 };
62 extern void IOBSDMountChange(struct mount *mp, uint32_t op);
63 extern void IOBSDLowSpaceUnlinkKernelCore(void);
64 /*
65  *       Tests that the entitlement is present and true
66  */
67 extern boolean_t IOCurrentTaskHasEntitlement(const char * entitlement);
68 extern boolean_t IOTaskHasEntitlement(task_t task, const char *entitlement);
69 
70 /*
71  * IOTaskHasEntitlementAsBooleanOrObject returns true if the entitlement is true boolean, or
72  *  a non-NULL object.
73  */
74 extern boolean_t IOTaskHasEntitlementAsBooleanOrObject(task_t task, const char *entitlement);
75 extern boolean_t IOVnodeHasEntitlement(struct vnode *vnode, int64_t off, const char *entitlement);
76 extern boolean_t IOVnodeGetBooleanEntitlement(
77 	struct vnode *vnode,
78 	int64_t off,
79 	const char *entitlement,
80 	bool *value);
81 extern boolean_t IOVnodeGetIntegerEntitlement(struct vnode *vnode, int64_t off, const char *entitlement, uint64_t *value);
82 
83 extern char * IOCurrentTaskGetEntitlement(const char * entitlement);
84 extern char * IOTaskGetEntitlement(task_t task, const char * entitlement);
85 /*
86  * IOVnodeGetEntitlement returns a null-terminated string that must be freed with kfree_data().
87  */
88 extern char *IOVnodeGetEntitlement(struct vnode *vnode, int64_t offset, const char *entitlement);
89 
90 extern boolean_t IOTaskGetIntegerEntitlement(task_t task, const char *entitlement, uint64_t *value);
91 
92 /*
93  *       Tests that the entitlement is present and has matching value
94  */
95 extern boolean_t IOCurrentTaskHasStringEntitlement(const char *entitlement, const char *value);
96 extern boolean_t IOTaskHasStringEntitlement(task_t task, const char *entitlement, const char *value);
97 
98 typedef enum {
99 	kIOPolledCoreFileModeNotInitialized,
100 	kIOPolledCoreFileModeDisabled,
101 	kIOPolledCoreFileModeClosed,
102 	kIOPolledCoreFileModeUnlinked,
103 	kIOPolledCoreFileModeStackshot,
104 	kIOPolledCoreFileModeCoredump,
105 } IOPolledCoreFileMode_t;
106 
107 extern struct IOPolledFileIOVars * gIOPolledCoreFileVars;
108 extern kern_return_t gIOPolledCoreFileOpenRet;
109 extern IOPolledCoreFileMode_t gIOPolledCoreFileMode;
110 
111 extern bool IOPMIsAOTMode(void);
112 extern bool IOPMIsLPWMode(void);
113 enum {
114 	kIOPMNetworkStackFullWakeFlag = 0x000000001,
115 };
116 extern void IOPMNetworkStackFullWake(uint64_t flags, const char * reason);
117 
118 #ifdef __cplusplus
119 }
120 #endif
121 
122 #endif /* XNU_KERNEL_PRIVATE */
123 
124 #endif /* !_IOBSD_H */
125