关于linux中字符设备驱动程序的设计

本文介绍了Linux字符设备驱动程序的基础知识,包括file_operations结构体、cdev结构体和file结构体,详细讲解了read、write、open、ioctl、release等关键函数的实现,以及驱动的加载和卸载过程。
摘要由CSDN通过智能技术生成

作为初学者自己总结了一下一个简单的linux字符设备驱动程序中需要学习的内容


一.字符设备驱动程序的组成:

1.头文件:头文件部分包含进数据结构及内核函数需要用到的头文件。

2.file_operations结构体变量:声明了驱动程序的所有接口函数。

3.接口函数:包含字符设备驱动程序与内核及应用程序交互的read()函数,write()函数,open()函数,ioctl()函数,release()函数的实现。

4.加载函数:用于加载驱动程序至内核。

5.卸载函数:用于从内核卸载驱动程序。


二.字符设备驱动三个需要用到的结构体

1.struct  cdev 描述字符设备

struct  cdev{

struct  kobject  kobj;    //内嵌的kobject对象

struct  module  *owener;   //所属模块指针

const  struct  file_operations  *ops;    //指向  file_operation  结构体的指针

struct  list_head  list;    

dev_t  dev;  //设备号

unsigned  int  count;   //设备号范围

}

2.struct  file_operation 虚拟文件系统与硬件驱动的接口

struct file_operations { 
  struct module *owner; 
  loff_t(*llseek) (struct file *, loff_t, int); 
  ssize_t(*read) (struct file *, char __user *, size_t, loff_t *); 
  ssize_t(*aio_read) (struct kiocb *, char __user *, size_t, loff_t); 
  ssize_t(*write) (struct file *, const char __user *, size_t, loff_t *); 
  ssize_t(*aio_write) (struct kiocb *, const char __user *, size_t, 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值