Linux设备驱动开发详解--笔记6--字符设备驱动
来源:互联网 发布:剑灵动漫人物捏脸数据 编辑:程序博客网 时间:2024/06/11 09:56
使用下列洪可以通过主设备号和次设备号生成dev_t
MKDEV(int major, int mainor)
如果复制的内存是简单类型,如char、int、long等,则可以使用简单的put_user()和get_user()
Linux系统建议以如图方式定义ioctl命令码
命了码的设备类型字段为一个“幻数”,可以是0-0xff之间的值,内核中的ioctl-number.txt给出了一些推荐的和已经使用了的“幻数”,新设备驱动定义“幻数”的时候要避免与其发生冲突。
命令码的方向字段为2位,该字段表示数据传送的方向,可能的值是_IOC_NONE(无数据传输)、_IOC_READ(读)、_IOC_WRITE(写)和_IOC_READ|_IOC_WRITE(双向)。数据传送的方向是从应用程序的角度来看的
命令码的数据长度字段表示涉及的用户数据的大小,这个成员的长度通常依赖于体系结构,通常是13位或者14位
内核还定义了_IO()、_IOR()、_IOW()和_IOWR()这四个宏来辅助生成命令
内核中预定义了一些io控制命令,如果某设备驱动中包含了与预定义命令一样的命令,这些命令会被当做预定义命令被内核处理而不是被设备驱动处理,预定义命令有如下4种:
FIOCLEX FIONCLEX FIOQSIZE FIONBIO p142
dev = container_of(inode->i_cdev, struct globalmem_dev, cdev);
container_of的作用是通过结构体成员的指针找到对应结构体的指针,这个技巧在Linux内核编程中十分有常用。第1个参数是结构体成员的指针,第2个参数为整个结构体的类型,第3个参数为传入的第1个参数(结构体成员)的类型,返回整个结构体的指针
- Linux设备驱动开发详解--笔记6--字符设备驱动
- linux 设备驱动笔记 - 字符设备驱动
- 《Linux4.0设备驱动开发详解》笔记--第六章:Linux字符设备驱动
- Linux设备驱动开发详解-第6章字符设备驱动(一)-globalmem
- Linux设备驱动开发详解-第6章字符设备驱动(二)-支持2个globalmem
- 《Linux设备驱动开发详解》第2版第6章 - 字符设备驱动
- 《Linux设备驱动开发详解》第2版第6章 - 字符设备驱动
- 《Linux设备驱动开发详解》第2版第6章 - 字符设备驱动
- Linux字符设备驱动详解
- "Linux设备驱动开发详解" 笔记
- linux驱动开发-字符设备
- linux字符设备驱动开发
- Linux驱动开发-字符设备驱动笔记 2
- Linux驱动开发-混杂字符设备驱动模型笔记 4
- 【驱动】linux设备驱动·字符设备驱动开发
- Linux驱动学习笔记;字符设备驱动
- Linux 驱动开发-字符设备驱动
- 字符设备驱动 - linux驱动开发
- 成才须要长期努力
- Linux设备驱动开发详解--笔记5--Linux文件与设备系统
- 线程安全
- SQL 2008 清除日志文件
- vi命令
- Linux设备驱动开发详解--笔记6--字符设备驱动
- Linux设备驱动开发详解--笔记7--并发控制
- 打开图片文件时提示:windows找不到文件..........
- 记录一下
- Linux设备驱动开发详解--笔记8--阻塞与非阻塞I/O
- Linux下select和poll的用法
- Linux设备驱动开发详解--笔记9--异步通知与异步I/O
- C#基础二
- Linux设备驱动开发详解--笔记10--中断与时钟