root/fs/fs_types.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. fs_ftype_to_dtype
  2. fs_umode_to_ftype
  3. fs_umode_to_dtype

   1 // SPDX-License-Identifier: GPL-2.0
   2 #include <linux/fs.h>
   3 #include <linux/export.h>
   4 
   5 /*
   6  * fs on-disk file type to dirent file type conversion
   7  */
   8 static const unsigned char fs_dtype_by_ftype[FT_MAX] = {
   9         [FT_UNKNOWN]    = DT_UNKNOWN,
  10         [FT_REG_FILE]   = DT_REG,
  11         [FT_DIR]        = DT_DIR,
  12         [FT_CHRDEV]     = DT_CHR,
  13         [FT_BLKDEV]     = DT_BLK,
  14         [FT_FIFO]       = DT_FIFO,
  15         [FT_SOCK]       = DT_SOCK,
  16         [FT_SYMLINK]    = DT_LNK
  17 };
  18 
  19 /**
  20  * fs_ftype_to_dtype() - fs on-disk file type to dirent type.
  21  * @filetype: The on-disk file type to convert.
  22  *
  23  * This function converts the on-disk file type value (FT_*) to the directory
  24  * entry type (DT_*).
  25  *
  26  * Context: Any context.
  27  * Return:
  28  * * DT_UNKNOWN         - Unknown type
  29  * * DT_FIFO            - FIFO
  30  * * DT_CHR             - Character device
  31  * * DT_DIR             - Directory
  32  * * DT_BLK             - Block device
  33  * * DT_REG             - Regular file
  34  * * DT_LNK             - Symbolic link
  35  * * DT_SOCK            - Local-domain socket
  36  */
  37 unsigned char fs_ftype_to_dtype(unsigned int filetype)
  38 {
  39         if (filetype >= FT_MAX)
  40                 return DT_UNKNOWN;
  41 
  42         return fs_dtype_by_ftype[filetype];
  43 }
  44 EXPORT_SYMBOL_GPL(fs_ftype_to_dtype);
  45 
  46 /*
  47  * dirent file type to fs on-disk file type conversion
  48  * Values not initialized explicitly are FT_UNKNOWN (0).
  49  */
  50 static const unsigned char fs_ftype_by_dtype[DT_MAX] = {
  51         [DT_REG]        = FT_REG_FILE,
  52         [DT_DIR]        = FT_DIR,
  53         [DT_LNK]        = FT_SYMLINK,
  54         [DT_CHR]        = FT_CHRDEV,
  55         [DT_BLK]        = FT_BLKDEV,
  56         [DT_FIFO]       = FT_FIFO,
  57         [DT_SOCK]       = FT_SOCK,
  58 };
  59 
  60 /**
  61  * fs_umode_to_ftype() - file mode to on-disk file type.
  62  * @mode: The file mode to convert.
  63  *
  64  * This function converts the file mode value to the on-disk file type (FT_*).
  65  *
  66  * Context: Any context.
  67  * Return:
  68  * * FT_UNKNOWN         - Unknown type
  69  * * FT_REG_FILE        - Regular file
  70  * * FT_DIR             - Directory
  71  * * FT_CHRDEV          - Character device
  72  * * FT_BLKDEV          - Block device
  73  * * FT_FIFO            - FIFO
  74  * * FT_SOCK            - Local-domain socket
  75  * * FT_SYMLINK         - Symbolic link
  76  */
  77 unsigned char fs_umode_to_ftype(umode_t mode)
  78 {
  79         return fs_ftype_by_dtype[S_DT(mode)];
  80 }
  81 EXPORT_SYMBOL_GPL(fs_umode_to_ftype);
  82 
  83 /**
  84  * fs_umode_to_dtype() - file mode to dirent file type.
  85  * @mode: The file mode to convert.
  86  *
  87  * This function converts the file mode value to the directory
  88  * entry type (DT_*).
  89  *
  90  * Context: Any context.
  91  * Return:
  92  * * DT_UNKNOWN         - Unknown type
  93  * * DT_FIFO            - FIFO
  94  * * DT_CHR             - Character device
  95  * * DT_DIR             - Directory
  96  * * DT_BLK             - Block device
  97  * * DT_REG             - Regular file
  98  * * DT_LNK             - Symbolic link
  99  * * DT_SOCK            - Local-domain socket
 100  */
 101 unsigned char fs_umode_to_dtype(umode_t mode)
 102 {
 103         return fs_ftype_to_dtype(fs_umode_to_ftype(mode));
 104 }
 105 EXPORT_SYMBOL_GPL(fs_umode_to_dtype);

/* [<][>][^][v][top][bottom][index][help] */