- 1、本文档共10页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
驱动示例详解
在驱动程序的示例代码中,一共有两个文件,整个代码对驱动的框架做了
详细的说明。在驱动程序开发中有三个非常重要的结构体:struct
file_operationsstruct filestruct cdev、 、 ,所有的文件相关操作都在struct
file_operations,而文件相关的读写信息等文件信息在struct file,struct而
cdev主要就是字符驱动的相关内容
头文件 :
#ifndef _MEMDEV_H_
#define _MEMDEV_H_
#ifndef MEMDEV_MAJOR
#define MEMDEV_MAJOR 254 /*预设的mem 的主设备号*/
#endif
#ifndef MEMDEV_NR_DEVS
#define MEMDEV_NR_DEVS 2 /*设备数*/
#endif
#ifndef MEMDEV_SIZE#
define MEMDEV_SIZE 4096
#endif
/*mem 设备描述结构体*/
struct mem_dev
{
char *data; //地址指针
unsigned long size; //设备的大小
};
//struct mem_dev 这个结构是用于测试的。
#endif /* _MEMDEV_H_ */
.c 文件
#include linux/module.h
#include linux/types.h
#include linux/fs.h
#include linux/errno.h
#include linux/mm.h
#include linux/sched.h
#include linux/init.h
#include linux/cdev.h
#include asm/io.h
#include asm/system.h
#include asm/uaccess.h
#include memdev.h
static mem_major = MEMDEV_MAJOR ;
module_param (mem_major, int, S_IRUGO);
struct mem_dev *mem_devp ; /*设备结构体指针*/
struct cdev cdev;
/*文件打开函数*/
int mem_open (struct inode *inode, struct file *filp)
{
struct mem_dev *dev;
/*获取次设备号*/
int num = MINOR (inode-i_rdev);
//inode-i_rdev 中存放了设备号
//这里要注意struct inode,open close read write 等函数的参数是不
一样的
//在struct inode 中存放有该设备的设备号,struct file 中存放有设
备文件相关操作的信息。
if (num = MEMDEV_NR_DEVS) //这里做检测,
return -ENODEV ;
dev = mem_devp [num];
/*将设备描述结构指针赋值给文件私有数据指针*/
filp-private_data = dev;
// 为什么这里要这么操作?
//在read write 中的参数没有struct inode,只有struct file ,而设
备号在struct inode,
//要获取设备号对应的内存空间,只能在open 中这样操作。
//这里的filp-private_data 与dev 之间的数据类型是一致的吗
/
//还是filp-private_data 的数据类型是
// void *类型
return 0;
}
/*文件释放函数*/
int mem_release (struct inode *inode, struct file *filp)
{
return 0
您可能关注的文档
- 2015年春季学期计算机科学和技术专业《c++程序设计》期末复习提纲.doc
- 伟大和卑微---浅谈《泰坦尼克号》对人性的多维透视.doc
- oracle期末考试题与答案.doc
- CPU卡中T=0通讯协议的分析和实现.doc
- 嵌入式linux系统移植试题 - 答案幻灯片.doc
- 第二章 教案 设计旅游信息数据库.doc
- 第九章 把课堂还给学生.doc
- 2011考研大纲解析与配套强化指导超级峰1.doc
- 工程项目施工中的合同管理和技术管理.doc
- 汽车评估-2012-2013-1-汽服-复习幻灯片.doc
- 甘肃省白银市会宁县第一中学2025届高三3月份第一次模拟考试化学试卷含解析.doc
- 2025届吉林市第一中学高考考前模拟生物试题含解析.doc
- 四川省三台县芦溪中学2025届高三下第一次测试生物试题含解析.doc
- 2025届江苏省启东市吕四中学高三适应性调研考试历史试题含解析.doc
- 浙江省宁波市十校2025届高三二诊模拟考试历史试卷含解析.doc
- 甘肃省甘南2025届高考生物必刷试卷含解析.doc
- 河北省石家庄市一中、唐山一中等“五个一”名校2025届高考历史四模试卷含解析.doc
- 江西省南昌市进贤一中2025届高考生物考前最后一卷预测卷含解析.doc
- 甘肃省白银市会宁县第四中学2025届高三第二次模拟考试历史试卷含解析.doc
- 宁夏银川市宁夏大学附属中学2025届高考化学押题试卷含解析.doc
文档评论(0)