/*
    AUTOMATICALLY GENERATED BY tspec 2.10
    API SUBSET: xpg3:sys/shm.h:shm_proto
*/

#ifndef __TDF_XPG3_SYS_SHM_H_SHM_PROTO
#define __TDF_XPG3_SYS_SHM_H_SHM_PROTO

#ifdef __cplusplus
extern "C" {
#endif

#pragma TenDRA declaration block subset__xpg3__sys_shm begin

#ifndef __TDF_XPG3_SYS_TYPES_H
#pragma extend interface "../../xpg3.api/sys/types.h"
#endif /* __TDF_XPG3_SYS_TYPES_H */
#ifndef __TDF_XPG3_SYS_IPC_H
#pragma extend interface "../../xpg3.api/sys/ipc.h"
#endif /* __TDF_XPG3_SYS_IPC_H */
#pragma token EXP rvalue : int : SHMLBA # xpg3.shm.SHMLBA
#pragma token EXP const : int : SHM_RDONLY # xpg3.shm.SHM_RDONLY
#pragma token EXP const : int : SHM_RND # xpg3.shm.SHM_RND
/* This is unsigned short in xpg3, unsigned long in sysv */
#if __STRICT_SYSV
typedef unsigned long __local_shm_nattch_t;
#else /* __STRICT_SYSV */
#if __STRICT_XPG3
typedef unsigned short __local_shm_nattch_t;
#else /* __STRICT_XPG3 */
#pragma token VARIETY __local_shm_nattch_t # xpg3.shm.__local_shm_nattch_t
#endif /* __STRICT_XPG3 */
#endif /* __STRICT_SYSV */
/* This type has been abstracted */
#if __STRICT_XPG3
typedef pid_t __local_shm_pid_t;
#else /* __STRICT_XPG3 */
#pragma token VARIETY __local_shm_pid_t # xpg3.shm.__local_shm_pid_t
#endif /* __STRICT_XPG3 */
#pragma token STRUCT TAG shmid_ds # xpg3.shm.shmid_ds
#pragma token MEMBER struct ipc_perm : struct shmid_ds : shm_perm # xpg3.shm.shmid_ds.shm_perm
#pragma token MEMBER int : struct shmid_ds : shm_segsz # xpg3.shm.shmid_ds.shm_segsz
#pragma token MEMBER __local_shm_pid_t : struct shmid_ds : shm_lpid # xpg3.shm.shmid_ds.shm_lpid
#pragma token MEMBER __local_shm_pid_t : struct shmid_ds : shm_cpid # xpg3.shm.shmid_ds.shm_cpid
#pragma token MEMBER __local_shm_nattch_t : struct shmid_ds : shm_nattch # xpg3.shm.shmid_ds.shm_nattch
#pragma token MEMBER time_t : struct shmid_ds : shm_atime # xpg3.shm.shmid_ds.shm_atime
#pragma token MEMBER time_t : struct shmid_ds : shm_dtime # xpg3.shm.shmid_ds.shm_dtime
#pragma token MEMBER time_t : struct shmid_ds : shm_ctime # xpg3.shm.shmid_ds.shm_ctime
#ifndef __BUILDING_LIBS
#pragma token FUNC int (int, int, struct shmid_ds *) : shmctl # xpg3.shm.shmctl
#else /* __BUILDING_LIBS */
#pragma token FUNC int (int, int, struct shmid_ds *) : __old_shmctl # xpg3.shm.shmctl
#endif /* __BUILDING_LIBS */

#pragma interface SHMLBA SHM_RDONLY SHM_RND
#if __STRICT_SYSV
#else /* __STRICT_SYSV */
#if __STRICT_XPG3
#else /* __STRICT_XPG3 */
#pragma interface __local_shm_nattch_t
#endif /* __STRICT_XPG3 */
#endif /* __STRICT_SYSV */
#if __STRICT_XPG3
#else /* __STRICT_XPG3 */
#pragma interface __local_shm_pid_t
#endif /* __STRICT_XPG3 */
#pragma interface TAG shmid_ds TAG shmid_ds.shm_perm TAG shmid_ds.shm_segsz
#pragma interface TAG shmid_ds.shm_lpid TAG shmid_ds.shm_cpid
#pragma interface TAG shmid_ds.shm_nattch TAG shmid_ds.shm_atime
#pragma interface TAG shmid_ds.shm_dtime TAG shmid_ds.shm_ctime
#ifndef __BUILDING_LIBS
#pragma interface shmctl
#else /* __BUILDING_LIBS */
#pragma interface __old_shmctl
#endif /* __BUILDING_LIBS */

#pragma TenDRA declaration block end

#ifdef __cplusplus
}
#endif

#endif /* __TDF_XPG3_SYS_SHM_H_SHM_PROTO */
