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

kernel_read_file.h (1676B)


      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 */