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 (4266B)


      1/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
      2#ifndef _UAPI_LINUX_FCNTL_H
      3#define _UAPI_LINUX_FCNTL_H
      4
      5#include <asm/fcntl.h>
      6#include <linux/openat2.h>
      7
      8#define F_SETLEASE	(F_LINUX_SPECIFIC_BASE + 0)
      9#define F_GETLEASE	(F_LINUX_SPECIFIC_BASE + 1)
     10
     11/*
     12 * Cancel a blocking posix lock; internal use only until we expose an
     13 * asynchronous lock api to userspace:
     14 */
     15#define F_CANCELLK	(F_LINUX_SPECIFIC_BASE + 5)
     16
     17/* Create a file descriptor with FD_CLOEXEC set. */
     18#define F_DUPFD_CLOEXEC	(F_LINUX_SPECIFIC_BASE + 6)
     19
     20/*
     21 * Request nofications on a directory.
     22 * See below for events that may be notified.
     23 */
     24#define F_NOTIFY	(F_LINUX_SPECIFIC_BASE+2)
     25
     26/*
     27 * Set and get of pipe page size array
     28 */
     29#define F_SETPIPE_SZ	(F_LINUX_SPECIFIC_BASE + 7)
     30#define F_GETPIPE_SZ	(F_LINUX_SPECIFIC_BASE + 8)
     31
     32/*
     33 * Set/Get seals
     34 */
     35#define F_ADD_SEALS	(F_LINUX_SPECIFIC_BASE + 9)
     36#define F_GET_SEALS	(F_LINUX_SPECIFIC_BASE + 10)
     37
     38/*
     39 * Types of seals
     40 */
     41#define F_SEAL_SEAL	0x0001	/* prevent further seals from being set */
     42#define F_SEAL_SHRINK	0x0002	/* prevent file from shrinking */
     43#define F_SEAL_GROW	0x0004	/* prevent file from growing */
     44#define F_SEAL_WRITE	0x0008	/* prevent writes */
     45#define F_SEAL_FUTURE_WRITE	0x0010  /* prevent future writes while mapped */
     46/* (1U << 31) is reserved for signed error codes */
     47
     48/*
     49 * Set/Get write life time hints. {GET,SET}_RW_HINT operate on the
     50 * underlying inode, while {GET,SET}_FILE_RW_HINT operate only on
     51 * the specific file.
     52 */
     53#define F_GET_RW_HINT		(F_LINUX_SPECIFIC_BASE + 11)
     54#define F_SET_RW_HINT		(F_LINUX_SPECIFIC_BASE + 12)
     55#define F_GET_FILE_RW_HINT	(F_LINUX_SPECIFIC_BASE + 13)
     56#define F_SET_FILE_RW_HINT	(F_LINUX_SPECIFIC_BASE + 14)
     57
     58/*
     59 * Valid hint values for F_{GET,SET}_RW_HINT. 0 is "not set", or can be
     60 * used to clear any hints previously set.
     61 */
     62#define RWH_WRITE_LIFE_NOT_SET	0
     63#define RWH_WRITE_LIFE_NONE	1
     64#define RWH_WRITE_LIFE_SHORT	2
     65#define RWH_WRITE_LIFE_MEDIUM	3
     66#define RWH_WRITE_LIFE_LONG	4
     67#define RWH_WRITE_LIFE_EXTREME	5
     68
     69/*
     70 * The originally introduced spelling is remained from the first
     71 * versions of the patch set that introduced the feature, see commit
     72 * v4.13-rc1~212^2~51.
     73 */
     74#define RWF_WRITE_LIFE_NOT_SET	RWH_WRITE_LIFE_NOT_SET
     75
     76/*
     77 * Types of directory notifications that may be requested.
     78 */
     79#define DN_ACCESS	0x00000001	/* File accessed */
     80#define DN_MODIFY	0x00000002	/* File modified */
     81#define DN_CREATE	0x00000004	/* File created */
     82#define DN_DELETE	0x00000008	/* File removed */
     83#define DN_RENAME	0x00000010	/* File renamed */
     84#define DN_ATTRIB	0x00000020	/* File changed attibutes */
     85#define DN_MULTISHOT	0x80000000	/* Don't remove notifier */
     86
     87/*
     88 * The constants AT_REMOVEDIR and AT_EACCESS have the same value.  AT_EACCESS is
     89 * meaningful only to faccessat, while AT_REMOVEDIR is meaningful only to
     90 * unlinkat.  The two functions do completely different things and therefore,
     91 * the flags can be allowed to overlap.  For example, passing AT_REMOVEDIR to
     92 * faccessat would be undefined behavior and thus treating it equivalent to
     93 * AT_EACCESS is valid undefined behavior.
     94 */
     95#define AT_FDCWD		-100    /* Special value used to indicate
     96                                           openat should use the current
     97                                           working directory. */
     98#define AT_SYMLINK_NOFOLLOW	0x100   /* Do not follow symbolic links.  */
     99#define AT_EACCESS		0x200	/* Test access permitted for
    100                                           effective IDs, not real IDs.  */
    101#define AT_REMOVEDIR		0x200   /* Remove directory instead of
    102                                           unlinking file.  */
    103#define AT_SYMLINK_FOLLOW	0x400   /* Follow symbolic links.  */
    104#define AT_NO_AUTOMOUNT		0x800	/* Suppress terminal automount traversal */
    105#define AT_EMPTY_PATH		0x1000	/* Allow empty relative pathname */
    106
    107#define AT_STATX_SYNC_TYPE	0x6000	/* Type of synchronisation required from statx() */
    108#define AT_STATX_SYNC_AS_STAT	0x0000	/* - Do whatever stat() does */
    109#define AT_STATX_FORCE_SYNC	0x2000	/* - Force the attributes to be sync'd with the server */
    110#define AT_STATX_DONT_SYNC	0x4000	/* - Don't sync attributes with the server */
    111
    112#define AT_RECURSIVE		0x8000	/* Apply to the entire subtree */
    113
    114#endif /* _UAPI_LINUX_FCNTL_H */