root/headers/posix/sys/ipc.h
/*
 * Copyright 2008-2012 Haiku, Inc. All Rights Reserved.
 * Distributed under the terms of the MIT License.
 */
#ifndef _SYS_IPC_H
#define _SYS_IPC_H


#include <sys/cdefs.h>
#include <sys/types.h>


/* Mode bits for msgget(), semget(), and shmget() */
#define IPC_CREAT       01000   /* create key */
#define IPC_EXCL        02000   /* fail if key exists */
#define IPC_NOWAIT      04000   /* do not block */

/* Control commands for msgctl(), semctl(), and shmctl() */
#define IPC_RMID        0               /* remove identifier */
#define IPC_SET         1               /* set options */
#define IPC_STAT        2               /* get options */

/* Private key */
#define IPC_PRIVATE             (key_t)0


struct ipc_perm {
        key_t   key;                    /* IPC identifier */
        uid_t   uid;                    /* owner's user ID */
        gid_t   gid;                    /* owner's group ID */
        uid_t   cuid;                   /* creator's user ID */
        gid_t   cgid;                   /* creator's group ID */
        mode_t  mode;                   /* Read/write permission */
};


__BEGIN_DECLS

key_t ftok(const char *path, int id);

__END_DECLS

#endif  /* _SYS_IPC_H */