1 | /*␊ |
2 | * Copyright (c) 2000-2007 Apple 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 | /* Copyright (c) 1995 NeXT Computer, Inc. All Rights Reserved */␊ |
29 | /*-␊ |
30 | * Copyright (c) 1983, 1990, 1993␊ |
31 | *␉The Regents of the University of California. All rights reserved.␊ |
32 | * (c) UNIX System Laboratories, Inc.␊ |
33 | * All or some portions of this file are derived from material licensed␊ |
34 | * to the University of California by American Telephone and Telegraph␊ |
35 | * Co. or Unix System Laboratories, Inc. and are reproduced herein with␊ |
36 | * the permission of UNIX System Laboratories, Inc.␊ |
37 | *␊ |
38 | * Redistribution and use in source and binary forms, with or without␊ |
39 | * modification, are permitted provided that the following conditions␊ |
40 | * are met:␊ |
41 | * 1. Redistributions of source code must retain the above copyright␊ |
42 | * notice, this list of conditions and the following disclaimer.␊ |
43 | * 2. Redistributions in binary form must reproduce the above copyright␊ |
44 | * notice, this list of conditions and the following disclaimer in the␊ |
45 | * documentation and/or other materials provided with the distribution.␊ |
46 | * 3. All advertising materials mentioning features or use of this software␊ |
47 | * must display the following acknowledgement:␊ |
48 | *␉This product includes software developed by the University of␊ |
49 | *␉California, Berkeley and its contributors.␊ |
50 | * 4. Neither the name of the University nor the names of its contributors␊ |
51 | * may be used to endorse or promote products derived from this software␊ |
52 | * without specific prior written permission.␊ |
53 | *␊ |
54 | * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND␊ |
55 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE␊ |
56 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE␊ |
57 | * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE␊ |
58 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL␊ |
59 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS␊ |
60 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)␊ |
61 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT␊ |
62 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY␊ |
63 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF␊ |
64 | * SUCH DAMAGE.␊ |
65 | *␊ |
66 | *␉@(#)fcntl.h␉8.3 (Berkeley) 1/21/94␊ |
67 | */␊ |
68 | ␊ |
69 | ␊ |
70 | #ifndef _SYS_FCNTL_H_␊ |
71 | #define␉_SYS_FCNTL_H_␊ |
72 | ␊ |
73 | /*␊ |
74 | * This file includes the definitions for open and fcntl␊ |
75 | * described by POSIX for <fcntl.h>; it also includes␊ |
76 | * related kernel definitions.␊ |
77 | */␊ |
78 | #include <sys/_types.h>␊ |
79 | #include <sys/cdefs.h>␊ |
80 | #include <Availability.h>␊ |
81 | ␊ |
82 | /* We should not be exporting size_t here. Temporary for gcc bootstrapping. */␊ |
83 | #ifndef _SIZE_T␊ |
84 | #define _SIZE_T␊ |
85 | typedef __darwin_size_t␉size_t;␊ |
86 | #endif␊ |
87 | ␊ |
88 | #ifndef␉_MODE_T␊ |
89 | typedef␉__darwin_mode_t␉mode_t;␊ |
90 | #define _MODE_T␊ |
91 | #endif␊ |
92 | ␊ |
93 | #ifndef _OFF_T␊ |
94 | typedef __darwin_off_t␉off_t;␊ |
95 | #define _OFF_T␊ |
96 | #endif␊ |
97 | ␊ |
98 | /*␊ |
99 | * File status flags: these are used by open(2), fcntl(2).␊ |
100 | * They are also used (indirectly) in the kernel file structure f_flags,␊ |
101 | * which is a superset of the open/fcntl flags. Open flags and f_flags␊ |
102 | * are inter-convertible using OFLAGS(fflags) and FFLAGS(oflags).␊ |
103 | * Open/fcntl flags begin with O_; kernel-internal flags begin with F.␊ |
104 | */␊ |
105 | /* open-only flags */␊ |
106 | #define␉O_RDONLY␉0x0000␉␉/* open for reading only */␊ |
107 | #define␉O_WRONLY␉0x0001␉␉/* open for writing only */␊ |
108 | #define␉O_RDWR␉␉0x0002␉␉/* open for reading and writing */␊ |
109 | #define␉O_ACCMODE␉0x0003␉␉/* mask for above modes */␊ |
110 | ␊ |
111 | /*␊ |
112 | * Kernel encoding of open mode; separate read and write bits that are␊ |
113 | * independently testable: 1 greater than the above.␊ |
114 | *␊ |
115 | * XXX␊ |
116 | * FREAD and FWRITE are excluded from the #ifdef KERNEL so that TIOCFLUSH,␊ |
117 | * which was documented to use FREAD/FWRITE, continues to work.␊ |
118 | */␊ |
119 | #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)␊ |
120 | #define␉FREAD␉␉0x0001␊ |
121 | #define␉FWRITE␉␉0x0002␊ |
122 | #endif␊ |
123 | #define␉O_NONBLOCK␉0x0004␉␉/* no delay */␊ |
124 | #define␉O_APPEND␉0x0008␉␉/* set append mode */␊ |
125 | #ifndef O_SYNC␉␉/* allow simultaneous inclusion of <aio.h> */␊ |
126 | #define␉O_SYNC␉␉0x0080␉␉/* synch I/O file integrity */␊ |
127 | #endif␊ |
128 | #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)␊ |
129 | #define␉O_SHLOCK␉0x0010␉␉/* open with shared file lock */␊ |
130 | #define␉O_EXLOCK␉0x0020␉␉/* open with exclusive file lock */␊ |
131 | #define␉O_ASYNC␉␉0x0040␉␉/* signal pgrp when data ready */␊ |
132 | #define␉O_FSYNC␉␉O_SYNC␉␉/* source compatibility: do not use */␊ |
133 | #define O_NOFOLLOW 0x0100 /* don't follow symlinks */␊ |
134 | #endif /* (_POSIX_C_SOURCE && !_DARWIN_C_SOURCE) */␊ |
135 | #define␉O_CREAT␉␉0x0200␉␉/* create if nonexistant */␊ |
136 | #define␉O_TRUNC␉␉0x0400␉␉/* truncate to zero length */␊ |
137 | #define␉O_EXCL␉␉0x0800␉␉/* error if already exists */␊ |
138 | #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)␊ |
139 | #define␉O_EVTONLY␉0x8000␉␉/* descriptor requested for event notifications only */␊ |
140 | #endif␊ |
141 | ␊ |
142 | ␊ |
143 | #define␉O_NOCTTY␉0x20000␉␉/* don't assign controlling terminal */␊ |
144 | ␊ |
145 | ␊ |
146 | #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)␊ |
147 | #define O_DIRECTORY␉0x100000␊ |
148 | #define O_SYMLINK␉0x200000␉/* allow open of a symlink */␊ |
149 | #endif␊ |
150 | ␊ |
151 | #ifndef O_DSYNC␉␉/* allow simultaneous inclusion of <aio.h> */␊ |
152 | #define␉␉O_DSYNC␉0x400000␉/* synch I/O data integrity */␊ |
153 | #endif␊ |
154 | ␊ |
155 | ␊ |
156 | #if __DARWIN_C_LEVEL >= 200809L␊ |
157 | #define␉O_CLOEXEC␉0x1000000␉/* implicitly set FD_CLOEXEC */␊ |
158 | #endif␊ |
159 | ␊ |
160 | ␊ |
161 | ␊ |
162 | /* Data Protection Flags */␊ |
163 | #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)␊ |
164 | #define O_DP_GETRAWENCRYPTED␉0x0001␊ |
165 | #endif␊ |
166 | ␊ |
167 | ␊ |
168 | ␊ |
169 | /*␊ |
170 | * The O_* flags used to have only F* names, which were used in the kernel␊ |
171 | * and by fcntl. We retain the F* names for the kernel f_flags field␊ |
172 | * and for backward compatibility for fcntl.␊ |
173 | */␊ |
174 | #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)␊ |
175 | #define␉FAPPEND␉␉O_APPEND␉/* kernel/compat */␊ |
176 | #define␉FASYNC␉␉O_ASYNC␉␉/* kernel/compat */␊ |
177 | #define␉FFSYNC␉␉O_FSYNC␉␉/* kernel */␊ |
178 | #define␉FFDSYNC␉␉O_DSYNC␉␉/* kernel */␊ |
179 | #define␉FNONBLOCK␉O_NONBLOCK␉/* kernel */␊ |
180 | #define␉FNDELAY␉␉O_NONBLOCK␉/* compat */␊ |
181 | #define␉O_NDELAY␉O_NONBLOCK␉/* compat */␊ |
182 | #endif␊ |
183 | ␊ |
184 | /*␊ |
185 | * Flags used for copyfile(2)␊ |
186 | */␊ |
187 | ␊ |
188 | #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)␊ |
189 | #define CPF_OVERWRITE 1␊ |
190 | #define CPF_IGNORE_MODE 2␊ |
191 | #define CPF_MASK (CPF_OVERWRITE|CPF_IGNORE_MODE)␊ |
192 | #endif␊ |
193 | ␊ |
194 | /*␊ |
195 | * Constants used for fcntl(2)␊ |
196 | */␊ |
197 | ␊ |
198 | /* command values */␊ |
199 | #define␉F_DUPFD␉␉0␉␉/* duplicate file descriptor */␊ |
200 | #define␉F_GETFD␉␉1␉␉/* get file descriptor flags */␊ |
201 | #define␉F_SETFD␉␉2␉␉/* set file descriptor flags */␊ |
202 | #define␉F_GETFL␉␉3␉␉/* get file status flags */␊ |
203 | #define␉F_SETFL␉␉4␉␉/* set file status flags */␊ |
204 | #define␉F_GETOWN␉5␉␉/* get SIGIO/SIGURG proc/pgrp */␊ |
205 | #define F_SETOWN␉6␉␉/* set SIGIO/SIGURG proc/pgrp */␊ |
206 | #define␉F_GETLK␉␉7␉␉/* get record locking information */␊ |
207 | #define␉F_SETLK␉␉8␉␉/* set record locking information */␊ |
208 | #define␉F_SETLKW␉9␉␉/* F_SETLK; wait if blocked */␊ |
209 | #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)␊ |
210 | #define F_FLUSH_DATA 40␊ |
211 | #define F_CHKCLEAN 41 /* Used for regression test */␊ |
212 | #define F_PREALLOCATE 42␉␉/* Preallocate storage */␊ |
213 | #define F_SETSIZE 43␉␉/* Truncate a file without zeroing space */␉␊ |
214 | #define F_RDADVISE 44 /* Issue an advisory read async with no copy to user */␊ |
215 | #define F_RDAHEAD 45 /* turn read ahead off/on for this fd */␊ |
216 | #define F_READBOOTSTRAP 46 /* Read bootstrap from disk */␊ |
217 | #define F_WRITEBOOTSTRAP 47 /* Write bootstrap on disk */␊ |
218 | #define F_NOCACHE 48 /* turn data caching off/on for this fd */␊ |
219 | #define F_LOG2PHYS␉49␉␉/* file offset to device offset */␊ |
220 | #define F_GETPATH 50 /* return the full path of the fd */␊ |
221 | #define F_FULLFSYNC 51␉␉/* fsync + ask the drive to flush to the media */␊ |
222 | #define F_PATHPKG_CHECK 52 /* find which component (if any) is a package */␊ |
223 | #define F_FREEZE_FS 53 /* "freeze" all fs operations */␊ |
224 | #define F_THAW_FS 54 /* "thaw" all fs operations */␊ |
225 | #define␉F_GLOBAL_NOCACHE 55␉␉/* turn data caching off/on (globally) for this file */␊ |
226 | ␊ |
227 | ␊ |
228 | #define F_ADDSIGS␉59␉␉/* add detached signatures */␊ |
229 | ␊ |
230 | #define F_MARKDEPENDENCY 60 /* this process hosts the device supporting the fs backing this fd */␊ |
231 | ␊ |
232 | #define F_ADDFILESIGS␉61␉␉/* add signature from same file (used by dyld for shared libs) */␊ |
233 | ␊ |
234 | #define F_NODIRECT␉62␉␉/* used in conjunction with F_NOCACHE to indicate that DIRECT, synchonous writes */␊ |
235 | /* should not be used (i.e. its ok to temporaily create cached pages) */␊ |
236 | ␊ |
237 | #define F_GETPROTECTIONCLASS␉63␉␉/* Get the protection class of a file from the EA, returns int */␊ |
238 | #define F_SETPROTECTIONCLASS␉64␉␉/* Set the protection class of a file for the EA, requires int */␊ |
239 | ␊ |
240 | #define F_LOG2PHYS_EXT 65␉␉/* file offset to device offset, extended */␊ |
241 | ␊ |
242 | #define␉F_GETLKPID␉␉66␉␉/* get record locking information, per-process */␊ |
243 | ␊ |
244 | /* See F_DUPFD_CLOEXEC below for 67 */␊ |
245 | ␊ |
246 | ␊ |
247 | #define F_SETBACKINGSTORE␉70␉/* Mark the file as being the backing store for another filesystem */␊ |
248 | #define F_GETPATH_MTMINFO␉71 ␉/* return the full path of the FD, but error in specific mtmd circumstances */␊ |
249 | ␊ |
250 | /* 72 is free. It used to be F_GETENCRYPTEDDATA, which is now removed. */␊ |
251 | ␊ |
252 | #define F_SETNOSIGPIPE␉␉73␉/* No SIGPIPE generated on EPIPE */␊ |
253 | #define F_GETNOSIGPIPE␉␉74␉/* Status of SIGPIPE for this fd */␊ |
254 | ␊ |
255 | #define F_TRANSCODEKEY␉␉75 ␉/* For some cases, we need to rewrap the key for AKS/MKB */␊ |
256 | ␊ |
257 | #define F_SINGLE_WRITER␉␉76␉/* file being written to a by single writer... if throttling enabled, writes */␊ |
258 | /* may be broken into smaller chunks with throttling in between */␊ |
259 | ␊ |
260 | #define F_GETPROTECTIONLEVEL␉77␉/* Get the protection version number for this filesystem */␊ |
261 | ␊ |
262 | ␊ |
263 | // FS-specific fcntl()'s numbers begin at 0x00010000 and go up␊ |
264 | #define FCNTL_FS_SPECIFIC_BASE 0x00010000␊ |
265 | ␊ |
266 | #endif /* (_POSIX_C_SOURCE && !_DARWIN_C_SOURCE) */␊ |
267 | ␊ |
268 | #if __DARWIN_C_LEVEL >= 200809L␊ |
269 | #define␉F_DUPFD_CLOEXEC␉␉67␉/* mark the dup with FD_CLOEXEC */␊ |
270 | #endif␊ |
271 | ␊ |
272 | /* file descriptor flags (F_GETFD, F_SETFD) */␊ |
273 | #define␉FD_CLOEXEC␉1␉␉/* close-on-exec flag */␊ |
274 | ␊ |
275 | /* record locking flags (F_GETLK, F_SETLK, F_SETLKW) */␊ |
276 | #define␉F_RDLCK␉␉1␉␉/* shared or read lock */␊ |
277 | #define␉F_UNLCK␉␉2␉␉/* unlock */␊ |
278 | #define␉F_WRLCK␉␉3␉␉/* exclusive or write lock */␊ |
279 | ␊ |
280 | /*␊ |
281 | * [XSI] The values used for l_whence shall be defined as described␊ |
282 | * in <unistd.h>␊ |
283 | */␊ |
284 | #ifndef SEEK_SET␊ |
285 | #define␉SEEK_SET␉0␉/* set file offset to offset */␊ |
286 | #define␉SEEK_CUR␉1␉/* set file offset to current plus offset */␊ |
287 | #define␉SEEK_END␉2␉/* set file offset to EOF plus offset */␊ |
288 | #endif␉/* !SEEK_SET */␊ |
289 | ␊ |
290 | /*␊ |
291 | * [XSI] The symbolic names for file modes for use as values of mode_t␊ |
292 | * shall be defined as described in <sys/stat.h>␊ |
293 | */␊ |
294 | #ifndef S_IFMT␊ |
295 | /* File type */␊ |
296 | #define␉S_IFMT␉␉0170000␉␉/* [XSI] type of file mask */␊ |
297 | #define␉S_IFIFO␉␉0010000␉␉/* [XSI] named pipe (fifo) */␊ |
298 | #define␉S_IFCHR␉␉0020000␉␉/* [XSI] character special */␊ |
299 | #define␉S_IFDIR␉␉0040000␉␉/* [XSI] directory */␊ |
300 | #define␉S_IFBLK␉␉0060000␉␉/* [XSI] block special */␊ |
301 | #define␉S_IFREG␉␉0100000␉␉/* [XSI] regular */␊ |
302 | #define␉S_IFLNK␉␉0120000␉␉/* [XSI] symbolic link */␊ |
303 | #define␉S_IFSOCK␉0140000␉␉/* [XSI] socket */␊ |
304 | #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)␊ |
305 | #define␉S_IFWHT␉␉0160000␉␉/* OBSOLETE: whiteout */␊ |
306 | #endif␊ |
307 | ␊ |
308 | /* File mode */␊ |
309 | /* Read, write, execute/search by owner */␊ |
310 | #define␉S_IRWXU␉␉0000700␉␉/* [XSI] RWX mask for owner */␊ |
311 | #define␉S_IRUSR␉␉0000400␉␉/* [XSI] R for owner */␊ |
312 | #define␉S_IWUSR␉␉0000200␉␉/* [XSI] W for owner */␊ |
313 | #define␉S_IXUSR␉␉0000100␉␉/* [XSI] X for owner */␊ |
314 | /* Read, write, execute/search by group */␊ |
315 | #define␉S_IRWXG␉␉0000070␉␉/* [XSI] RWX mask for group */␊ |
316 | #define␉S_IRGRP␉␉0000040␉␉/* [XSI] R for group */␊ |
317 | #define␉S_IWGRP␉␉0000020␉␉/* [XSI] W for group */␊ |
318 | #define␉S_IXGRP␉␉0000010␉␉/* [XSI] X for group */␊ |
319 | /* Read, write, execute/search by others */␊ |
320 | #define␉S_IRWXO␉␉0000007␉␉/* [XSI] RWX mask for other */␊ |
321 | #define␉S_IROTH␉␉0000004␉␉/* [XSI] R for other */␊ |
322 | #define␉S_IWOTH␉␉0000002␉␉/* [XSI] W for other */␊ |
323 | #define␉S_IXOTH␉␉0000001␉␉/* [XSI] X for other */␊ |
324 | ␊ |
325 | #define␉S_ISUID␉␉0004000␉␉/* [XSI] set user id on execution */␊ |
326 | #define␉S_ISGID␉␉0002000␉␉/* [XSI] set group id on execution */␊ |
327 | #define␉S_ISVTX␉␉0001000␉␉/* [XSI] directory restrcted delete */␊ |
328 | ␊ |
329 | #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)␊ |
330 | #define␉S_ISTXT␉␉S_ISVTX␉␉/* sticky bit: not supported */␊ |
331 | #define␉S_IREAD␉␉S_IRUSR␉␉/* backward compatability */␊ |
332 | #define␉S_IWRITE␉S_IWUSR␉␉/* backward compatability */␊ |
333 | #define␉S_IEXEC␉␉S_IXUSR␉␉/* backward compatability */␊ |
334 | #endif␊ |
335 | #endif␉/* !S_IFMT */␊ |
336 | ␊ |
337 | #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)␊ |
338 | /* allocate flags (F_PREALLOCATE) */␊ |
339 | ␊ |
340 | #define F_ALLOCATECONTIG 0x00000002 /* allocate contigious space */␊ |
341 | #define F_ALLOCATEALL 0x00000004␉/* allocate all requested space or no space at all */␊ |
342 | ␊ |
343 | /* Position Modes (fst_posmode) for F_PREALLOCATE */␊ |
344 | ␊ |
345 | #define F_PEOFPOSMODE 3␉␉␉/* Make it past all of the SEEK pos modes so that */␊ |
346 | ␉␉␉␉␉/* we can keep them in sync should we desire */␉␊ |
347 | #define F_VOLPOSMODE␉4␉␉/* specify volume starting postion */␊ |
348 | #endif /* (_POSIX_C_SOURCE && !_DARWIN_C_SOURCE) */␊ |
349 | ␊ |
350 | /*␊ |
351 | * Advisory file segment locking data type -␊ |
352 | * information passed to system by user␊ |
353 | */␊ |
354 | struct flock {␊ |
355 | ␉off_t␉l_start;␉/* starting offset */␊ |
356 | ␉off_t␉l_len;␉␉/* len = 0 means until end of file */␊ |
357 | ␉short␉l_type;␉␉/* lock type: read/write, etc. */␊ |
358 | ␉short␉l_whence;␉/* type of l_start */␊ |
359 | };␊ |
360 | ␊ |
361 | #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)␊ |
362 | /*␊ |
363 | * advisory file read data type -␊ |
364 | * information passed by user to system␊ |
365 | */␊ |
366 | ␊ |
367 | ␊ |
368 | struct radvisory {␊ |
369 | off_t ra_offset;␊ |
370 | int ra_count;␊ |
371 | };␊ |
372 | ␊ |
373 | ␊ |
374 | /*␊ |
375 | * detached code signatures data type -␊ |
376 | * information passed by user to system used by F_ADDSIGS and F_ADDFILESIGS.␊ |
377 | * F_ADDFILESIGS is a shortcut for files that contain their own signature and␊ |
378 | * doesn't require mapping of the file in order to load the signature.␊ |
379 | */␊ |
380 | typedef struct fsignatures {␊ |
381 | ␉off_t␉␉fs_file_start;␊ |
382 | ␉void␉␉*fs_blob_start;␊ |
383 | ␉size_t␉␉fs_blob_size;␊ |
384 | } fsignatures_t;␊ |
385 | ␊ |
386 | /* lock operations for flock(2) */␊ |
387 | #define␉LOCK_SH␉␉0x01␉␉/* shared file lock */␊ |
388 | #define␉LOCK_EX␉␉0x02␉␉/* exclusive file lock */␊ |
389 | #define␉LOCK_NB␉␉0x04␉␉/* don't block when locking */␊ |
390 | #define␉LOCK_UN␉␉0x08␉␉/* unlock file */␊ |
391 | ␊ |
392 | /* fstore_t type used by F_DEALLOCATE and F_PREALLOCATE commands */␊ |
393 | ␊ |
394 | typedef struct fstore {␊ |
395 | ␉unsigned int fst_flags;␉/* IN: flags word */␊ |
396 | ␉int ␉fst_posmode;␉/* IN: indicates use of offset field */␊ |
397 | ␉off_t␉fst_offset;␉/* IN: start of the region */␊ |
398 | ␉off_t␉fst_length;␉/* IN: size of the region */␊ |
399 | ␉off_t fst_bytesalloc;␉/* OUT: number of bytes allocated */␊ |
400 | } fstore_t;␊ |
401 | ␊ |
402 | /* fbootstraptransfer_t used by F_READBOOTSTRAP and F_WRITEBOOTSTRAP commands */␊ |
403 | ␊ |
404 | typedef struct fbootstraptransfer {␊ |
405 | off_t fbt_offset; /* IN: offset to start read/write */␊ |
406 | size_t fbt_length; /* IN: number of bytes to transfer */␊ |
407 | void *fbt_buffer; /* IN: buffer to be read/written */␊ |
408 | } fbootstraptransfer_t;␊ |
409 | ␊ |
410 | ␊ |
411 | /*␊ |
412 | * For F_LOG2PHYS this information is passed back to user␊ |
413 | * Currently only devoffset is returned - that is the VOP_BMAP␊ |
414 | * result - the disk device address corresponding to the␊ |
415 | * current file offset (likely set with an lseek).␊ |
416 | *␊ |
417 | * The flags could hold an indication of whether the # of ␊ |
418 | * contiguous bytes reflects the true extent length on disk,␊ |
419 | * or is an advisory value that indicates there is at least that␊ |
420 | * many bytes contiguous. For some filesystems it might be too␊ |
421 | * inefficient to provide anything beyond the advisory value.␊ |
422 | * Flags and contiguous bytes return values are not yet implemented.␊ |
423 | * For them the fcntl will nedd to switch from using BMAP to CMAP␊ |
424 | * and a per filesystem type flag will be needed to interpret the␊ |
425 | * contiguous bytes count result from CMAP.␊ |
426 | *␊ |
427 | * F_LOG2PHYS_EXT is a variant of F_LOG2PHYS that uses a passed in␊ |
428 | * file offset and length instead of the current file offset.␊ |
429 | * F_LOG2PHYS_EXT operates on the same structure as F_LOG2PHYS, but␊ |
430 | * treats it as an in/out.␊ |
431 | */␊ |
432 | #pragma pack(4)␊ |
433 | ␊ |
434 | struct log2phys {␊ |
435 | ␉unsigned int␉l2p_flags;␉ /* unused so far */␊ |
436 | ␉off_t␉␉l2p_contigbytes; /* F_LOG2PHYS: unused so far */␊ |
437 | ␉␉␉␉␉ /* F_LOG2PHYS_EXT: IN: number of bytes to be queried */␊ |
438 | ␉␉␉␉␉ /* OUT: number of contiguous bytes at this position */␊ |
439 | ␉off_t␉␉l2p_devoffset; /* F_LOG2PHYS: OUT: bytes into device */␊ |
440 | ␉␉␉␉␉ /* F_LOG2PHYS_EXT: IN: bytes into file */␊ |
441 | ␉␉␉␉␉ /* OUT: bytes into device */␊ |
442 | };␊ |
443 | ␊ |
444 | #pragma pack()␊ |
445 | ␊ |
446 | #define␉O_POPUP␉ 0x80000000 /* force window to popup on open */␊ |
447 | #define␉O_ALERT␉ 0x20000000␉/* small, clean popup window */␊ |
448 | ␊ |
449 | ␊ |
450 | #endif /* (_POSIX_C_SOURCE && !_DARWIN_C_SOURCE) */␊ |
451 | ␊ |
452 | ␊ |
453 | #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)␊ |
454 | #ifndef _FILESEC_T␊ |
455 | struct _filesec;␊ |
456 | typedef struct _filesec␉*filesec_t;␊ |
457 | #define _FILESEC_T␊ |
458 | #endif␊ |
459 | typedef enum {␊ |
460 | ␉FILESEC_OWNER = 1,␊ |
461 | ␉FILESEC_GROUP = 2,␊ |
462 | ␉FILESEC_UUID = 3,␊ |
463 | ␉FILESEC_MODE = 4,␊ |
464 | ␉FILESEC_ACL = 5,␊ |
465 | ␉FILESEC_GRPUUID = 6,␊ |
466 | ␊ |
467 | /* XXX these are private to the implementation */␊ |
468 | ␉FILESEC_ACL_RAW = 100,␊ |
469 | ␉FILESEC_ACL_ALLOCSIZE = 101␊ |
470 | } filesec_property_t;␊ |
471 | ␊ |
472 | /* XXX backwards compatibility */␊ |
473 | #define FILESEC_GUID FILESEC_UUID␊ |
474 | #endif /* (_POSIX_C_SOURCE && !_DARWIN_C_SOURCE) */␊ |
475 | ␊ |
476 | __BEGIN_DECLS␊ |
477 | int␉open(const char *, int, ...) ;␊ |
478 | __END_DECLS␊ |
479 | ␊ |
480 | #endif /* !_SYS_FCNTL_H_ */␊ |
481 | |