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

📄 intermezzo_fs.h

📁 unxi下共享内存的使用
💻 H
📖 第 1 页 / 共 2 页
字号:
int lento_symlink(const char *oldname,const char *newname,                  struct lento_vfs_context *info);int lento_mkdir(const char *name, int mode, struct lento_vfs_context *info);int lento_rmdir(const char *name, struct lento_vfs_context *info);int lento_mknod(const char *name, int mode, dev_t dev,                struct lento_vfs_context *info);int lento_rename(const char *oldname, const char *newname,                 struct lento_vfs_context *info);int lento_iopen(const char *name, ino_t ino, unsigned int generation,int flags);int lento_close(unsigned int fd, struct lento_vfs_context *info);/* journal.c */#define JOURNAL_PAGE_SZ  PAGE_SIZE__inline__ int presto_no_journal(struct presto_file_set *fset);int journal_fetch(int minor);int presto_journal_write(struct rec_info *rec, struct presto_file_set *fset,                         struct file *file);int presto_journal_setattr(struct rec_info *rec, struct presto_file_set *fset,                           struct dentry *dentry,                           struct presto_version *old_ver,                           struct iattr *iattr);int presto_journal_create(struct rec_info *rec, struct presto_file_set *fset,                          struct dentry *dentry,                          struct presto_version *tgt_dir_ver,                          struct presto_version *new_file_ver, int mode);int presto_journal_link(struct rec_info *rec, struct presto_file_set *fset,                        struct dentry *src, struct dentry *tgt,                        struct presto_version *tgt_dir_ver,                        struct presto_version *new_link_ver);int presto_journal_unlink(struct rec_info *rec, struct presto_file_set *fset,                          struct dentry *dentry,                          struct presto_version *tgt_dir_ver,                          struct presto_version *old_file_ver, int len,                          const char *name);int presto_journal_symlink(struct rec_info *rec, struct presto_file_set *fset,                           struct dentry *dentry, const char *target,                           struct presto_version *tgt_dir_ver,                           struct presto_version *new_link_ver);int presto_journal_mkdir(struct rec_info *rec, struct presto_file_set *fset,                         struct dentry *dentry,                         struct presto_version *tgt_dir_ver,                         struct presto_version *new_dir_ver, int mode);int presto_journal_rmdir(struct rec_info *rec, struct presto_file_set *fset,                         struct dentry *dentry,                         struct presto_version *tgt_dir_ver,                         struct presto_version *old_dir_ver, int len,                         const char *name);int presto_journal_mknod(struct rec_info *rec, struct presto_file_set *fset,                         struct dentry *dentry,                         struct presto_version *tgt_dir_ver,                         struct presto_version *new_node_ver, int mode,                         int dmajor, int dminor);int presto_journal_rename(struct rec_info *rec, struct presto_file_set *fset,                          struct dentry *src, struct dentry *tgt,                          struct presto_version *src_dir_ver,                          struct presto_version *tgt_dir_ver);int presto_journal_open(struct rec_info *rec, struct presto_file_set *fset,                        struct dentry *dentry, struct presto_version *old_ver);int presto_journal_close(struct rec_info *rec, struct presto_file_set *fset,                         struct file *file, 			 struct dentry *dentry, 			 struct presto_version *new_ver);int presto_close_journal_file(struct presto_file_set *fset);void presto_log_op(void *data, int len);int presto_write_last_rcvd(struct rec_info *recinfo,                           struct presto_file_set *fset,                           struct lento_vfs_context *info);/* journal_ext3.c */struct ext3_journal_data {        struct file *jd_file;};extern struct ext3_journal_data e3jd;/* sysctl.c */int init_intermezzo_sysctl(void);void cleanup_intermezzo_sysctl(void);/* ext_attr.c */#ifdef CONFIG_FS_EXT_ATTR/* XXX: Borrowed from vfs.c. Once the ea patch is into CVS  * move this prototype -SHP */int presto_do_set_ext_attr(struct presto_file_set *fset,                           struct dentry *dentry,                           const char *name, void *buffer,                           size_t buffer_len, int flags, mode_t *mode,                           struct lento_vfs_context *info);int presto_set_ext_attr(struct inode *inode,                        const char *name, void *buffer,                        size_t buffer_len, int flags);int lento_set_ext_attr(const char *path, const char *name,                       void *buffer, size_t buffer_len, int flags,                       mode_t mode, struct lento_vfs_context *info);/* XXX: Borrowed from journal.c. Once the ea patch is into CVS  * move this prototype -SHP */int presto_journal_set_ext_attr (struct rec_info *rec,                                 struct presto_file_set *fset,                                 struct dentry *dentry,                                 struct presto_version *ver, const char *name,                                 const char *buffer, int buffer_len,                                 int flags);#endif/* global variables */extern int presto_debug;extern int presto_print_entry;#define PRESTO_DEBUG#ifdef PRESTO_DEBUG/* debugging masks */#define D_SUPER     1   /* print results returned by Venus */#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 D_KML      4096#define CDEBUG(mask, format, a...)                                      \        do {                                                            \                if (presto_debug & mask) {                              \                        printk("(%s:%s,l. %d %d): ", __FILE__, __FUNCTION__, __LINE__, current->pid);   \                        printk(format, ##a); }                          \        } while (0)#define ENTRY                                                           \        if(presto_print_entry)                                          \                printk("Process %d entered %s\n", current->pid, __FUNCTION__)#define EXIT                                                            \        if(presto_print_entry)                                          \                printk("Process %d leaving %s at %d\n", current->pid,   \                       __FUNCTION__,__LINE__)extern long presto_kmemory;extern long presto_vmemory;#define presto_kmem_inc(ptr, size) presto_kmemory += (size)#define presto_kmem_dec(ptr, size) presto_kmemory -= (size)#define presto_vmem_inc(ptr, size) presto_vmemory += (size)#define presto_vmem_dec(ptr, size) presto_vmemory -= (size)#else /* !PRESTO_DEBUG */#define CDEBUG(mask, format, a...) do {} while (0)#define ENTRY do {} while (0)#define EXIT do {} while (0)#define presto_kmem_inc(ptr, size) do {} while (0)#define presto_kmem_dec(ptr, size) do {} while (0)#define presto_vmem_inc(ptr, size) do {} while (0)#define presto_vmem_dec(ptr, size) do {} while (0)#endif /* PRESTO_DEBUG */#define PRESTO_ALLOC(ptr, cast, size)                                   \do {                                                                    \    if (size <= 4096) {                                                 \        ptr = (cast)kmalloc((unsigned long) size, GFP_KERNEL);          \        CDEBUG(D_MALLOC, "kmalloced: %ld at %p.\n", (long)size, ptr);   \        presto_kmem_inc(ptr, size);                                     \    } else {                                                            \        ptr = (cast)vmalloc((unsigned long) size);                      \        CDEBUG(D_MALLOC, "vmalloced: %ld at %p.\n", (long)size, ptr);   \        presto_vmem_inc(ptr, size);                                     \    }                                                                   \    if ((ptr) == 0)                                                     \        printk("PRESTO: out of memory at %s:%d\n", __FILE__, __LINE__); \    else                                                                \        memset( ptr, 0, size );                                         \} while (0)#define PRESTO_FREE(ptr,size)                                           \do {                                                                    \    if (!ptr) {                                                         \        printk("PRESTO: free NULL pointer (%ld bytes) at %s:%d\n",      \               (long)size, __FILE__, __LINE__);                         \        break;                                                          \    }                                                                   \    if (size <= 4096) {                                                 \        CDEBUG(D_MALLOC, "kfreed: %ld at %p.\n", (long)size, ptr);      \        presto_kmem_dec(ptr, size);                                     \        kfree((ptr));                                         \    } else {                                                            \        CDEBUG(D_MALLOC, "vfreed: %ld at %p.\n", (long)size, ptr);      \        presto_vmem_dec(ptr, size);                                     \        vfree((ptr));                                                   \    }                                                                   \} while (0)#define MYPATHLEN(buffer,path) (buffer + PAGE_SIZE - path - 1)#else /* __KERNEL__ */#include <asm/types.h>#include <sys/ioctl.h>struct lento_vfs_context {        __u32 slot_offset;        __u32 recno;        __u64 kml_offset;        __u32 flags;        __u32 updated_time;};#endif /* __KERNEL__*//* marking flags for fsets */#define FSET_CLIENT_RO 0x00000001#define FSET_LENTO_RO  0x00000002#define FSET_HASPERMIT  0x00000004 /* we have a permit to WB */#define FSET_INSYNC     0x00000008 /* this fileset is in sync */#define FSET_PERMIT_WAITING 0x00000010 /* Lento is waiting for permit */#define FSET_STEAL_PERMIT 0x00000020 /* take permit if Lento is dead */#define FSET_JCLOSE_ON_WRITE 0x00000040 /* Journal closes on writes *//* what to mark indicator (ioctl parameter) */ #define MARK_DENTRY   101#define MARK_FSET     102#define MARK_CACHE    103#define MARK_GETFL    104struct readmount {        int io_len;  /* this is IN & OUT: true length of str is returned */        char *io_string;};/* modeled after setsockopt *//* so if you have no /proc, oh well. *//* for now it's all ints. We may grow this later for non-ints. */struct psdev_opt {        int optname;        int optval;};struct lento_input {        char *name;        struct lento_vfs_context info;};struct lento_input_attr {        char *name;#if BITS_PER_LONG < 64        __u32 dummy;    /* XXX on 64-bit platforms, this is not needed */#endif        __u32 valid;        __u32 mode;        __u32 uid;        __u32 gid;        __u64 size;        __s64 atime;        __s64 mtime;        __s64 ctime;        __u32 attr_flags;        struct lento_vfs_context info;};struct lento_input_mode {        char *name;        __u32 mode;        struct lento_vfs_context info;};struct lento_input_old_new {        char *oldname;        char *newname;        struct lento_vfs_context info;};struct lento_input_dev {        char *name;        __u32 mode;        __u32 major;        __u32 minor;        struct lento_vfs_context info;};struct lento_input_iopen {        char *name;#if BITS_PER_LONG < 64        __u32 dummy;    /* XXX on 64-bit platforms, this is not needed */#endif        __u64 ino;        __u32 generation;        __u32 flags;        __s32 fd;};struct lento_input_close {        __u32 fd;        struct lento_vfs_context info;};/* XXX: check for alignment */struct lento_input_ext_attr {        char  *path;        char  *name;        __u32 name_len;        char  *buffer;        __u32 buffer_len;        __u32 flags;        __u32 mode;        struct lento_vfs_context info;};/* XXX should PRESTO_GET_* actually be of type _IOR, since we are reading? */#define PRESTO_GETMOUNT         _IOW ('p',0x03, struct readmount *)#define PRESTO_SETPID           _IOW ('p',0x04, struct readmount *)#define PRESTO_CLOSE_JOURNALF   _IOW ('p',0x06, struct readmount *)#define PRESTO_SET_FSETROOT     _IOW ('p',0x07, struct readmount *)#define PRESTO_CLEAR_FSETROOT   _IOW ('p',0x08, struct readmount *)#define PRESTO_SETOPT           _IOW ('p',0x09, struct psdev_opt *)#define PRESTO_GETOPT           _IOW ('p',0x0a, struct psdev_opt *)#define PRESTO_GET_KMLSIZE      _IOW ('p',0x0b, struct psdev_opt *)#define PRESTO_GET_RECNO        _IOW ('p',0x0c, struct psdev_opt *)#define PRESTO_VFS_SETATTR      _IOW ('p',0x10, struct lento_input_attr *)#define PRESTO_VFS_CREATE       _IOW ('p',0x11, struct lento_input_mode *)#define PRESTO_VFS_LINK         _IOW ('p',0x12, struct lento_input_old_new *)#define PRESTO_VFS_UNLINK       _IOW ('p',0x13, struct lento_input *)#define PRESTO_VFS_SYMLINK      _IOW ('p',0x14, struct lento_input_old_new *)#define PRESTO_VFS_MKDIR        _IOW ('p',0x15, struct lento_input_mode *)#define PRESTO_VFS_RMDIR        _IOW ('p',0x16, struct lento_input *)#define PRESTO_VFS_MKNOD        _IOW ('p',0x17, struct lento_input_dev *)#define PRESTO_VFS_RENAME       _IOW ('p',0x18, struct lento_input_old_new *)#define PRESTO_VFS_CLOSE        _IOW ('p',0x1a, struct lento_input_close *)#define PRESTO_VFS_IOPEN        _IOW ('p',0x1b, struct lento_input_iopen *)#define PRESTO_VFS_SETEXTATTR   _IOW ('p',0x1c, struct lento_input_ext_attr *)#define PRESTO_VFS_DELEXTATTR   _IOW ('p',0x1d, struct lento_input_ext_attr *)#define PRESTO_MARK             _IOW ('p',0x20, struct lento_input_open *)#define PRESTO_RELEASE_PERMIT   _IOW ('p',0x21, struct lento_input_open *)#define PRESTO_CLEAR_ALL_FSETROOTS  _IOW ('p',0x22, struct readmount *)#define PRESTO_BACKFETCH_LML    _IOW ('p',0x23, struct readmount *)#define PRESTO_REINT            _IOW ('p',0x24, struct readmount *)#define PRESTO_CANCEL_LML       _IOW ('p',0x25, struct readmount *)#define PRESTO_RESET_FSET       _IOW ('p',0x26, struct readmount *)#define PRESTO_COMPLETE_CLOSES  _IOW ('p',0x27, struct readmount *)#define PRESTO_REINT_BEGIN      _IOW ('p',0x30, struct readmount *)#define PRESTO_DO_REINT         _IOW ('p',0x31, struct readmount *)#define PRESTO_REINT_END        _IOW ('p',0x32, struct readmount *)#endif

⌨️ 快捷键说明

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