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