zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

ipc.h (6912B) - Raw


      1 /*
      2  * Copyright (c) 2000-2002 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 /*
     29  * Copyright (c) 1988 University of Utah.
     30  * Copyright (c) 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  * This code is derived from software contributed to Berkeley by
     39  * the Systems Programming Group of the University of Utah Computer
     40  * Science Department.
     41  *
     42  * Redistribution and use in source and binary forms, with or without
     43  * modification, are permitted provided that the following conditions
     44  * are met:
     45  * 1. Redistributions of source code must retain the above copyright
     46  *    notice, this list of conditions and the following disclaimer.
     47  * 2. Redistributions in binary form must reproduce the above copyright
     48  *    notice, this list of conditions and the following disclaimer in the
     49  *    documentation and/or other materials provided with the distribution.
     50  * 3. All advertising materials mentioning features or use of this software
     51  *    must display the following acknowledgement:
     52  *	This product includes software developed by the University of
     53  *	California, Berkeley and its contributors.
     54  * 4. Neither the name of the University nor the names of its contributors
     55  *    may be used to endorse or promote products derived from this software
     56  *    without specific prior written permission.
     57  *
     58  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
     59  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
     60  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
     61  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
     62  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
     63  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
     64  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
     65  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
     66  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
     67  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
     68  * SUCH DAMAGE.
     69  *
     70  *	@(#)ipc.h	8.4 (Berkeley) 2/19/95
     71  */
     72 
     73 /*
     74  * SVID compatible ipc.h file
     75  */
     76 #ifndef _SYS_IPC_H_
     77 #define _SYS_IPC_H_
     78 
     79 #include <sys/appleapiopts.h>
     80 #include <sys/cdefs.h>
     81 
     82 #include <sys/_types.h>
     83 
     84 /*
     85  * [XSI] The uid_t, gid_t, mode_t, and key_t types SHALL be defined as
     86  * described in <sys/types.h>.
     87  */
     88 #include <sys/_types/_uid_t.h>
     89 #include <sys/_types/_gid_t.h>
     90 #include <sys/_types/_mode_t.h>
     91 #include <sys/_types/_key_t.h>
     92 
     93 
     94 #pragma pack(4)
     95 
     96 /*
     97  * Technically, we should force all code references to the new structure
     98  * definition, not in just the standards conformance case, and leave the
     99  * legacy interface there for binary compatibility only.  Currently, we
    100  * are only forcing this for programs requesting standards conformance.
    101  */
    102 #if __DARWIN_UNIX03 || defined(KERNEL)
    103 /*
    104  * [XSI] Information used in determining permission to perform an IPC
    105  * operation
    106  */
    107 struct ipc_perm {
    108 	uid_t           uid;            /* [XSI] Owner's user ID */
    109 	gid_t           gid;            /* [XSI] Owner's group ID */
    110 	uid_t           cuid;           /* [XSI] Creator's user ID */
    111 	gid_t           cgid;           /* [XSI] Creator's group ID */
    112 	mode_t          mode;           /* [XSI] Read/write permission */
    113 	unsigned short  _seq;           /* Reserved for internal use */
    114 	key_t           _key;           /* Reserved for internal use */
    115 };
    116 #define __ipc_perm_new  ipc_perm
    117 #else   /* !__DARWIN_UNIX03 */
    118 #define ipc_perm        __ipc_perm_old
    119 #endif  /* !__DARWIN_UNIX03 */
    120 
    121 #if !__DARWIN_UNIX03
    122 /*
    123  * Legacy structure; this structure is maintained for binary backward
    124  * compatability with previous versions of the interface.  New code
    125  * should not use this interface, since ID values may be truncated.
    126  */
    127 struct __ipc_perm_old {
    128 	__uint16_t      cuid;           /* Creator's user ID */
    129 	__uint16_t      cgid;           /* Creator's group ID */
    130 	__uint16_t      uid;            /* Owner's user ID */
    131 	__uint16_t      gid;            /* Owner's group ID */
    132 	mode_t          mode;           /* Read/Write permission */
    133 	__uint16_t      seq;            /* Reserved for internal use */
    134 	key_t           key;            /* Reserved for internal use */
    135 };
    136 #endif  /* !__DARWIN_UNIX03 */
    137 
    138 #pragma pack()
    139 
    140 /*
    141  * [XSI] Definitions shall be provided for the following constants:
    142  */
    143 
    144 /* Mode bits */
    145 #define IPC_CREAT       001000          /* Create entry if key does not exist */
    146 #define IPC_EXCL        002000          /* Fail if key exists */
    147 #define IPC_NOWAIT      004000          /* Error if request must wait */
    148 
    149 /* Keys */
    150 #define IPC_PRIVATE     ((key_t)0)      /* Private key */
    151 
    152 /* Control commands */
    153 #define IPC_RMID        0               /* Remove identifier */
    154 #define IPC_SET         1               /* Set options */
    155 #define IPC_STAT        2               /* Get options */
    156 
    157 
    158 #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
    159 
    160 /* common mode bits */
    161 #define IPC_R           000400          /* Read permission */
    162 #define IPC_W           000200          /* Write/alter permission */
    163 #define IPC_M           010000          /* Modify control info permission */
    164 
    165 #endif  /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
    166 
    167 
    168 
    169 
    170 __BEGIN_DECLS
    171 /* [XSI] */
    172 key_t   ftok(const char *, int);
    173 __END_DECLS
    174 
    175 
    176 #endif /* !_SYS_IPC_H_ */