linux-headers (unknown)

(root)/
include/
linux/
fcntl.h
       1  /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
       2  #ifndef _LINUX_FCNTL_H
       3  #define _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  #define F_SEAL_EXEC	0x0020  /* prevent chmod modifying exec bits */
      47  /* (1U << 31) is reserved for signed error codes */
      48  
      49  /*
      50   * Set/Get write life time hints. {GET,SET}_RW_HINT operate on the
      51   * underlying inode, while {GET,SET}_FILE_RW_HINT operate only on
      52   * the specific file.
      53   */
      54  #define F_GET_RW_HINT		(F_LINUX_SPECIFIC_BASE + 11)
      55  #define F_SET_RW_HINT		(F_LINUX_SPECIFIC_BASE + 12)
      56  #define F_GET_FILE_RW_HINT	(F_LINUX_SPECIFIC_BASE + 13)
      57  #define F_SET_FILE_RW_HINT	(F_LINUX_SPECIFIC_BASE + 14)
      58  
      59  /*
      60   * Valid hint values for F_{GET,SET}_RW_HINT. 0 is "not set", or can be
      61   * used to clear any hints previously set.
      62   */
      63  #define RWH_WRITE_LIFE_NOT_SET	0
      64  #define RWH_WRITE_LIFE_NONE	1
      65  #define RWH_WRITE_LIFE_SHORT	2
      66  #define RWH_WRITE_LIFE_MEDIUM	3
      67  #define RWH_WRITE_LIFE_LONG	4
      68  #define RWH_WRITE_LIFE_EXTREME	5
      69  
      70  /*
      71   * The originally introduced spelling is remained from the first
      72   * versions of the patch set that introduced the feature, see commit
      73   * v4.13-rc1~212^2~51.
      74   */
      75  #define RWF_WRITE_LIFE_NOT_SET	RWH_WRITE_LIFE_NOT_SET
      76  
      77  /*
      78   * Types of directory notifications that may be requested.
      79   */
      80  #define DN_ACCESS	0x00000001	/* File accessed */
      81  #define DN_MODIFY	0x00000002	/* File modified */
      82  #define DN_CREATE	0x00000004	/* File created */
      83  #define DN_DELETE	0x00000008	/* File removed */
      84  #define DN_RENAME	0x00000010	/* File renamed */
      85  #define DN_ATTRIB	0x00000020	/* File changed attibutes */
      86  #define DN_MULTISHOT	0x80000000	/* Don't remove notifier */
      87  
      88  /*
      89   * The constants AT_REMOVEDIR and AT_EACCESS have the same value.  AT_EACCESS is
      90   * meaningful only to faccessat, while AT_REMOVEDIR is meaningful only to
      91   * unlinkat.  The two functions do completely different things and therefore,
      92   * the flags can be allowed to overlap.  For example, passing AT_REMOVEDIR to
      93   * faccessat would be undefined behavior and thus treating it equivalent to
      94   * AT_EACCESS is valid undefined behavior.
      95   */
      96  #define AT_FDCWD		-100    /* Special value used to indicate
      97                                             openat should use the current
      98                                             working directory. */
      99  #define AT_SYMLINK_NOFOLLOW	0x100   /* Do not follow symbolic links.  */
     100  #define AT_EACCESS		0x200	/* Test access permitted for
     101                                             effective IDs, not real IDs.  */
     102  #define AT_REMOVEDIR		0x200   /* Remove directory instead of
     103                                             unlinking file.  */
     104  #define AT_SYMLINK_FOLLOW	0x400   /* Follow symbolic links.  */
     105  #define AT_NO_AUTOMOUNT		0x800	/* Suppress terminal automount traversal */
     106  #define AT_EMPTY_PATH		0x1000	/* Allow empty relative pathname */
     107  
     108  #define AT_STATX_SYNC_TYPE	0x6000	/* Type of synchronisation required from statx() */
     109  #define AT_STATX_SYNC_AS_STAT	0x0000	/* - Do whatever stat() does */
     110  #define AT_STATX_FORCE_SYNC	0x2000	/* - Force the attributes to be sync'd with the server */
     111  #define AT_STATX_DONT_SYNC	0x4000	/* - Don't sync attributes with the server */
     112  
     113  #define AT_RECURSIVE		0x8000	/* Apply to the entire subtree */
     114  
     115  #endif /* _LINUX_FCNTL_H */