linux块设备驱动之实例

本文深入探讨Linux块设备驱动,包括如何注册块设备驱动,定义和初始化设备结构体,设置队列扇区大小以及实现关键的请求处理操作。通过实例解析,阐述了从设备注册到请求操作的整个流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        前两篇blog已经基本熟悉了块设备的相关结构,这里来总结下ldd3中提到的一些块设备驱动例题;


1、注册:向内核注册个块设备驱动,其实就是用主设备号告诉内核这个代表块设备驱动

        sbull_major  =  register_blkdev(sbull_major, "sbull");
        if (0 >=  sbull_major){
            printk(KERN_WARNING "sbull:   unable  to  get  major  number!\n");
            return  -EBUSY;
        }


2、定义设备结构体:

struct sbull_dev{
     int size; // 以扇区为单位,设备的大小
     u8  *data; // 数据数组
     short users; // 用户数目
     short media_change; // 介质改变标识
     spinlock_t lock; // 用于互斥
     struct request_queue  *queue; // 设备请求队列
     struct gendisk  *gd; // gendisk结构
     struct timer_list time; // 用来模拟介质改变
 };

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值