linux-0.10 对于想了解linux内核,而又不想花太多精力的人,最好就是这种低版本,而具有核心价值的程序

源代码在线查看: blk.h

软件大小: 177 K
上传用户: laoniu
关键词: linux 0.10 内核 价值
下载地址: 免注册下载 普通下载 VIP

相关代码

				#ifndef _BLK_H				#define _BLK_H								#define NR_BLK_DEV	7				#define NR_REQUEST	64								/*				 * Ok, this is an expanded form so that we can use the same				 * request for paging requests when that is implemented. In				 * paging, 'bh' is NULL, and 'waiting' is used to wait for				 * read/write completion.				 */				struct request {					int dev;		/* -1 if no request */					int cmd;		/* READ or WRITE */					int errors;					unsigned long sector;					unsigned long nr_sectors;					char * buffer;					struct task_struct * waiting;					struct buffer_head * bh;					struct request * next;				};								#define IN_ORDER(s1,s2) \				((s1)->dev < (s2)->dev || ((s1)->dev == (s2)->dev && \				(s1)->sector < (s2)->sector))								struct blk_dev_struct {					void (*request_fn)(void);					struct request * current_request;				};								extern struct blk_dev_struct blk_dev[NR_BLK_DEV];				extern struct request request[NR_REQUEST];				extern struct task_struct * wait_for_request;								#ifdef MAJOR_NR								/*				 * Add entries as needed. Currently the only block devices				 * supported are hard-disks and floppies.				 */				#if (MAJOR_NR == 2)				/* floppy */				#define DEVICE_NAME "floppy"				#define DEVICE_INTR do_floppy				#define DEVICE_REQUEST do_fd_request				#define DEVICE_NR(device) ((device) & 3)				#define DEVICE_ON(device) floppy_on(DEVICE_NR(device))				#define DEVICE_OFF(device) floppy_off(DEVICE_NR(device))								#elif (MAJOR_NR == 3)				/* harddisk */				#define DEVICE_NAME "harddisk"				#define DEVICE_INTR do_hd				#define DEVICE_REQUEST do_hd_request				#define DEVICE_NR(device) (MINOR(device)/5)				#define DEVICE_ON(device)				#define DEVICE_OFF(device)								#elif				/* unknown blk device */				#error "unknown blk device"								#endif								#define CURRENT (blk_dev[MAJOR_NR].current_request)				#define CURRENT_DEV DEVICE_NR(CURRENT->dev)								void (*DEVICE_INTR)(void) = NULL;				static void (DEVICE_REQUEST)(void);								extern inline void unlock_buffer(struct buffer_head * bh)				{					if (!bh->b_lock)						printk(DEVICE_NAME ": free buffer being unlocked\n");					bh->b_lock=0;					wake_up(&bh->b_wait);				}								extern inline void end_request(int uptodate)				{					DEVICE_OFF(CURRENT->dev);					if (CURRENT->bh) {						CURRENT->bh->b_uptodate = uptodate;						unlock_buffer(CURRENT->bh);					}					if (!uptodate) {						printk(DEVICE_NAME " I/O error\n\r");						printk("dev %04x, block %d\n\r",CURRENT->dev,							CURRENT->bh->b_blocknr);					}					wake_up(&CURRENT->waiting);					wake_up(&wait_for_request);					CURRENT->dev = -1;					CURRENT = CURRENT->next;				}								#define INIT_REQUEST \				repeat: \					if (!CURRENT) \						return; \					if (MAJOR(CURRENT->dev) != MAJOR_NR) \						panic(DEVICE_NAME ": request list destroyed"); \					if (CURRENT->bh) \						if (!CURRENT->bh->b_lock) \							panic(DEVICE_NAME ": block not locked"); \						else { \							CURRENT->bh->b_dirt = 0; \							CURRENT->bh->b_uptodate = 0; \						}								#endif								#endif							

相关资源