2  * Copyright (c) 2000-2007 Apple Inc. All rights reserved. 
   4  * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ 
   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. 
  15  * Please obtain a copy of the License at 
  16  * http://www.opensource.apple.com/apsl/ and read it before using this file. 
  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. 
  26  * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ 
  28 /* Copyright (c) 1995 NeXT Computer, Inc. All Rights Reserved */ 
  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. 
  38  * Redistribution and use in source and binary forms, with or without 
  39  * modification, are permitted provided that the following conditions 
  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. 
  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 
  66  *      @(#)fcntl.h     8.3 (Berkeley) 1/21/94 
  74  * This file includes the definitions for open and fcntl 
  75  * described by POSIX for <fcntl.h>; it also includes 
  76  * related kernel definitions. 
  78 #include <sys/_types.h> 
  79 #include <sys/cdefs.h> 
  81 /* We should not be exporting size_t here.  Temporary for gcc bootstrapping. */ 
  84 typedef __darwin_size_t 
size_t; 
  88 typedef __darwin_mode_t mode_t
; 
  93 typedef __darwin_off_t  off_t
; 
  98 typedef __darwin_pid_t  pid_t
; 
 103  * File status flags: these are used by open(2), fcntl(2). 
 104  * They are also used (indirectly) in the kernel file structure f_flags, 
 105  * which is a superset of the open/fcntl flags.  Open flags and f_flags 
 106  * are inter-convertible using OFLAGS(fflags) and FFLAGS(oflags). 
 107  * Open/fcntl flags begin with O_; kernel-internal flags begin with F. 
 109 /* open-only flags */ 
 110 #define O_RDONLY        0x0000          /* open for reading only */ 
 111 #define O_WRONLY        0x0001          /* open for writing only */ 
 112 #define O_RDWR          0x0002          /* open for reading and writing */ 
 113 #define O_ACCMODE       0x0003          /* mask for above modes */ 
 116  * Kernel encoding of open mode; separate read and write bits that are 
 117  * independently testable: 1 greater than the above. 
 120  * FREAD and FWRITE are excluded from the #ifdef KERNEL so that TIOCFLUSH, 
 121  * which was documented to use FREAD/FWRITE, continues to work. 
 123 #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE) 
 125 #define FWRITE          0x0002 
 127 #define O_NONBLOCK      0x0004          /* no delay */ 
 128 #define O_APPEND        0x0008          /* set append mode */ 
 129 #ifndef O_SYNC          /* allow simultaneous inclusion of <aio.h> */ 
 130 #define O_SYNC          0x0080          /* synch I/O file integrity */ 
 132 #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE) 
 133 #define O_SHLOCK        0x0010          /* open with shared file lock */ 
 134 #define O_EXLOCK        0x0020          /* open with exclusive file lock */ 
 135 #define O_ASYNC         0x0040          /* signal pgrp when data ready */ 
 136 #define O_FSYNC         O_SYNC          /* source compatibility: do not use */ 
 137 #define O_NOFOLLOW  0x0100      /* don't follow symlinks */ 
 138 #endif /* (_POSIX_C_SOURCE && !_DARWIN_C_SOURCE) */ 
 139 #define O_CREAT         0x0200          /* create if nonexistant */ 
 140 #define O_TRUNC         0x0400          /* truncate to zero length */ 
 141 #define O_EXCL          0x0800          /* error if already exists */ 
 143 #define FMARK           0x1000          /* mark during gc() */ 
 144 #define FDEFER          0x2000          /* defer for next gc pass */ 
 145 #define FHASLOCK        0x4000          /* descriptor holds advisory lock */ 
 147 #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE) 
 148 #define O_EVTONLY       0x8000          /* descriptor requested for event notifications only */ 
 152 #define FWASWRITTEN     0x10000         /* descriptor was written */ 
 155 #define O_NOCTTY        0x20000         /* don't assign controlling terminal */ 
 158 #define FNOCACHE        0x40000         /* fcntl(F_NOCACHE, 1) */ 
 159 #define FNORDAHEAD      0x80000         /* fcntl(F_RDAHEAD, 0) */ 
 162 #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE) 
 163 #define O_DIRECTORY     0x100000 
 164 #define O_SYMLINK       0x200000        /* allow open of a symlink */ 
 167 #ifndef O_DSYNC         /* allow simultaneous inclusion of <aio.h> */ 
 168 #define         O_DSYNC 0x400000        /* synch I/O data integrity */ 
 172 /* convert from open() flags to/from fflags; convert O_RD/WR to FREAD/FWRITE */ 
 173 #define FFLAGS(oflags)  ((oflags) + 1) 
 174 #define OFLAGS(fflags)  ((fflags) - 1) 
 176 /* bits to save after open */ 
 177 #define FMASK           (FREAD|FWRITE|FAPPEND|FASYNC|FFSYNC|FFDSYNC|FNONBLOCK) 
 178 /* bits settable by fcntl(F_SETFL, ...) */ 
 179 #define FCNTLFLAGS      (FAPPEND|FASYNC|FFSYNC|FFDSYNC|FNONBLOCK) 
 183  * The O_* flags used to have only F* names, which were used in the kernel 
 184  * and by fcntl.  We retain the F* names for the kernel f_flags field 
 185  * and for backward compatibility for fcntl. 
 187 #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE) 
 188 #define FAPPEND         O_APPEND        /* kernel/compat */ 
 189 #define FASYNC          O_ASYNC         /* kernel/compat */ 
 190 #define FFSYNC          O_FSYNC         /* kernel */ 
 191 #define FFDSYNC         O_DSYNC         /* kernel */ 
 192 #define FNONBLOCK       O_NONBLOCK      /* kernel */ 
 193 #define FNDELAY         O_NONBLOCK      /* compat */ 
 194 #define O_NDELAY        O_NONBLOCK      /* compat */ 
 198  * Flags used for copyfile(2) 
 201 #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE) 
 202 #define CPF_OVERWRITE 1 
 203 #define CPF_IGNORE_MODE 2 
 204 #define CPF_MASK (CPF_OVERWRITE|CPF_IGNORE_MODE) 
 208  * Constants used for fcntl(2) 
 212 #define F_DUPFD         0               /* duplicate file descriptor */ 
 213 #define F_GETFD         1               /* get file descriptor flags */ 
 214 #define F_SETFD         2               /* set file descriptor flags */ 
 215 #define F_GETFL         3               /* get file status flags */ 
 216 #define F_SETFL         4               /* set file status flags */ 
 217 #define F_GETOWN        5               /* get SIGIO/SIGURG proc/pgrp */ 
 218 #define F_SETOWN        6               /* set SIGIO/SIGURG proc/pgrp */ 
 219 #define F_GETLK         7               /* get record locking information */ 
 220 #define F_SETLK         8               /* set record locking information */ 
 221 #define F_SETLKW        9               /* F_SETLK; wait if blocked */ 
 222 #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE) 
 223 #define F_CHKCLEAN      41              /* Used for regression test */ 
 224 #define F_PREALLOCATE   42              /* Preallocate storage */ 
 225 #define F_SETSIZE       43              /* Truncate a file without zeroing space */      
 226 #define F_RDADVISE      44              /* Issue an advisory read async with no copy to user */ 
 227 #define F_RDAHEAD       45              /* turn read ahead off/on for this fd */ 
 228 #define F_READBOOTSTRAP 46              /* Read bootstrap from disk */ 
 229 #define F_WRITEBOOTSTRAP 47             /* Write bootstrap on disk */ 
 230 #define F_NOCACHE       48              /* turn data caching off/on for this fd */ 
 231 #define F_LOG2PHYS      49              /* file offset to device offset */ 
 232 #define F_GETPATH       50              /* return the full path of the fd */ 
 233 #define F_FULLFSYNC     51              /* fsync + ask the drive to flush to the media */ 
 234 #define F_PATHPKG_CHECK 52              /* find which component (if any) is a package */ 
 235 #define F_FREEZE_FS     53              /* "freeze" all fs operations */ 
 236 #define F_THAW_FS       54              /* "thaw" all fs operations */ 
 237 #define F_GLOBAL_NOCACHE 55             /* turn data caching off/on (globally) for this file */ 
 240 #define F_OPENFROM      56              /* SPI: open a file relative to fd (must be a dir) */ 
 241 #define F_UNLINKFROM    57              /* SPI: open a file relative to fd (must be a dir) */ 
 242 #define F_CHECK_OPENEVT 58              /* SPI: if a process is marked OPENEVT, or in O_EVTONLY on opens of this vnode */ 
 245 #define F_ADDSIGS       59              /* add detached signatures */ 
 247 #define F_MARKDEPENDENCY 60             /* this process hosts the device supporting the fs backing this fd */ 
 249 #define F_ADDFILESIGS   61              /* add signature from same file (used by dyld for shared libs) */ 
 251 // FS-specific fcntl()'s numbers begin at 0x00010000 and go up 
 252 #define FCNTL_FS_SPECIFIC_BASE  0x00010000 
 254 #endif /* (_POSIX_C_SOURCE && !_DARWIN_C_SOURCE) */ 
 256 /* file descriptor flags (F_GETFD, F_SETFD) */ 
 257 #define FD_CLOEXEC      1               /* close-on-exec flag */ 
 259 /* record locking flags (F_GETLK, F_SETLK, F_SETLKW) */ 
 260 #define F_RDLCK         1               /* shared or read lock */ 
 261 #define F_UNLCK         2               /* unlock */ 
 262 #define F_WRLCK         3               /* exclusive or write lock */ 
 264 #define F_WAIT          0x010           /* Wait until lock is granted */ 
 265 #define F_FLOCK         0x020           /* Use flock(2) semantics for lock */ 
 266 #define F_POSIX         0x040           /* Use POSIX semantics for lock */ 
 267 #define F_PROV          0x080           /* Non-coelesced provisional lock */ 
 268 #define F_WAKE1_SAFE    0x100           /* its safe to only wake one waiter */ 
 272  * [XSI] The values used for l_whence shall be defined as described 
 276 #define SEEK_SET        0       /* set file offset to offset */ 
 277 #define SEEK_CUR        1       /* set file offset to current plus offset */ 
 278 #define SEEK_END        2       /* set file offset to EOF plus offset */ 
 279 #endif  /* !SEEK_SET */ 
 282  * [XSI] The symbolic names for file modes for use as values of mode_t 
 283  * shall be defined as described in <sys/stat.h> 
 287 #define S_IFMT          0170000         /* [XSI] type of file mask */ 
 288 #define S_IFIFO         0010000         /* [XSI] named pipe (fifo) */ 
 289 #define S_IFCHR         0020000         /* [XSI] character special */ 
 290 #define S_IFDIR         0040000         /* [XSI] directory */ 
 291 #define S_IFBLK         0060000         /* [XSI] block special */ 
 292 #define S_IFREG         0100000         /* [XSI] regular */ 
 293 #define S_IFLNK         0120000         /* [XSI] symbolic link */ 
 294 #define S_IFSOCK        0140000         /* [XSI] socket */ 
 295 #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE) 
 296 #define S_IFWHT         0160000         /* whiteout */ 
 300 /* Read, write, execute/search by owner */ 
 301 #define S_IRWXU         0000700         /* [XSI] RWX mask for owner */ 
 302 #define S_IRUSR         0000400         /* [XSI] R for owner */ 
 303 #define S_IWUSR         0000200         /* [XSI] W for owner */ 
 304 #define S_IXUSR         0000100         /* [XSI] X for owner */ 
 305 /* Read, write, execute/search by group */ 
 306 #define S_IRWXG         0000070         /* [XSI] RWX mask for group */ 
 307 #define S_IRGRP         0000040         /* [XSI] R for group */ 
 308 #define S_IWGRP         0000020         /* [XSI] W for group */ 
 309 #define S_IXGRP         0000010         /* [XSI] X for group */ 
 310 /* Read, write, execute/search by others */ 
 311 #define S_IRWXO         0000007         /* [XSI] RWX mask for other */ 
 312 #define S_IROTH         0000004         /* [XSI] R for other */ 
 313 #define S_IWOTH         0000002         /* [XSI] W for other */ 
 314 #define S_IXOTH         0000001         /* [XSI] X for other */ 
 316 #define S_ISUID         0004000         /* [XSI] set user id on execution */ 
 317 #define S_ISGID         0002000         /* [XSI] set group id on execution */ 
 318 #define S_ISVTX         0001000         /* [XSI] directory restrcted delete */ 
 320 #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE) 
 321 #define S_ISTXT         S_ISVTX         /* sticky bit: not supported */ 
 322 #define S_IREAD         S_IRUSR         /* backward compatability */ 
 323 #define S_IWRITE        S_IWUSR         /* backward compatability */ 
 324 #define S_IEXEC         S_IXUSR         /* backward compatability */ 
 328 #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE) 
 329 /* allocate flags (F_PREALLOCATE) */ 
 331 #define F_ALLOCATECONTIG  0x00000002    /* allocate contigious space */ 
 332 #define F_ALLOCATEALL     0x00000004    /* allocate all requested space or no space at all */ 
 334 /* Position Modes (fst_posmode) for F_PREALLOCATE */ 
 336 #define F_PEOFPOSMODE 3                 /* Make it past all of the SEEK pos modes so that */ 
 337                                         /* we can keep them in sync should we desire */  
 338 #define F_VOLPOSMODE    4               /* specify volume starting postion */ 
 339 #endif /* (_POSIX_C_SOURCE && !_DARWIN_C_SOURCE) */ 
 342  * Advisory file segment locking data type - 
 343  * information passed to system by user 
 346         off_t   l_start
;        /* starting offset */ 
 347         off_t   l_len
;          /* len = 0 means until end of file */ 
 348         pid_t   l_pid
;          /* lock owner */ 
 349         short   l_type
;         /* lock type: read/write, etc. */ 
 350         short   l_whence
;       /* type of l_start */ 
 354 #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE) 
 356  * advisory file read data type - 
 357  * information passed by user to system 
 361 #pragma pack(4) /* prevent structure padding in kernel */ 
 374  * detached code signatures data type - 
 375  * information passed by user to system used by F_ADDSIGS and F_ADDFILESIGS. 
 376  * F_ADDFILESIGS is a shortcut for files that contain their own signature and 
 377  * doesn't require mapping of the file in order to load the signature. 
 379 typedef struct fsignatures 
{ 
 385 /* LP64 version of fsignatures.  all pointers  
 386  * grow when we're dealing with a 64-bit process. 
 387  * WARNING - keep in sync with fsignatures 
 390 typedef struct user32_fsignatures 
{ 
 392         user32_addr_t   fs_blob_start
; 
 393         user32_size_t   fs_blob_size
; 
 394 } user32_fsignatures_t
; 
 396 typedef struct user_fsignatures 
{ 
 397         off_t           fs_file_start
;  /* offset of Mach-O image in FAT file */ 
 398         user_addr_t     fs_blob_start
;  /* F_ADDSIGS: mem address of signature*/ 
 399                                         /* F_ADDFILESIGS: offset of signature */ 
 400                                         /*                in Mach-O image     */ 
 401         user_size_t     fs_blob_size
;   /* size of signature blob             */ 
 402 } user_fsignatures_t
; 
 405 /* lock operations for flock(2) */ 
 406 #define LOCK_SH         0x01            /* shared file lock */ 
 407 #define LOCK_EX         0x02            /* exclusive file lock */ 
 408 #define LOCK_NB         0x04            /* don't block when locking */ 
 409 #define LOCK_UN         0x08            /* unlock file */ 
 411 /*  fstore_t type used by F_DEALLOCATE and F_PREALLOCATE commands */ 
 413 typedef struct fstore 
{ 
 414         unsigned int fst_flags
; /* IN: flags word */ 
 415         int     fst_posmode
;    /* IN: indicates use of offset field */ 
 416         off_t   fst_offset
;     /* IN: start of the region */ 
 417         off_t   fst_length
;     /* IN: size of the region */ 
 418         off_t   fst_bytesalloc
; /* OUT: number of bytes allocated */ 
 421 /* fbootstraptransfer_t used by F_READBOOTSTRAP and F_WRITEBOOTSTRAP commands */ 
 423 typedef struct fbootstraptransfer 
{ 
 424   off_t fbt_offset
;             /* IN: offset to start read/write */ 
 425   size_t fbt_length
;          /* IN: number of bytes to transfer */ 
 426   void *fbt_buffer
;             /* IN: buffer to be read/written */ 
 427 } fbootstraptransfer_t
; 
 430 /* LP64 version of fbootstraptransfer.  all pointers  
 431  * grow when we're dealing with a 64-bit process. 
 432  * WARNING - keep in sync with fbootstraptransfer 
 435 typedef struct user32_fbootstraptransfer 
{ 
 436   off_t fbt_offset
;             /* IN: offset to start read/write */ 
 437   user32_size_t fbt_length
;          /* IN: number of bytes to transfer */ 
 438   user32_addr_t fbt_buffer
;             /* IN: buffer to be read/written */ 
 439 } user32_fbootstraptransfer_t
; 
 441 typedef struct user_fbootstraptransfer 
{ 
 442   off_t fbt_offset
;             /* IN: offset to start read/write */ 
 443   user_size_t fbt_length
;               /* IN: number of bytes to transfer */ 
 444   user_addr_t fbt_buffer
;               /* IN: buffer to be read/written */ 
 445 } user_fbootstraptransfer_t
; 
 450  * For F_LOG2PHYS this information is passed back to user 
 451  * Currently only devoffset is returned - that is the VOP_BMAP 
 452  * result - the disk device address corresponding to the 
 453  * current file offset (likely set with an lseek). 
 455  * The flags could hold an indication of whether the # of  
 456  * contiguous bytes reflects the true extent length on disk, 
 457  * or is an advisory value that indicates there is at least that 
 458  * many bytes contiguous.  For some filesystems it might be too 
 459  * inefficient to provide anything beyond the advisory value. 
 460  * Flags and contiguous bytes return values are not yet implemented. 
 461  * For them the fcntl will nedd to switch from using BMAP to CMAP 
 462  * and a per filesystem type flag will be needed to interpret the 
 463  * contiguous bytes count result from CMAP. 
 468         unsigned int    l2p_flags
;              /* unused so far */ 
 469         off_t           l2p_contigbytes
;        /* unused so far */ 
 470         off_t           l2p_devoffset
;  /* bytes into device */ 
 475 #define O_POPUP    0x80000000   /* force window to popup on open */ 
 476 #define O_ALERT    0x20000000   /* small, clean popup window */ 
 480  * SPI: Argument data for F_OPENFROM 
 483         unsigned int    o_flags
;        /* same as open(2) */ 
 484         mode_t          o_mode
;         /* same as open(2) */ 
 485         char *          o_pathname
;     /* relative pathname */ 
 490  * LP64 version of fopenfrom.  Memory pointers  
 491  * grow when we're dealing with a 64-bit process. 
 493  * WARNING - keep in sync with fopenfrom (above) 
 495 struct user32_fopenfrom 
{ 
 496         unsigned int    o_flags
; 
 498         user32_addr_t   o_pathname
; 
 501 struct user_fopenfrom 
{ 
 502         unsigned int    o_flags
; 
 504         user_addr_t     o_pathname
; 
 510 #endif /* (_POSIX_C_SOURCE && !_DARWIN_C_SOURCE) */ 
 514 #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE) 
 517 typedef struct _filesec 
*filesec_t
; 
 528 /* XXX these are private to the implementation */ 
 529         FILESEC_ACL_RAW 
= 100, 
 530         FILESEC_ACL_ALLOCSIZE 
= 101 
 531 } filesec_property_t
; 
 533 /* XXX backwards compatibility */ 
 534 #define FILESEC_GUID FILESEC_UUID 
 535 #endif /* (_POSIX_C_SOURCE && !_DARWIN_C_SOURCE) */ 
 538 int     open(const char *, int, ...) __DARWIN_ALIAS_C(open
); 
 539 int     creat(const char *, mode_t
) __DARWIN_ALIAS_C(creat
); 
 540 int     fcntl(int, int, ...) __DARWIN_ALIAS_C(fcntl
); 
 541 #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE) 
 542 int     openx_np(const char *, int, filesec_t
); 
 544 filesec_t 
filesec_init(void); 
 545 filesec_t 
filesec_dup(filesec_t
); 
 546 void    filesec_free(filesec_t
); 
 547 int     filesec_get_property(filesec_t
, filesec_property_t
, void *); 
 548 int     filesec_query_property(filesec_t
, filesec_property_t
, int *); 
 549 int     filesec_set_property(filesec_t
, filesec_property_t
, const void *); 
 550 int     filesec_unset_property(filesec_t
, filesec_property_t
); 
 551 #define _FILESEC_UNSET_PROPERTY ((void *)0) 
 552 #define _FILESEC_REMOVE_ACL     ((void *)1) 
 553 #endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */ 
 557 #endif /* !_SYS_FCNTL_H_ */