1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106
// Copyright (c) 2020 Xu Shaohua <shaohua@biofan.org>. All rights reserved.
// Use of this source is governed by Apache-2.0 License that can be found
// in the LICENSE file.
//! From `include/uapi/linux/fcntl.h`
use crate::F_LINUX_SPECIFIC_BASE;
pub const F_SETLEASE: i32 = F_LINUX_SPECIFIC_BASE;
pub const F_GETLEASE: i32 = F_LINUX_SPECIFIC_BASE + 1;
/// Request nofications on a directory.
/// See below for events that may be notified.
pub const F_NOTIFY: i32 = F_LINUX_SPECIFIC_BASE + 2;
/// Cancel a blocking posix lock; internal use only until we expose an
/// asynchronous lock api to userspace:
pub const F_CANCELLK: i32 = F_LINUX_SPECIFIC_BASE + 5;
/// Create a file descriptor with `FD_CLOEXEC` set.
pub const F_DUPFD_CLOEXEC: i32 = F_LINUX_SPECIFIC_BASE + 6;
/// Set and get of pipe page size array
pub const F_SETPIPE_SZ: i32 = F_LINUX_SPECIFIC_BASE + 7;
pub const F_GETPIPE_SZ: i32 = F_LINUX_SPECIFIC_BASE + 8;
/// Set/Get seals
pub const F_ADD_SEALS: i32 = F_LINUX_SPECIFIC_BASE + 9;
pub const F_GET_SEALS: i32 = F_LINUX_SPECIFIC_BASE + 10;
/// Set/Get write life time hints. `{GET,SET}_RW_HINT` operate on the
/// underlying inode, while `{GET,SET}_FILE_RW_HINT` operate only on
/// the specific file.
pub const F_GET_RW_HINT: i32 = F_LINUX_SPECIFIC_BASE + 11;
pub const F_SET_RW_HINT: i32 = F_LINUX_SPECIFIC_BASE + 12;
pub const F_GET_FILE_RW_HINT: i32 = F_LINUX_SPECIFIC_BASE + 13;
pub const F_SET_FILE_RW_HINT: i32 = F_LINUX_SPECIFIC_BASE + 14;
/// Types of seals
/// prevent further seals from being set
pub const F_SEAL_SEAL: i32 = 0x0001;
/// prevent file from shrinking
pub const F_SEAL_SHRINK: i32 = 0x0002;
/// prevent file from growing
pub const F_SEAL_GROW: i32 = 0x0004;
/// prevent writes
pub const F_SEAL_WRITE: i32 = 0x0008;
/// prevent future writes while mapped
pub const F_SEAL_FUTURE_WRITE: i32 = 0x0010;
/// (1U << 31) is reserved for signed error codes
/*
* Valid hint values for F_{GET,SET}_RW_HINT. 0 is "not set", or can be
* used to clear any hints previously set.
*/
pub const RWF_WRITE_LIFE_NOT_SET: i32 = 0;
pub const RWH_WRITE_LIFE_NONE: i32 = 1;
pub const RWH_WRITE_LIFE_SHORT: i32 = 2;
pub const RWH_WRITE_LIFE_MEDIUM: i32 = 3;
pub const RWH_WRITE_LIFE_LONG: i32 = 4;
pub const RWH_WRITE_LIFE_EXTREME: i32 = 5;
/// Types of directory notifications that may be requested.
/// File accessed
pub const DN_ACCESS: i32 = 0x0000_0001;
/// File modified
pub const DN_MODIFY: i32 = 0x0000_0002;
/// File created
pub const DN_CREATE: i32 = 0x0000_0004;
/// File removed
pub const DN_DELETE: i32 = 0x0000_0008;
/// File renamed
pub const DN_RENAME: i32 = 0x0000_0010;
/// File changed attibutes
pub const DN_ATTRIB: i32 = 0x0000_0020;
/// Don't remove notifier
#[allow(overflowing_literals)]
pub const DN_MULTISHOT: i32 = 0x8000_0000;
/// Special value used to indicate openat should use the current working directory.
pub const AT_FDCWD: i32 = -100;
/// Do not follow symbolic links.
pub const AT_SYMLINK_NOFOLLOW: i32 = 0x100;
/// Remove directory instead of unlinking file.
pub const AT_REMOVEDIR: i32 = 0x200;
/// Follow symbolic links.
pub const AT_SYMLINK_FOLLOW: i32 = 0x400;
/// Suppress terminal automount traversal
pub const AT_NO_AUTOMOUNT: i32 = 0x800;
/// Allow empty relative pathname
pub const AT_EMPTY_PATH: i32 = 0x1000;
/// Type of synchronisation required from `statx()`
pub const AT_STATX_SYNC_TYPE: i32 = 0x6000;
/// - Do whatever `stat()` does
pub const AT_STATX_SYNC_AS_STAT: i32 = 0x0000;
/// - Force the attributes to be sync'd with the server
pub const AT_STATX_FORCE_SYNC: i32 = 0x2000;
/// - Don't sync attributes with the server
pub const AT_STATX_DONT_SYNC: i32 = 0x4000;
/// Apply to the entire subtree
pub const AT_RECURSIVE: i32 = 0x8000;