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

📄 dasd.h

📁 Linux内核源代码 为压缩文件 是<<Linux内核>>一书中的源代码
💻 H
字号:
#ifndef DASD_H#define DASD_H/* First of all the external stuff */#include <linux/ioctl.h>#include <linux/major.h>#include <linux/wait.h>#define IOCTL_LETTER 'D'#define BIODASDFORMAT  _IO(IOCTL_LETTER,0) /* Format the volume or an extent */#define BIODASDDISABLE _IO(IOCTL_LETTER,1) /* Disable the volume (for Linux) */#define BIODASDENABLE  _IO(IOCTL_LETTER,2) /* Enable the volume (for Linux) *//* Stuff for reading and writing the Label-Area to/from user space */#define BIODASDGTVLBL  _IOR(IOCTL_LETTER,3,dasd_volume_label_t)#define BIODASDSTVLBL  _IOW(IOCTL_LETTER,4,dasd_volume_label_t)#define BIODASDRWTB    _IOWR(IOCTL_LETTER,5,int)#define BIODASDRSID    _IOR(IOCTL_LETTER,6,senseid_t)typedefunion {	char bytes[512];	struct {		/* 80 Bytes of Label data */		char identifier[4];	/* e.g. "LNX1", "VOL1" or "CMS1" */		char label[6];	/* Given by user */		char security;		char vtoc[5];	/* Null in "LNX1"-labelled partitions */		char reserved0[5];		long ci_size;		long blk_per_ci;		long lab_per_ci;		char reserved1[4];		char owner[0xe];		char no_part;		char reserved2[0x1c];		/* 16 Byte of some information on the dasd */		short blocksize;		char nopart;		char unused;		long unused2[3];		/* 7*10 = 70 Bytes of partition data */		struct {			char type;			long start;			long size;			char unused;		} part[7];	} __attribute__ ((packed)) label;} dasd_volume_label_t;typedef union {	struct {		unsigned long no;		unsigned int ct;	} __attribute__ ((packed)) input;	struct {		unsigned long noct;	} __attribute__ ((packed)) output;} __attribute__ ((packed)) dasd_xlate_t;int dasd_init (void);#ifdef MODULEint init_module (void);void cleanup_module (void);#endif				/* MODULE *//* Definitions for blk.h *//* #define DASD_MAGIC 0x44415344  is ascii-"DASD" *//* #define dasd_MAGIC 0x64617364;  is ascii-"dasd" */#define DASD_MAGIC 0xC4C1E2C4 /* is ebcdic-"DASD" */#define dasd_MAGIC 0x8481A284 /* is ebcdic-"dasd" */#define DASD_NAME "dasd"#define DASD_PARTN_BITS 2#define DASD_MAX_DEVICES (256>>DASD_PARTN_BITS)#define MAJOR_NR DASD_MAJOR#define PARTN_BITS DASD_PARTN_BITS#ifdef __KERNEL__/* Now lets turn to the internal sbtuff *//*   define the debug levels:   - 0 No debugging output to console or syslog   - 1 Log internal errors to syslog, ignore check conditions    - 2 Log internal errors and check conditions to syslog   - 3 Log internal errors to console, log check conditions to syslog   - 4 Log internal errors and check conditions to console   - 5 panic on internal errors, log check conditions to console   - 6 panic on both, internal errors and check conditions */#define DASD_DEBUG 4#define DASD_PROFILE/*   define the level of paranoia   - 0 quite sure, that things are going right   - 1 sanity checking, only to avoid panics   - 2 normal sanity checking   - 3 extensive sanity checks   - 4 exhaustive debug messages */#define DASD_PARANOIA 2/*   define the depth of flow control, which is logged as a check condition   - 0 No flow control messages   - 1 Entry of functions logged like check condition   - 2 Entry and exit of functions logged like check conditions   - 3 Internal structure broken down   - 4 unrolling of loops,... */#define DASD_FLOW_CONTROL 0#if DASD_DEBUG > 0#define PRINT_DEBUG(x...) printk ( KERN_DEBUG PRINTK_HEADER x )#define PRINT_INFO(x...) printk ( KERN_INFO PRINTK_HEADER x )#define PRINT_WARN(x...) printk ( KERN_WARNING PRINTK_HEADER x )#define PRINT_ERR(x...) printk ( KERN_ERR PRINTK_HEADER x )#define PRINT_FATAL(x...) panic ( PRINTK_HEADER x )#else#define PRINT_DEBUG(x...) printk ( KERN_DEBUG PRINTK_HEADER x )#define PRINT_INFO(x...) printk ( KERN_DEBUG PRINTK_HEADER x )#define PRINT_WARN(x...) printk ( KERN_DEBUG PRINTK_HEADER x )#define PRINT_ERR(x...) printk ( KERN_DEBUG PRINTK_HEADER x )#define PRINT_FATAL(x...) printk ( KERN_DEBUG PRINTK_HEADER x )#endif				/* DASD_DEBUG */#define INTERNAL_ERRMSG(x,y...) \"Internal error: in file " __FILE__ " line: %d: " x, __LINE__, y#define INTERNAL_CHKMSG(x,y...) \"Inconsistency: in file " __FILE__ " line: %d: " x, __LINE__, y#define INTERNAL_FLWMSG(x,y...) \"Flow control: file " __FILE__ " line: %d: " x, __LINE__, y#if DASD_DEBUG > 4#define INTERNAL_ERROR(x...) PRINT_FATAL ( INTERNAL_ERRMSG ( x ) )#elif DASD_DEBUG > 2#define INTERNAL_ERROR(x...) PRINT_ERR ( INTERNAL_ERRMSG ( x ) )#elif DASD_DEBUG > 0#define INTERNAL_ERROR(x...) PRINT_WARN ( INTERNAL_ERRMSG ( x ) )#else#define INTERNAL_ERROR(x...)#endif				/* DASD_DEBUG */#if DASD_DEBUG > 5#define INTERNAL_CHECK(x...) PRINT_FATAL ( INTERNAL_CHKMSG ( x ) )#elif DASD_DEBUG > 3#define INTERNAL_CHECK(x...) PRINT_ERR ( INTERNAL_CHKMSG ( x ) )#elif DASD_DEBUG > 1#define INTERNAL_CHECK(x...) PRINT_WARN ( INTERNAL_CHKMSG ( x ) )#else#define INTERNAL_CHECK(x...)#endif				/* DASD_DEBUG */#if DASD_DEBUG > 3#define INTERNAL_FLOW(x...) PRINT_ERR ( INTERNAL_FLWMSG ( x ) )#elif DASD_DEBUG > 2#define INTERNAL_FLOW(x...) PRINT_WARN ( INTERNAL_FLWMSG ( x ) )#else#define INTERNAL_FLOW(x...)#endif				/* DASD_DEBUG */#if DASD_FLOW_CONTROL > 0#define FUNCTION_ENTRY(x) INTERNAL_FLOW( x "entered %s\n","" );#else#define FUNCTION_ENTRY(x)#endif				/* DASD_FLOW_CONTROL */#if DASD_FLOW_CONTROL > 1#define FUNCTION_EXIT(x) INTERNAL_FLOW( x "exited %s\n","" );#else#define FUNCTION_EXIT(x)#endif				/* DASD_FLOW_CONTROL */#if DASD_FLOW_CONTROL > 2#define FUNCTION_CONTROL(x...) INTERNAL_FLOW( x );#else#define FUNCTION_CONTROL(x...)#endif				/* DASD_FLOW_CONTROL */#if DASD_FLOW_CONTROL > 3#define LOOP_CONTROL(x...) INTERNAL_FLOW( x );#else#define LOOP_CONTROL(x...)#endif				/* DASD_FLOW_CONTROL */#define DASD_DO_IO_SLEEP 0x01#define DASD_DO_IO_NOLOCK 0x02#define DASD_DO_IO_NODEC 0x04#define DASD_NOT_FORMATTED 0x01extern wait_queue_head_t dasd_waitq;#undef DEBUG_DASD_MALLOC#ifdef DEBUG_DASD_MALLOCvoid *b;#define kmalloc(x...) (PRINT_INFO(" kmalloc %p\n",b=kmalloc(x)),b)#define kfree(x) PRINT_INFO(" kfree %p\n",x);kfree(x)#define get_free_page(x...) (PRINT_INFO(" gfp %p\n",b=get_free_page(x)),b)#define __get_free_pages(x...) (PRINT_INFO(" gfps %p\n",b=__get_free_pages(x)),b)#endif				/* DEBUG_DASD_MALLOC */#endif				/* __KERNEL__ */#endif				/* DASD_H *//* * Overrides for Emacs so that we follow Linus's tabbing style. * Emacs will notice this stuff at the end of the file and automatically * adjust the settings for this buffer only.  This must remain at the end * of the file. * --------------------------------------------------------------------------- * Local variables: * c-indent-level: 4  * c-brace-imaginary-offset: 0 * c-brace-offset: -4 * c-argdecl-indent: 4 * c-label-offset: -4 * c-continued-statement-offset: 4 * c-continued-brace-offset: 0 * indent-tabs-mode: nil * tab-width: 8 * End: */

⌨️ 快捷键说明

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