Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 */
0002 /*
0003  * Display helpers for generic filesystem items
0004  *
0005  * Author: Chuck Lever <chuck.lever@oracle.com>
0006  *
0007  * Copyright (c) 2020, Oracle and/or its affiliates.
0008  */
0009 
0010 #include <linux/fs.h>
0011 
0012 #define show_fs_dirent_type(x) \
0013     __print_symbolic(x, \
0014         { DT_UNKNOWN,       "UNKNOWN" }, \
0015         { DT_FIFO,      "FIFO" }, \
0016         { DT_CHR,       "CHR" }, \
0017         { DT_DIR,       "DIR" }, \
0018         { DT_BLK,       "BLK" }, \
0019         { DT_REG,       "REG" }, \
0020         { DT_LNK,       "LNK" }, \
0021         { DT_SOCK,      "SOCK" }, \
0022         { DT_WHT,       "WHT" })
0023 
0024 #define show_fs_fcntl_open_flags(x) \
0025     __print_flags(x, "|", \
0026         { O_WRONLY,     "O_WRONLY" }, \
0027         { O_RDWR,       "O_RDWR" }, \
0028         { O_CREAT,      "O_CREAT" }, \
0029         { O_EXCL,       "O_EXCL" }, \
0030         { O_NOCTTY,     "O_NOCTTY" }, \
0031         { O_TRUNC,      "O_TRUNC" }, \
0032         { O_APPEND,     "O_APPEND" }, \
0033         { O_NONBLOCK,       "O_NONBLOCK" }, \
0034         { O_DSYNC,      "O_DSYNC" }, \
0035         { O_DIRECT,     "O_DIRECT" }, \
0036         { O_LARGEFILE,      "O_LARGEFILE" }, \
0037         { O_DIRECTORY,      "O_DIRECTORY" }, \
0038         { O_NOFOLLOW,       "O_NOFOLLOW" }, \
0039         { O_NOATIME,        "O_NOATIME" }, \
0040         { O_CLOEXEC,        "O_CLOEXEC" })
0041 
0042 #define __fmode_flag(x) { (__force unsigned long)FMODE_##x, #x }
0043 #define show_fs_fmode_flags(x) \
0044     __print_flags(x, "|", \
0045         __fmode_flag(READ), \
0046         __fmode_flag(WRITE), \
0047         __fmode_flag(EXEC))
0048 
0049 #ifdef CONFIG_64BIT
0050 #define show_fs_fcntl_cmd(x) \
0051     __print_symbolic(x, \
0052         { F_DUPFD,      "DUPFD" }, \
0053         { F_GETFD,      "GETFD" }, \
0054         { F_SETFD,      "SETFD" }, \
0055         { F_GETFL,      "GETFL" }, \
0056         { F_SETFL,      "SETFL" }, \
0057         { F_GETLK,      "GETLK" }, \
0058         { F_SETLK,      "SETLK" }, \
0059         { F_SETLKW,     "SETLKW" }, \
0060         { F_SETOWN,     "SETOWN" }, \
0061         { F_GETOWN,     "GETOWN" }, \
0062         { F_SETSIG,     "SETSIG" }, \
0063         { F_GETSIG,     "GETSIG" }, \
0064         { F_SETOWN_EX,      "SETOWN_EX" }, \
0065         { F_GETOWN_EX,      "GETOWN_EX" }, \
0066         { F_GETOWNER_UIDS,  "GETOWNER_UIDS" }, \
0067         { F_OFD_GETLK,      "OFD_GETLK" }, \
0068         { F_OFD_SETLK,      "OFD_SETLK" }, \
0069         { F_OFD_SETLKW,     "OFD_SETLKW" })
0070 #else /* CONFIG_64BIT */
0071 #define show_fs_fcntl_cmd(x) \
0072     __print_symbolic(x, \
0073         { F_DUPFD,      "DUPFD" }, \
0074         { F_GETFD,      "GETFD" }, \
0075         { F_SETFD,      "SETFD" }, \
0076         { F_GETFL,      "GETFL" }, \
0077         { F_SETFL,      "SETFL" }, \
0078         { F_GETLK,      "GETLK" }, \
0079         { F_SETLK,      "SETLK" }, \
0080         { F_SETLKW,     "SETLKW" }, \
0081         { F_SETOWN,     "SETOWN" }, \
0082         { F_GETOWN,     "GETOWN" }, \
0083         { F_SETSIG,     "SETSIG" }, \
0084         { F_GETSIG,     "GETSIG" }, \
0085         { F_GETLK64,        "GETLK64" }, \
0086         { F_SETLK64,        "SETLK64" }, \
0087         { F_SETLKW64,       "SETLKW64" }, \
0088         { F_SETOWN_EX,      "SETOWN_EX" }, \
0089         { F_GETOWN_EX,      "GETOWN_EX" }, \
0090         { F_GETOWNER_UIDS,  "GETOWNER_UIDS" }, \
0091         { F_OFD_GETLK,      "OFD_GETLK" }, \
0092         { F_OFD_SETLK,      "OFD_SETLK" }, \
0093         { F_OFD_SETLKW,     "OFD_SETLKW" })
0094 #endif /* CONFIG_64BIT */
0095 
0096 #define show_fs_fcntl_lock_type(x) \
0097     __print_symbolic(x, \
0098         { F_RDLCK,      "RDLCK" }, \
0099         { F_WRLCK,      "WRLCK" }, \
0100         { F_UNLCK,      "UNLCK" })
0101 
0102 #define show_fs_lookup_flags(flags) \
0103     __print_flags(flags, "|", \
0104         { LOOKUP_FOLLOW,    "FOLLOW" }, \
0105         { LOOKUP_DIRECTORY, "DIRECTORY" }, \
0106         { LOOKUP_AUTOMOUNT, "AUTOMOUNT" }, \
0107         { LOOKUP_EMPTY,     "EMPTY" }, \
0108         { LOOKUP_DOWN,      "DOWN" }, \
0109         { LOOKUP_MOUNTPOINT,    "MOUNTPOINT" }, \
0110         { LOOKUP_REVAL,     "REVAL" }, \
0111         { LOOKUP_RCU,       "RCU" }, \
0112         { LOOKUP_OPEN,      "OPEN" }, \
0113         { LOOKUP_CREATE,    "CREATE" }, \
0114         { LOOKUP_EXCL,      "EXCL" }, \
0115         { LOOKUP_RENAME_TARGET, "RENAME_TARGET" }, \
0116         { LOOKUP_PARENT,    "PARENT" }, \
0117         { LOOKUP_NO_SYMLINKS,   "NO_SYMLINKS" }, \
0118         { LOOKUP_NO_MAGICLINKS, "NO_MAGICLINKS" }, \
0119         { LOOKUP_NO_XDEV,   "NO_XDEV" }, \
0120         { LOOKUP_BENEATH,   "BENEATH" }, \
0121         { LOOKUP_IN_ROOT,   "IN_ROOT" }, \
0122         { LOOKUP_CACHED,    "CACHED" })