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

📄 blkdev.h

📁 类似Linux操作系统0.11版文件系统的文件系统设计和Windows下的操作程序
💻 H
字号:
/*
 * UNIX Like (UL)文件系统块设备驱动层
 * 介于文件系统与硬件驱动层之间的模块
 */
#pragma once
#include "UL_Buffer.h"

#define DEV_NAME_LEN 32

/* 从设备号中分离主副设备号 */
#define MAJOR(a) (((unsigned)(a))>>8)
#define MINOR(a) ((a)&0xff)

/* 块设备结构 */
struct blk_dev_struct 
{
	char name[DEV_NAME_LEN];	/* 设备名 */
	void (*request_fn)(void);	/* 每种块设备各自的读写请求处理函数 */
	struct request *cur_request;	/* 读写请求队列头 */
};

/* 块设备读写请求结构 */
struct request
{
	int dev;					// 使用的设备号(-1)。
	int cmd;					// 命令(READ 或WRITE)。
	int errors;					//操作时产生的错误次数。
	unsigned long sector;		// 起始扇区。(1 块=2 扇区)
	unsigned long nr_sectors;	// 读/写扇区数。
	char *buffer;				// 数据缓冲区。
	struct buffer_head *bh;		// 缓冲区头指针
	struct request *next;		// 指向下一请求项。
};

/* 块设备的数量 */
#define NR_BLK_DEV	6

/* 块设备 */
extern struct blk_dev_struct blk_dev[NR_BLK_DEV];

#define NR_REQUEST 32

/* 请求队列 */
extern struct request wr_request[NR_REQUEST];

#define CURRENT_REQUEST (blk_dev[MAJOR_NR].cur_request)
#define CURRENT_DEV (blk_dev[MAJOR_NR])

extern void blk_dev_init (void);
extern void ll_rw_block (int rw, struct buffer_head *bh);
extern void lock_buffer (struct buffer_head *bh);
extern void unlock_buffer (struct buffer_head *bh);

⌨️ 快捷键说明

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