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

📄 intermezzo_kml.h

📁 linux得一些常用命令,以及linux环境下的c编程
💻 H
字号:
#ifndef __INTERMEZZO_KML_H#define __INTERMEZZO_KML_H#include <linux/version.h>#include <linux/intermezzo_psdev.h>#include <linux/fs.h>#include <linux/intermezzo_journal.h>#define PRESTO_KML_MAJOR_VERSION 0x00010000#define PRESTO_KML_MINOR_VERSION 0x00002001#define PRESTO_OP_NOOP          0#define PRESTO_OP_CREATE        1#define PRESTO_OP_MKDIR         2#define PRESTO_OP_UNLINK        3#define PRESTO_OP_RMDIR         4#define PRESTO_OP_CLOSE         5#define PRESTO_OP_SYMLINK       6#define PRESTO_OP_RENAME        7#define PRESTO_OP_SETATTR       8#define PRESTO_OP_LINK          9#define PRESTO_OP_OPEN          10#define PRESTO_OP_MKNOD         11#define PRESTO_OP_WRITE         12#define PRESTO_OP_RELEASE       13#define PRESTO_OP_TRUNC         14#define PRESTO_OP_SETEXTATTR    15#define PRESTO_OP_DELEXTATTR    16#define PRESTO_LML_DONE     	1 /* flag to get first write to do LML */#define KML_KOP_MARK            0xffffstruct presto_lml_data {        loff_t   rec_offset;};struct big_journal_prefix {        u32 len;        u32 version;         u32 pid;        u32 uid;        u32 fsuid;        u32 fsgid;        u32 opcode;        u32 ngroups;        u32 groups[NGROUPS_MAX];};enum kml_opcode {        KML_CREATE = 1,        KML_MKDIR,        KML_UNLINK,        KML_RMDIR,        KML_CLOSE,        KML_SYMLINK,        KML_RENAME,        KML_SETATTR,        KML_LINK,        KML_OPEN,        KML_MKNOD,        KML_ENDMARK = 0xff};struct kml_create {	char 			*path;	struct presto_version 	new_objectv, 				old_parentv, 				new_parentv;	int 			mode;	int 			uid;	int 			gid;};struct kml_open {};struct kml_mkdir {	char 			*path;	struct presto_version 	new_objectv, 				old_parentv, 				new_parentv;	int 			mode;	int 			uid;	int 			gid;};struct kml_unlink {	char 			*path, 					*name;	struct presto_version 	old_tgtv, 				old_parentv, 				new_parentv;};struct kml_rmdir {	char 			*path, 				*name;	struct presto_version 	old_tgtv, 				old_parentv, 				new_parentv;};struct kml_close {	int 			open_mode, 				open_uid, 				open_gid;	char 			*path;	struct presto_version 	new_objectv;	__u64 			ino;      	int 			generation;};struct kml_symlink {	char 			*sourcepath, 					*targetpath;	struct presto_version 	new_objectv, 				old_parentv, 				new_parentv;      	int 			uid;	int 			gid;};struct kml_rename {	char 			*sourcepath, 				*targetpath;	struct presto_version 	old_objectv, 				new_objectv, 				old_tgtv, 				new_tgtv;};struct kml_setattr {	char 			*path;	struct presto_version 	old_objectv;	struct iattr 		iattr;};struct kml_link {	char 			*sourcepath, 					*targetpath;	struct presto_version 	new_objectv, 				old_parentv, 				new_parentv;};struct kml_mknod {	char 			*path;	struct presto_version 	new_objectv, 				old_parentv, 				new_parentv;	int 			mode;      	int 			uid;	int 			gid;       	int 			major;	int 			minor;};/* kml record items for optimizing */struct kml_kop_node{        u32             kml_recno;        u32             kml_flag;        u32             kml_op;        nlink_t         i_nlink;        u32             i_ino;};struct kml_kop_lnode{        struct list_head chains;        struct kml_kop_node node;};struct kml_endmark {	u32			total;	struct kml_kop_node 	*kop;};/* kml_flag */#define  KML_REC_DELETE               1#define  KML_REC_EXIST                0struct kml_optimize {	struct list_head kml_chains;        u32              kml_flag;        u32              kml_op;        nlink_t          i_nlink;        u32              i_ino;};struct kml_rec {	/* attribute of this record */	int 				rec_size;        int     			rec_kml_offset;	struct 	big_journal_prefix 	rec_head;	union {		struct kml_create 	create;		struct kml_open 	open;		struct kml_mkdir 	mkdir;		struct kml_unlink 	unlink;		struct kml_rmdir 	rmdir;		struct kml_close 	close;		struct kml_symlink 	symlink;		struct kml_rename 	rename;		struct kml_setattr 	setattr;		struct kml_mknod 	mknod;		struct kml_link 	link;		struct kml_endmark      endmark;	} rec_kml;        struct 	journal_suffix 		rec_tail;        /* for kml optimize only */        struct  kml_optimize kml_optimize;};/* kml record items for optimizing */extern void kml_kop_init (struct presto_file_set *fset);extern void kml_kop_addrec (struct presto_file_set *fset, 		struct inode *ino, u32 op, u32 flag);extern int  kml_kop_flush (struct presto_file_set *fset);/* defined in kml_setup.c */extern int kml_init (struct presto_file_set *fset);extern int kml_cleanup (struct presto_file_set *fset);/* defined in kml.c */extern int begin_kml_reint (struct file *file, unsigned long arg);extern int do_kml_reint (struct file *file, unsigned long arg);extern int end_kml_reint (struct file *file, unsigned long arg);/* kml_utils.c */extern char *dlogit (void *tbuf, const void *sbuf, int size);extern char * bdup_printf (char *format, ...);/* defined in kml_decode.c *//* printop */#define  PRINT_KML_PREFIX             0x1#define  PRINT_KML_SUFFIX             0x2#define  PRINT_KML_REC                0x4#define  PRINT_KML_OPTIMIZE           0x8#define  PRINT_KML_EXIST              0x10#define  PRINT_KML_DELETE             0x20extern void   kml_printrec (struct kml_rec *rec, int printop);extern int    print_allkmlrec (struct list_head *head, int printop);extern int    delete_kmlrec (struct list_head *head);extern int    kml_decoderec (char *buf, int pos, int buflen, int *size,	                     struct kml_rec **newrec);extern int decode_kmlrec (struct list_head *head, char *kml_buf, int buflen);extern void kml_freerec (struct kml_rec *rec);/* defined in kml_reint.c */#define KML_CLOSE_BACKFETCH            1extern int kml_reintbuf (struct  kml_fsdata *kml_fsdata,                  	char *mtpt, struct kml_rec **rec);/* defined in kml_setup.c */extern int kml_init (struct presto_file_set *fset);extern int kml_cleanup (struct presto_file_set *fset);#endif

⌨️ 快捷键说明

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