⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fsfilter.h

📁 linux得一些常用命令,以及linux环境下的c编程
💻 H
字号:
/* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*- * vim:expandtab:shiftwidth=8:tabstop=8: */#ifndef __FILTER_H_#define __FILTER_H_ 1#ifdef __KERNEL__/* cachetype.c *//*  * it is important that things like inode, super and file operations * for intermezzo are not defined statically.  If methods are NULL * the VFS takes special action based on that.  Given that different * cache types have NULL ops at different slots, we must install opeation  * talbes for InterMezzo with NULL's in the same spot */struct filter_ops {         struct super_operations filter_sops;        struct inode_operations filter_dir_iops;        struct inode_operations filter_file_iops;        struct inode_operations filter_sym_iops;        struct file_operations filter_dir_fops;        struct file_operations filter_file_fops;        struct file_operations filter_sym_fops;        struct dentry_operations filter_dentry_ops;};struct cache_ops {        /* operations on the file store */        struct super_operations *cache_sops;        struct inode_operations *cache_dir_iops;        struct inode_operations *cache_file_iops;        struct inode_operations *cache_sym_iops;        struct file_operations *cache_dir_fops;        struct file_operations *cache_file_fops;        struct file_operations *cache_sym_fops;        struct dentry_operations *cache_dentry_ops;};#define FILTER_DID_SUPER_OPS 0x1#define FILTER_DID_INODE_OPS 0x2#define FILTER_DID_FILE_OPS 0x4#define FILTER_DID_DENTRY_OPS 0x8#define FILTER_DID_DEV_OPS 0x10#define FILTER_DID_SYMLINK_OPS 0x20#define FILTER_DID_DIR_OPS 0x40struct filter_fs {        int o_flags;        struct filter_ops o_fops;        struct cache_ops  o_caops;        struct journal_ops *o_trops;        struct snapshot_ops *o_snops;};#define FILTER_FS_TYPES 6#define FILTER_FS_EXT2 0#define FILTER_FS_EXT3 1#define FILTER_FS_REISERFS 2#define FILTER_FS_XFS 3#define FILTER_FS_OBDFS 4#define FILTER_FS_TMPFS 5extern struct filter_fs filter_oppar[FILTER_FS_TYPES];struct filter_fs *filter_get_filter_fs(const char *cache_type);void filter_setup_journal_ops(struct filter_fs *ops, char *cache_type);inline struct super_operations *filter_c2usops(struct filter_fs *cache);inline struct inode_operations *filter_c2ufiops(struct filter_fs *cache);inline struct inode_operations *filter_c2udiops(struct filter_fs *cache);inline struct inode_operations *filter_c2usiops(struct filter_fs *cache);inline struct file_operations *filter_c2uffops(struct filter_fs *cache);inline struct file_operations *filter_c2udfops(struct filter_fs *cache);inline struct file_operations *filter_c2usfops(struct filter_fs *cache);inline struct super_operations *filter_c2csops(struct filter_fs *cache);inline struct inode_operations *filter_c2cfiops(struct filter_fs *cache);inline struct inode_operations *filter_c2cdiops(struct filter_fs *cache);inline struct inode_operations *filter_c2csiops(struct filter_fs *cache);inline struct file_operations *filter_c2cffops(struct filter_fs *cache);inline struct file_operations *filter_c2cdfops(struct filter_fs *cache);inline struct file_operations *filter_c2csfops(struct filter_fs *cache);inline struct dentry_operations *filter_c2cdops(struct filter_fs *cache);inline struct dentry_operations *filter_c2udops(struct filter_fs *cache);void filter_setup_super_ops(struct filter_fs *cache, struct super_operations *cache_ops, struct super_operations *filter_sops);void filter_setup_dir_ops(struct filter_fs *cache, struct inode *cache_inode, struct inode_operations *filter_iops, struct file_operations *ffops);void filter_setup_file_ops(struct filter_fs *cache, struct inode *cache_inode, struct inode_operations *filter_iops, struct file_operations *filter_op);void filter_setup_symlink_ops(struct filter_fs *cache, struct inode *cache_inode, struct inode_operations *filter_iops, struct file_operations *filter_op);void filter_setup_dentry_ops(struct filter_fs *cache, struct dentry_operations *cache_dop,  struct dentry_operations *filter_dop);#define PRESTO_DEBUG#ifdef PRESTO_DEBUG/* debugging masks */#define D_SUPER     1  #define D_INODE     2   /* print entry and exit into procedure */#define D_FILE      4#define D_CACHE     8   /* cache debugging */#define D_MALLOC    16  /* print malloc, de-alloc information */#define D_JOURNAL   32#define D_UPCALL    64  /* up and downcall debugging */#define D_PSDEV    128#define D_PIOCTL   256#define D_SPECIAL  512#define D_TIMING  1024#define D_DOWNCALL 2048#define FDEBUG(mask, format, a...)                                      \        do {                                                            \                if (filter_debug & mask) {                              \                        printk("(%s,l. %d): ", __FUNCTION__, __LINE__); \                        printk(format, ##a); }                          \        } while (0)#define FENTRY                                                          \        if(filter_print_entry)                                          \                printk("Process %d entered %s\n", current->pid, __FUNCTION__)#define FEXIT                                                           \        if(filter_print_entry)                                          \                printk("Process %d leaving %s at %d\n", current->pid,   \                       __FUNCTION__,__LINE__)#endif#endif#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -