xref: /xnu-11417.121.6/iokit/IOKit/IOBSD.h (revision a1e26a70f38d1d7daa7b49b258e2f8538ad81650)
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 extern boolean_t IOVnodeHasEntitlement(struct vnode *vnode, int64_t off, const char *entitlement);
70 extern boolean_t IOVnodeGetBooleanEntitlement(
71 	struct vnode *vnode,
72 	int64_t off,
73 	const char *entitlement,
74 	bool *value);
75 extern char * IOCurrentTaskGetEntitlement(const char * entitlement);
76 extern char * IOTaskGetEntitlement(task_t task, const char * entitlement);
77 /*
78  * IOVnodeGetEntitlement returns a null-terminated string that must be freed with kfree_data().
79  */
80 extern char *IOVnodeGetEntitlement(struct vnode *vnode, int64_t offset, const char *entitlement);
81 
82 /*
83  *       Tests that the entitlement is present and has matching value
84  */
85 extern boolean_t IOCurrentTaskHasStringEntitlement(const char *entitlement, const char *value);
86 extern boolean_t IOTaskHasStringEntitlement(task_t task, const char *entitlement, const char *value);
87 
88 typedef enum {
89 	kIOPolledCoreFileModeNotInitialized,
90 	kIOPolledCoreFileModeDisabled,
91 	kIOPolledCoreFileModeClosed,
92 	kIOPolledCoreFileModeUnlinked,
93 	kIOPolledCoreFileModeStackshot,
94 	kIOPolledCoreFileModeCoredump,
95 } IOPolledCoreFileMode_t;
96 
97 extern struct IOPolledFileIOVars * gIOPolledCoreFileVars;
98 extern kern_return_t gIOPolledCoreFileOpenRet;
99 extern IOPolledCoreFileMode_t gIOPolledCoreFileMode;
100 
101 #ifdef __cplusplus
102 }
103 #endif
104 
105 #endif /* XNU_KERNEL_PRIVATE */
106 
107 #endif /* !_IOBSD_H */
108