
Linux Kernel
smile_5me
整理笔记专用博客,大神勿喷,有哪里写错的请在评论留言。技术交流可添加Q群;邮箱:linux_5me@163.com
展开
-
模块驱动添加字符设备驱动
第一步:typedef struct { struct cdev cdev; dev_t devid; struct class *cls; }mypdata;ssize_t myread(struct file *fl, char *__user buf, size_t len, loff_t *off) { //... return 0; }struc原创 2017-11-23 22:40:11 · 398 阅读 · 0 评论 -
互斥锁(mutex)的使用
互斥锁的使用范围: 互斥锁(Mutex)是在原子操作API的基础上实现的信号量行为。互斥锁不能进行递归锁定或解锁,能用于交互上下文但是不能用于中断上下文,同一时间只能有一个任务持有互斥锁,而且只有这个任务可以对互斥锁进行解锁。当无法获取锁时,线程进入睡眠等待状态。 互斥锁的数据结构:struct mutex {/* 1: unlocked, 0: locked, negative: locked原创 2017-11-23 22:01:57 · 6803 阅读 · 0 评论 -
miscdevice结构体
使用:struct miscdevice mdev = { .minor = MISC_DYNAMIC_MINOR, .name = "mymisc", .fops = &fops, // };通过ta miscdevice:struct miscdevice { int minor; const char *name; const stru原创 2017-11-14 00:02:42 · 1246 阅读 · 0 评论 -
file_operations结构体
使用:struct file_operations fops = { .owner = THIS_MODULE, .read = myread, //当然还有其他的就不一一列举了 };通过ta file_operations: struct file_operations { struct module *owner; loff_t (*llseek) (原创 2017-11-13 23:20:00 · 278 阅读 · 0 评论 -
register_chrdev函数
使用方法:int register_chrdev(unsigned int major,const char* name,struct file_operations *fops);major:主设备号 name:设备名字其中参数major如果等于0,则表示采用系统动态分配的主设备号;不为0,则表示静态注册。 ///////////////////////////////////////////原创 2017-11-13 23:00:58 · 1776 阅读 · 0 评论 -
volatile关键字的作用
在arm里大多的操作数都是需要先存放在r0这些寄存器里, 所以当读取/改变配置寄存器上的值时都需要把相关的配置值先放在r0这些寄存器上。当连续改变配置寄存器上的值时,编译器有可能为了提高效率,只会修改用于暂存修改值的r0寄存器,而不是直接写入配置寄存器. 加上volatile关键字,就可以让编译器确保每次修改配置寄存器上的值时,是直接写入配置寄存器的,而不是用cpu核里的寄存器暂存起来;当读取配置...原创 2017-11-13 14:47:47 · 624 阅读 · 0 评论 -
container_of宏
Container_of在Linux内核中是一个常用的宏,用于从包含在某个结构中的指针获得结构本身的指针,通俗地讲就是通过结构体变量中某个成员的首地址进而获得整个结构体变量的首地址。 接口: container_of(ptr, type, member) ptr:表示结构体中member的地址 type:表示结构体类型 member:表示...原创 2017-11-13 09:26:10 · 183 阅读 · 0 评论 -
unlocked_ioctl与compat_ioctl的区别
最近在调试驱动的时候遇到这个问题,在这里记录一下。 在做测试驱动的时候是这样写法的,但将驱动加载之后驱动进不去myioctl里面 struct file_operations fops = { .owner = THIS_MODULE, .compat_ioctl = myioctl, }; 然后file一下我的用户程序,发现用户程序是32位的,于是找到网上相关信息,修改成...原创 2019-05-14 11:36:11 · 2772 阅读 · 2 评论