# Generated by h2py from /usr/include/fcntl.h

# Included from standards.h

# Included from sys/types.h

# Included from sys/m_types.h
TRUE = 1
FALSE = 0
NBBY = 8
FHSIZE = 32

# Included from sys/select.h

# Included from sys/time.h
ITIMER_REAL = 0
ITIMER_VIRTUAL = 1
ITIMER_PROF = 2
ITIMER_VIRT = 3
TIMEOFDAY = 9
TIMERID_ALRM = (ITIMER_REAL)
TIMERID_REAL = (ITIMER_REAL)
TIMERID_VIRTUAL = (ITIMER_VIRTUAL)
TIMERID_PROF = (ITIMER_PROF)
TIMERID_VIRT = (ITIMER_VIRT)
TIMERID_TOD = (TIMERID_VIRT+1)
NALRM = 1
NPROF = 1
NVIRTUAL = 2
NTIMEOFDAY = 5
NTIMERS = (NALRM + NPROF + NVIRTUAL + NTIMEOFDAY)
MIN_SECS_SINCE_EPOCH = 0
uS_PER_SECOND = (1000000)
NS_PER_uS = (1000)
MAX_SECS_TO_uS = 4000
MAX_NS_TO_uS = 294967296
NS_PER_SEC = 1000000000
uS_PER_SEC = (NS_PER_SEC / 1000)
NS_PER_MSEC = (NS_PER_SEC / 1000)
MAX_DEC_SECS = 2
MAX_DEC_NS = 147483647
DST_NONE = 0
DST_USA = 1
DST_AUST = 2
DST_WET = 3
DST_MET = 4
DST_EET = 5
DST_CAN = 6

# Included from time.h

# Included from stddef.h
CLOCKS_PER_SEC = 1000000
CLK_TCK = 100
TIMELEN = 26
NLTBMAX = 64
NO_TIMEOUT = 0
INF_TIMEOUT = -1
def NFDS(x): return ((x) & 0x0000FFFF)

def LOW_HALF(x): return NFDS(x)

def NMSGS(x): return (((x) >> 16) & 0x0000FFFF)

def HIGH_HALF(x): return NMSGS(x)

FD_SETSIZE = 2048
def major(__x): return (int)((unsigned)(__x)>>16)

def minor(__x): return (int)((__x)&0xFFFF)


# Included from sys/flock.h
F_RDLCK = 01
F_WRLCK = 02
F_UNLCK = 03
INOFLCK = 1
SETFLCK = 2
SLPFLCK = 4
LCK_UNBLOCK = 0
LCK_BLOCKER = 1
LCK_BLOCKED = 2
LCK_WASBLOCK = 4
MAXEND = 017777777777
RMTLOCK = 1
def ENF_LOCK(mode): return (((mode) & (ISGID | IEXEC | (IEXEC >> 3) | (IEXEC >> 6))) == ISGID)

O_RDONLY = 00000000
O_WRONLY = 00000001
O_RDWR = 00000002
O_ACCMODE = 3
O_NONBLOCK = 00000004
O_APPEND = 00000010
O_CREAT = 00000400
O_TRUNC = 00001000
O_EXCL = 00002000
O_NOCTTY = 00004000
F_DUPFD = 0
F_GETFD = 1
F_SETFD = 2
F_GETFL = 3
F_SETFL = 4
F_GETLK = 5
F_SETLK = 6
F_SETLKW = 7
FD_CLOEXEC = 1
O_SYNC = 00000020
O_NONE = 00000003
O_EXEC = 00000040
O_RSHARE = 00010000
O_DEFER = 00020000
O_DELAY = 00040000
O_NDELAY = 00100000
O_NSHARE = 00200000
F_GETOWN = 8
F_SETOWN = 9
F_CLOSEM = 10
FNDELAY = O_NONBLOCK
O_NDELAY = O_NONBLOCK
FNDELAY = O_NDELAY
FNONBLOCK = O_NONBLOCK
FAPPEND = O_APPEND
FSYNC = O_SYNC
FASYNC = 00400000
FOPEN = (-1)
FREAD = (O_RDONLY-FOPEN)
FWRITE = (O_WRONLY-FOPEN)
FMPX = 00000200
FMASK = 00374377
FFCNTL = (FNONBLOCK|FNDELAY|FAPPEND|FSYNC|FASYNC)
FCREAT = O_CREAT
FTRUNC = O_TRUNC
FEXCL = O_EXCL
FRSHARE = O_RSHARE
FDEFER = O_DEFER
FDELAY = O_DELAY
FNDELAY = O_NDELAY
FNSHARE = O_NSHARE
FEXEC = O_EXEC
FNOCTTY = O_NOCTTY
FMOUNT = 01000000
FREVOKED = 0x20000000
FKERNEL = 0x40000000
FAIO = 00000100
FDOCLONE = 0x10000000
