- 7
- 0
- 约1.74万字
- 约 13页
- 2017-08-22 发布于江苏
- 举报
设计自己的驱动程序
实验目的:
通过一个简单的设备驱动的实现过程。学会Linux 中设备驱动程序的编写,
实验内容:
设计和实现一个虚拟命名管道(FIFO) 的字符设备。写一个模块化的字符设备驱动程序
实验提示:
一、设备的功能
设计和实现一个虚拟命名管道(FIFO) 的字符设备。我们知道,管道是进程间 信的一种
方式:一个进程向管道中写数据,另一个进程从管道中读取数据,先写入的数据先读出。我
们的驱动程序要实现N(N=4)个管道,每个管道对应两个设备,次设备号是偶数的设备是只
写设备,次设备号是奇数的是只读设备。写入设备i (i 是偶数)的字符可以从设备i+1 读出。
这样,我们一共就需要2N 个次设备号。
我们的目标是写一个模块化的字符设备驱动程序。设备所使用的主设备号可以从尚未分
配的主设备号中任选一个,/Documentation/devices.txt 记录了当前版本内核的主设备号分配
情况。如果设备文件系统(devfs) 尚未激活,我们在加载模块之后,还必须用 mknod 命令创
建相应的设备文件节点。
如果FIFO 的写入端尚未打开,FIFO 中就不会有数据可读,所以此时试图从FIFO 中读
取数据的进程应该返回一个错误码。如果写入端已经打开,为了保证对临界区的互斥访问,
调用读操作的进程必须被阻塞。如果存在被阻塞的读者,在写操作完成后 (或者关闭一个写
设备时)必须唤醒它。
如果写入的数据太多,超出了缓冲区中空闲块的大小,调用写操作的进程必须睡眠,以
等待缓冲区中有新的空闲块。
二、设备的实现
1. 数据结构:
首先,我们要包含一些必要的头文件、宏和全局变量。
vfifo.c
#ifndef __KERNEL__
#define __KERNEL__
#endif
#ifndef MODULE
#define MODULE
#endif
#define __NO_VERSION__
#includelinux/config.h
#includelinux/module.h
#includelinux/kernel.h
#includelinux/malloc.h
#includelinux/fs.h
#includelinux/proc_fs.h
#includelinux/errno.h
#includelinux/types.h
#includelinux/fcntl.h
#includelinux/init.h
#includeasm/system.h
#includeasm/uaccess.h
#ifndef VFIFO_MAJOR
#define VFIFO_MAJOR 241
#endif
#ifndef VFIFO_NR_DEVS
#define VFIFO_NR_DEVS 4
#endif
#ifndef VFIFO_BUFFER
#define VFIFO_BUFFER 4000
#endif
#includelinux/devfs_fs_kernel.h
devfs_handle_t vfifo_devfs_dir;
struct file_operations vfifo_fops;
int vfifo_maj or=VFIFO_MAJOR;
int vfifo_nr_devs=VFIFO_NR_DEVS;
int vfifo_buffer=VFIFO_BUFFER;
MODULE_PARM(vfifo_maj or,i);
MODULE_PARM(vfifo_nr_devs,i);
MODULE_PARM(
您可能关注的文档
- Bgdczwk动力煤期货基础知识说明书.doc
- BK-200活性炭,河南郑州活性炭厂.doc
- BM View使用说明书.doc
- Bpkjtpa高中数学必修3算法习题(含答案).doc
- Bpqyllq高中英语教学案例.doc
- BPR在英国的成功案例.pdf
- CACTI与OAM的集成.ppt
- cad 演示文稿.ppt
- cad_实训2 认识CAD.pdf
- CAD绘图教程_三维建模.ppt
- 25-26学年政治(部编版)选择性必修第二册课件:第1单元 周清1 民法中的人身权及财产权.pptx
- 25-26学年政治(部编版)选择性必修第二册课件:1.4.1 权利保障 于法有据.pptx
- 2025北京丰台区高二(上)期中地理(A卷)含答案.docx
- 2025北京三帆中学初三(上)开学考英语试题含答案.docx
- 2025北京一零一中初三9月月考语文试题含答案.docx
- 2025北京海淀区初三(上)期中道法试题含答案.docx
- 2025北京丰台区高一(上)期中政治(A卷)含答案.docx
- 25-26学年政治统编版必修4课件:3.3 唯物辩证法的实质与核心.pptx
- 25-26学年政治统编版必修4课件:7.2 正确认识中华传统文化.pptx
- 湖北省部分高中2026届高三上学期二模联考 历史试卷.docx
最近下载
- 附录B规范性附录AGC性能指标计算及补偿-中国电力企业联合会.DOC
- 山东省烟台市蓬莱区2022-2023学年六年级上学期期末数学试题(五四学制) (含答案解析).docx VIP
- YQ-15-烟用材料许可使用物质名 单系列标准.pdf VIP
- 2019-2020学年四川成都锦江区五年级上册语文期末试卷及答案.pdf
- 基于ABAQUS的动力总成悬置支架仿真分析方法研究.docx VIP
- 【三套试卷】【浙教版】小学三年级数学上册第一单元教材检测题附答案.pdf VIP
- EMT会议管理制度.docx VIP
- 十年(2016-2025)高考物理真题分类汇编(全国通用)-专题23 法拉第电磁感应定律.docx VIP
- 渠道维护工高级技师考试答案(强化练习).docx VIP
- 动量和能量中的滑板块模型专题.docx VIP
原创力文档

文档评论(0)