cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

fcntl.h (5257B)


      1#ifndef _ASM_GENERIC_FCNTL_H
      2#define _ASM_GENERIC_FCNTL_H
      3
      4#include <linux/types.h>
      5
      6/*
      7 * FMODE_EXEC is 0x20
      8 * FMODE_NONOTIFY is 0x4000000
      9 * These cannot be used by userspace O_* until internal and external open
     10 * flags are split.
     11 * -Eric Paris
     12 */
     13
     14/*
     15 * When introducing new O_* bits, please check its uniqueness in fcntl_init().
     16 */
     17
     18#define O_ACCMODE	00000003
     19#define O_RDONLY	00000000
     20#define O_WRONLY	00000001
     21#define O_RDWR		00000002
     22#ifndef O_CREAT
     23#define O_CREAT		00000100	/* not fcntl */
     24#endif
     25#ifndef O_EXCL
     26#define O_EXCL		00000200	/* not fcntl */
     27#endif
     28#ifndef O_NOCTTY
     29#define O_NOCTTY	00000400	/* not fcntl */
     30#endif
     31#ifndef O_TRUNC
     32#define O_TRUNC		00001000	/* not fcntl */
     33#endif
     34#ifndef O_APPEND
     35#define O_APPEND	00002000
     36#endif
     37#ifndef O_NONBLOCK
     38#define O_NONBLOCK	00004000
     39#endif
     40#ifndef O_DSYNC
     41#define O_DSYNC		00010000	/* used to be O_SYNC, see below */
     42#endif
     43#ifndef FASYNC
     44#define FASYNC		00020000	/* fcntl, for BSD compatibility */
     45#endif
     46#ifndef O_DIRECT
     47#define O_DIRECT	00040000	/* direct disk access hint */
     48#endif
     49#ifndef O_LARGEFILE
     50#define O_LARGEFILE	00100000
     51#endif
     52#ifndef O_DIRECTORY
     53#define O_DIRECTORY	00200000	/* must be a directory */
     54#endif
     55#ifndef O_NOFOLLOW
     56#define O_NOFOLLOW	00400000	/* don't follow links */
     57#endif
     58#ifndef O_NOATIME
     59#define O_NOATIME	01000000
     60#endif
     61#ifndef O_CLOEXEC
     62#define O_CLOEXEC	02000000	/* set close_on_exec */
     63#endif
     64
     65/*
     66 * Before Linux 2.6.33 only O_DSYNC semantics were implemented, but using
     67 * the O_SYNC flag.  We continue to use the existing numerical value
     68 * for O_DSYNC semantics now, but using the correct symbolic name for it.
     69 * This new value is used to request true Posix O_SYNC semantics.  It is
     70 * defined in this strange way to make sure applications compiled against
     71 * new headers get at least O_DSYNC semantics on older kernels.
     72 *
     73 * This has the nice side-effect that we can simply test for O_DSYNC
     74 * wherever we do not care if O_DSYNC or O_SYNC is used.
     75 *
     76 * Note: __O_SYNC must never be used directly.
     77 */
     78#ifndef O_SYNC
     79#define __O_SYNC	04000000
     80#define O_SYNC		(__O_SYNC|O_DSYNC)
     81#endif
     82
     83#ifndef O_PATH
     84#define O_PATH		010000000
     85#endif
     86
     87#ifndef __O_TMPFILE
     88#define __O_TMPFILE	020000000
     89#endif
     90
     91/* a horrid kludge trying to make sure that this will fail on old kernels */
     92#define O_TMPFILE (__O_TMPFILE | O_DIRECTORY)
     93#define O_TMPFILE_MASK (__O_TMPFILE | O_DIRECTORY | O_CREAT)
     94
     95#ifndef O_NDELAY
     96#define O_NDELAY	O_NONBLOCK
     97#endif
     98
     99#define F_DUPFD		0	/* dup */
    100#define F_GETFD		1	/* get close_on_exec */
    101#define F_SETFD		2	/* set/clear close_on_exec */
    102#define F_GETFL		3	/* get file->f_flags */
    103#define F_SETFL		4	/* set file->f_flags */
    104#ifndef F_GETLK
    105#define F_GETLK		5
    106#define F_SETLK		6
    107#define F_SETLKW	7
    108#endif
    109#ifndef F_SETOWN
    110#define F_SETOWN	8	/* for sockets. */
    111#define F_GETOWN	9	/* for sockets. */
    112#endif
    113#ifndef F_SETSIG
    114#define F_SETSIG	10	/* for sockets. */
    115#define F_GETSIG	11	/* for sockets. */
    116#endif
    117
    118#ifndef F_GETLK64
    119#define F_GETLK64	12	/*  using 'struct flock64' */
    120#define F_SETLK64	13
    121#define F_SETLKW64	14
    122#endif
    123
    124#ifndef F_SETOWN_EX
    125#define F_SETOWN_EX	15
    126#define F_GETOWN_EX	16
    127#endif
    128
    129#ifndef F_GETOWNER_UIDS
    130#define F_GETOWNER_UIDS	17
    131#endif
    132
    133/*
    134 * Open File Description Locks
    135 *
    136 * Usually record locks held by a process are released on *any* close and are
    137 * not inherited across a fork().
    138 *
    139 * These cmd values will set locks that conflict with process-associated
    140 * record  locks, but are "owned" by the open file description, not the
    141 * process. This means that they are inherited across fork() like BSD (flock)
    142 * locks, and they are only released automatically when the last reference to
    143 * the the open file against which they were acquired is put.
    144 */
    145#define F_OFD_GETLK	36
    146#define F_OFD_SETLK	37
    147#define F_OFD_SETLKW	38
    148
    149#define F_OWNER_TID	0
    150#define F_OWNER_PID	1
    151#define F_OWNER_PGRP	2
    152
    153struct f_owner_ex {
    154	int	type;
    155	__kernel_pid_t	pid;
    156};
    157
    158/* for F_[GET|SET]FL */
    159#define FD_CLOEXEC	1	/* actually anything with low bit set goes */
    160
    161/* for posix fcntl() and lockf() */
    162#ifndef F_RDLCK
    163#define F_RDLCK		0
    164#define F_WRLCK		1
    165#define F_UNLCK		2
    166#endif
    167
    168/* for old implementation of bsd flock () */
    169#ifndef F_EXLCK
    170#define F_EXLCK		4	/* or 3 */
    171#define F_SHLCK		8	/* or 4 */
    172#endif
    173
    174/* operations for bsd flock(), also used by the kernel implementation */
    175#define LOCK_SH		1	/* shared lock */
    176#define LOCK_EX		2	/* exclusive lock */
    177#define LOCK_NB		4	/* or'd with one of the above to prevent
    178				   blocking */
    179#define LOCK_UN		8	/* remove lock */
    180
    181#define LOCK_MAND	32	/* This is a mandatory flock ... */
    182#define LOCK_READ	64	/* which allows concurrent read operations */
    183#define LOCK_WRITE	128	/* which allows concurrent write operations */
    184#define LOCK_RW		192	/* which allows concurrent read & write ops */
    185
    186#define F_LINUX_SPECIFIC_BASE	1024
    187
    188struct flock {
    189	short	l_type;
    190	short	l_whence;
    191	__kernel_off_t	l_start;
    192	__kernel_off_t	l_len;
    193	__kernel_pid_t	l_pid;
    194#ifdef	__ARCH_FLOCK_EXTRA_SYSID
    195	__ARCH_FLOCK_EXTRA_SYSID
    196#endif
    197#ifdef	__ARCH_FLOCK_PAD
    198	__ARCH_FLOCK_PAD
    199#endif
    200};
    201
    202struct flock64 {
    203	short  l_type;
    204	short  l_whence;
    205	__kernel_loff_t l_start;
    206	__kernel_loff_t l_len;
    207	__kernel_pid_t  l_pid;
    208#ifdef	__ARCH_FLOCK64_PAD
    209	__ARCH_FLOCK64_PAD
    210#endif
    211};
    212
    213#endif /* _ASM_GENERIC_FCNTL_H */