/*
    AUTOMATICALLY GENERATED BY tspec 2.10
    API SUBSET: posix:fcntl.h
*/

#ifndef __TDF_POSIX_FCNTL_H
#define __TDF_POSIX_FCNTL_H

#ifdef __cplusplus
extern "C" {
#endif

#pragma TenDRA declaration block api__posix__fcntl begin

#ifndef __TDF_POSIX_SYS_TYPES_H
#pragma extend interface "../posix.api/sys/types.h"
#endif /* __TDF_POSIX_SYS_TYPES_H */
#ifndef __TDF_POSIX_SYS_STAT_H
#pragma extend interface "../posix.api/sys/stat.h"
#endif /* __TDF_POSIX_SYS_STAT_H */
#ifndef __TDF_POSIX_UNISTD_H_U_PROTO
#pragma extend interface "../shared/posix.api/u_proto.h"
#endif /* __TDF_POSIX_UNISTD_H_U_PROTO */
#pragma token EXP const : int : F_DUPFD # posix.fcntl.F_DUPFD
#pragma token EXP const : int : F_GETFD # posix.fcntl.F_GETFD
#pragma token EXP const : int : F_SETFD # posix.fcntl.F_SETFD
#pragma token EXP const : int : F_GETFL # posix.fcntl.F_GETFL
#pragma token EXP const : int : F_SETFL # posix.fcntl.F_SETFL
#pragma token EXP const : int : F_GETLK # posix.fcntl.F_GETLK
#pragma token EXP const : int : F_SETLK # posix.fcntl.F_SETLK
#pragma token EXP const : int : F_SETLKW # posix.fcntl.F_SETLKW
#pragma token EXP const : int : FD_CLOEXEC # posix.fcntl.FD_CLOEXEC
#pragma token EXP const : int : F_RDLCK # posix.fcntl.F_RDLCK
#pragma token EXP const : int : F_UNLCK # posix.fcntl.F_UNLCK
#pragma token EXP const : int : F_WRLCK # posix.fcntl.F_WRLCK
#pragma token EXP const : int : O_CREAT # posix.fcntl.O_CREAT
#pragma token EXP const : int : O_EXCL # posix.fcntl.O_EXCL
#pragma token EXP const : int : O_NOCTTY # posix.fcntl.O_NOCTTY
#pragma token EXP const : int : O_TRUNC # posix.fcntl.O_TRUNC
#pragma token EXP const : int : O_APPEND # posix.fcntl.O_APPEND
#pragma token EXP const : int : O_NONBLOCK # posix.fcntl.O_NONBLOCK
#pragma token EXP const : int : O_ACCMODE # posix.fcntl.O_ACCMODE
#pragma token EXP const : int : O_RDONLY # posix.fcntl.O_RDONLY
#pragma token EXP const : int : O_RDWR # posix.fcntl.O_RDWR
#pragma token EXP const : int : O_WRONLY # posix.fcntl.O_WRONLY
/* This type is abstracted */
#if __STRICT_POSIX
typedef pid_t __local_fcntl_pid_t;
#else /* __STRICT_POSIX */
#pragma token VARIETY __local_fcntl_pid_t # posix.fcntl.__local_fcntl_pid_t
#pragma token PROC (EXP rvalue : __local_fcntl_pid_t : ) EXP rvalue : pid_t : __fcntl_pid2pid # posix.fcntl.__fcntl_pid2pid
#pragma token PROC (EXP rvalue : pid_t : ) EXP rvalue : __local_fcntl_pid_t : __pid2fcntl_pid # posix.fcntl.__pid2fcntl_pid
#ifndef __BUILDING_LIBS
#pragma accept conversion __fcntl_pid2pid
#pragma accept conversion __pid2fcntl_pid
#endif /* __BUILDING_LIBS */
#endif /* __STRICT_POSIX */
#pragma token STRUCT TAG flock # posix.fcntl.flock
#pragma token MEMBER short : struct flock : l_type # posix.fcntl.flock.l_type
#pragma token MEMBER short : struct flock : l_whence # posix.fcntl.flock.l_whence
#pragma token MEMBER off_t : struct flock : l_start # posix.fcntl.flock.l_start
#pragma token MEMBER off_t : struct flock : l_len # posix.fcntl.flock.l_len
#pragma token MEMBER __local_fcntl_pid_t : struct flock : l_pid # posix.fcntl.flock.l_pid
#pragma token FUNC int (const char *, int, ...) : open # posix.fcntl.open
#pragma token FUNC int (int, int, ...) : fcntl # posix.fcntl.fcntl
#pragma token FUNC int (const char *, mode_t) : creat # posix.fcntl.creat

#pragma interface F_DUPFD F_GETFD F_SETFD F_GETFL F_SETFL F_GETLK F_SETLK
#pragma interface F_SETLKW FD_CLOEXEC F_RDLCK F_UNLCK F_WRLCK O_CREAT O_EXCL
#pragma interface O_NOCTTY O_TRUNC O_APPEND O_NONBLOCK O_ACCMODE O_RDONLY
#pragma interface O_RDWR O_WRONLY
#if __STRICT_POSIX
#else /* __STRICT_POSIX */
#pragma interface __local_fcntl_pid_t __fcntl_pid2pid __pid2fcntl_pid
#endif /* __STRICT_POSIX */
#pragma interface TAG flock TAG flock.l_type TAG flock.l_whence
#pragma interface TAG flock.l_start TAG flock.l_len TAG flock.l_pid creat

#pragma TenDRA declaration block end

#ifdef __cplusplus
}
#endif

#endif /* __TDF_POSIX_FCNTL_H */
