home *** CD-ROM | disk | FTP | other *** search
/ H4CK3R 4 / hacker04 / 04_HACK04.ISO / darwin / darwinx86.iso / usr / include / sys / ipc.h < prev    next >
Encoding:
C/C++ Source or Header  |  2001-09-30  |  4.7 KB  |  121 lines

  1. /*
  2.  * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
  3.  *
  4.  * @APPLE_LICENSE_HEADER_START@
  5.  * 
  6.  * The contents of this file constitute Original Code as defined in and
  7.  * are subject to the Apple Public Source License Version 1.1 (the
  8.  * "License").  You may not use this file except in compliance with the
  9.  * License.  Please obtain a copy of the License at
  10.  * http://www.apple.com/publicsource and read it before using this file.
  11.  * 
  12.  * This Original Code and all software distributed under the License are
  13.  * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
  14.  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
  15.  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
  16.  * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT.  Please see the
  17.  * License for the specific language governing rights and limitations
  18.  * under the License.
  19.  * 
  20.  * @APPLE_LICENSE_HEADER_END@
  21.  */
  22. /*
  23.  * Copyright (c) 1988 University of Utah.
  24.  * Copyright (c) 1990, 1993
  25.  *    The Regents of the University of California.  All rights reserved.
  26.  * (c) UNIX System Laboratories, Inc.
  27.  * All or some portions of this file are derived from material licensed
  28.  * to the University of California by American Telephone and Telegraph
  29.  * Co. or Unix System Laboratories, Inc. and are reproduced herein with
  30.  * the permission of UNIX System Laboratories, Inc.
  31.  *
  32.  * This code is derived from software contributed to Berkeley by
  33.  * the Systems Programming Group of the University of Utah Computer
  34.  * Science Department.
  35.  *
  36.  * Redistribution and use in source and binary forms, with or without
  37.  * modification, are permitted provided that the following conditions
  38.  * are met:
  39.  * 1. Redistributions of source code must retain the above copyright
  40.  *    notice, this list of conditions and the following disclaimer.
  41.  * 2. Redistributions in binary form must reproduce the above copyright
  42.  *    notice, this list of conditions and the following disclaimer in the
  43.  *    documentation and/or other materials provided with the distribution.
  44.  * 3. All advertising materials mentioning features or use of this software
  45.  *    must display the following acknowledgement:
  46.  *    This product includes software developed by the University of
  47.  *    California, Berkeley and its contributors.
  48.  * 4. Neither the name of the University nor the names of its contributors
  49.  *    may be used to endorse or promote products derived from this software
  50.  *    without specific prior written permission.
  51.  *
  52.  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  53.  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  54.  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  55.  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  56.  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  57.  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  58.  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  59.  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  60.  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  61.  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  62.  * SUCH DAMAGE.
  63.  *
  64.  *    @(#)ipc.h    8.4 (Berkeley) 2/19/95
  65.  */
  66.  
  67. /*
  68.  * SVID compatible ipc.h file
  69.  */
  70. #ifndef _SYS_IPC_H_
  71. #define _SYS_IPC_H_
  72.  
  73. struct ipc_perm {
  74.     ushort    cuid;    /* creator user id */
  75.     ushort    cgid;    /* creator group id */
  76.     ushort    uid;    /* user id */
  77.     ushort    gid;    /* group id */
  78.     ushort    mode;    /* r/w permission */
  79.     ushort    seq;    /* sequence # (to generate unique msg/sem/shm id) */
  80.     key_t    key;    /* user specified msg/sem/shm key */
  81. };
  82.  
  83. /* common mode bits */
  84. #define    IPC_R        000400    /* read permission */
  85. #define    IPC_W        000200    /* write/alter permission */
  86. #define    IPC_M        010000    /* permission to change control info */
  87.  
  88. /* SVID required constants (same values as system 5) */
  89. #define    IPC_CREAT    001000    /* create entry if key does not exist */
  90. #define    IPC_EXCL    002000    /* fail if key exists */
  91. #define    IPC_NOWAIT    004000    /* error if request must wait */
  92.  
  93. #define    IPC_PRIVATE    (key_t)0 /* private key */
  94.  
  95. #define    IPC_RMID    0    /* remove identifier */
  96. #define    IPC_SET        1    /* set options */
  97. #define    IPC_STAT    2    /* get options */
  98.  
  99. #ifdef KERNEL
  100. /* Macros to convert between ipc ids and array indices or sequence ids */
  101. #define    IPCID_TO_IX(id)        ((id) & 0xffff)
  102. #define    IPCID_TO_SEQ(id)    (((id) >> 16) & 0xffff)
  103. #define    IXSEQ_TO_IPCID(ix,perm)    (((perm.seq) << 16) | (ix & 0xffff))
  104.  
  105. struct ucred;
  106.  
  107. int    ipcperm __P((struct ucred *, struct ipc_perm *, int));
  108. #else /* ! KERNEL */
  109.  
  110. /* XXX doesn't really belong here, but has been historical practice in SysV. */
  111.  
  112. #include <sys/cdefs.h>
  113.  
  114. __BEGIN_DECLS
  115. key_t    ftok __P((const char *, int));
  116. __END_DECLS
  117.  
  118. #endif /* KERNEL */
  119.  
  120. #endif /* !_SYS_IPC_H_ */
  121.