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

coda_linux.h (2773B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2/* 
      3 * Coda File System, Linux Kernel module
      4 * 
      5 * Original version, adapted from cfs_mach.c, (C) Carnegie Mellon University
      6 * Linux modifications (C) 1996, Peter J. Braam
      7 * Rewritten for Linux 2.1 (C) 1997 Carnegie Mellon University
      8 *
      9 * Carnegie Mellon University encourages users of this software to
     10 * contribute improvements to the Coda project.
     11 */
     12
     13#ifndef _LINUX_CODA_FS
     14#define _LINUX_CODA_FS
     15
     16#ifdef pr_fmt
     17#undef pr_fmt
     18#endif
     19
     20#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
     21
     22#include <linux/kernel.h>
     23#include <linux/param.h>
     24#include <linux/mm.h>
     25#include <linux/vmalloc.h>
     26#include <linux/slab.h>
     27#include <linux/wait.h>		
     28#include <linux/types.h>
     29#include <linux/fs.h>
     30#include "coda_fs_i.h"
     31
     32/* operations */
     33extern const struct inode_operations coda_dir_inode_operations;
     34extern const struct inode_operations coda_file_inode_operations;
     35extern const struct inode_operations coda_ioctl_inode_operations;
     36
     37extern const struct dentry_operations coda_dentry_operations;
     38
     39extern const struct address_space_operations coda_file_aops;
     40extern const struct address_space_operations coda_symlink_aops;
     41
     42extern const struct file_operations coda_dir_operations;
     43extern const struct file_operations coda_file_operations;
     44extern const struct file_operations coda_ioctl_operations;
     45
     46/* operations shared over more than one file */
     47int coda_open(struct inode *i, struct file *f);
     48int coda_release(struct inode *i, struct file *f);
     49int coda_permission(struct user_namespace *mnt_userns, struct inode *inode,
     50		    int mask);
     51int coda_revalidate_inode(struct inode *);
     52int coda_getattr(struct user_namespace *, const struct path *, struct kstat *,
     53		 u32, unsigned int);
     54int coda_setattr(struct user_namespace *, struct dentry *, struct iattr *);
     55
     56/* this file:  helpers */
     57char *coda_f2s(struct CodaFid *f);
     58int coda_iscontrol(const char *name, size_t length);
     59
     60umode_t coda_inode_type(struct coda_vattr *attr);
     61void coda_vattr_to_iattr(struct inode *, struct coda_vattr *);
     62void coda_iattr_to_vattr(struct iattr *, struct coda_vattr *);
     63unsigned short coda_flags_to_cflags(unsigned short);
     64
     65/* inode to cnode access functions */
     66
     67static inline struct coda_inode_info *ITOC(struct inode *inode)
     68{
     69	return container_of(inode, struct coda_inode_info, vfs_inode);
     70}
     71
     72static __inline__ struct CodaFid *coda_i2f(struct inode *inode)
     73{
     74	return &(ITOC(inode)->c_fid);
     75}
     76
     77static __inline__ char *coda_i2s(struct inode *inode)
     78{
     79	return coda_f2s(&(ITOC(inode)->c_fid));
     80}
     81
     82/* this will not zap the inode away */
     83static __inline__ void coda_flag_inode(struct inode *inode, int flag)
     84{
     85	struct coda_inode_info *cii = ITOC(inode);
     86
     87	if (!inode)
     88		return;
     89
     90	spin_lock(&cii->c_lock);
     91	cii->c_flags |= flag;
     92	spin_unlock(&cii->c_lock);
     93}		
     94
     95#endif