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

fs_types.c (2599B)


      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 */
      8static 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 */
     37unsigned 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}
     44EXPORT_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 */
     50static 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 */
     77unsigned char fs_umode_to_ftype(umode_t mode)
     78{
     79	return fs_ftype_by_dtype[S_DT(mode)];
     80}
     81EXPORT_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 */
    101unsigned char fs_umode_to_dtype(umode_t mode)
    102{
    103	return fs_ftype_to_dtype(fs_umode_to_ftype(mode));
    104}
    105EXPORT_SYMBOL_GPL(fs_umode_to_dtype);