linux/include/linux/kernel_read_file.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 */
   2#ifndef _LINUX_KERNEL_READ_FILE_H
   3#define _LINUX_KERNEL_READ_FILE_H
   4
   5#include <linux/file.h>
   6#include <linux/types.h>
   7
   8/* This is a list of *what* is being read, not *how* nor *where*. */
   9#define __kernel_read_file_id(id) \
  10        id(UNKNOWN, unknown)            \
  11        id(FIRMWARE, firmware)          \
  12        id(MODULE, kernel-module)               \
  13        id(KEXEC_IMAGE, kexec-image)            \
  14        id(KEXEC_INITRAMFS, kexec-initramfs)    \
  15        id(POLICY, security-policy)             \
  16        id(X509_CERTIFICATE, x509-certificate)  \
  17        id(MAX_ID, )
  18
  19#define __fid_enumify(ENUM, dummy) READING_ ## ENUM,
  20#define __fid_stringify(dummy, str) #str,
  21
  22enum kernel_read_file_id {
  23        __kernel_read_file_id(__fid_enumify)
  24};
  25
  26static const char * const kernel_read_file_str[] = {
  27        __kernel_read_file_id(__fid_stringify)
  28};
  29
  30static inline const char *kernel_read_file_id_str(enum kernel_read_file_id id)
  31{
  32        if ((unsigned int)id >= READING_MAX_ID)
  33                return kernel_read_file_str[READING_UNKNOWN];
  34
  35        return kernel_read_file_str[id];
  36}
  37
  38int kernel_read_file(struct file *file, loff_t offset,
  39                     void **buf, size_t buf_size,
  40                     size_t *file_size,
  41                     enum kernel_read_file_id id);
  42int kernel_read_file_from_path(const char *path, loff_t offset,
  43                               void **buf, size_t buf_size,
  44                               size_t *file_size,
  45                               enum kernel_read_file_id id);
  46int kernel_read_file_from_path_initns(const char *path, loff_t offset,
  47                                      void **buf, size_t buf_size,
  48                                      size_t *file_size,
  49                                      enum kernel_read_file_id id);
  50int kernel_read_file_from_fd(int fd, loff_t offset,
  51                             void **buf, size_t buf_size,
  52                             size_t *file_size,
  53                             enum kernel_read_file_id id);
  54
  55#endif /* _LINUX_KERNEL_READ_FILE_H */
  56