2024年5月5日

互斥量mutex的实现-07

摘要: 1 mutex的内核结构体 mutex的定义及操作函数都在Linux内核文件include\linux\mutex.h中定义,如下: (count可以取值1(unlocked),0(locked),-1(locked 且有waiter)) 初始化mutex之后,就可以使用mutex_lock函数或其 阅读全文

posted @ 2024-05-05 16:18 拉风摊主 阅读(1) 评论(0) 推荐(0) 编辑

信号量 semaphore的实现 -06

摘要: 1 semaphore的内核结构体 注意:这是信号量,不是信号。在前面学习异步通知时,驱动程序给应用程序发信号。现在我们讲的信号量是一种同步、互斥机制。 信号量的定义及操作函数都在Linux内核文件include\linux\semaphore.h中定义,如下: 初始化semaphore之后,就可以 阅读全文

posted @ 2024-05-05 16:10 拉风摊主 阅读(1) 评论(0) 推荐(0) 编辑

自旋锁spinlock的实现-05

摘要: 自旋锁,顾名思义:自己在原地打转,等待资源可用,一旦可用就上锁霸占它。 问题来了,假设别人已经上锁了,你原地打转会占住CPU资源了,别的程序怎么运行?它没有CPU怎么解锁? 这个问题,有2个答案: ① 原地打转的是CPU x,以后CPU y会解锁:这涉及多个CPU,适用于SMP系统; ② 对于单CP 阅读全文

posted @ 2024-05-05 15:54 拉风摊主 阅读(5) 评论(0) 推荐(0) 编辑

2024年5月3日

linux锁的介绍和使用 -04

摘要: 本节参考: https://www.kernel.org/doc/html/latest/locking/index.html https://mirrors.edge.kernel.org/pub/linux/kernel/people/rusty/kernel-locking/ 锁的类型 Lin 阅读全文

posted @ 2024-05-03 16:11 拉风摊主 阅读(3) 评论(0) 推荐(0) 编辑

原子操作的实现原理与使用-03

摘要: 所谓“原子操作”就是这个操作不会被打断。Linux有2种原子操作:原子变量、原子位。 原子变量的内核操作函数 原子变量的操作函数在Linux内核文件arch\arm\include\asm\atomic.h中。 原子变量类型如下,实际上就是一个结构体(内核文件include/linux/types. 阅读全文

posted @ 2024-05-03 15:18 拉风摊主 阅读(5) 评论(0) 推荐(0) 编辑

同步与互斥的失败例子-02

摘要: 一句话理解同步与互斥:我等你用完厕所,我再用厕所。 什么叫同步?就是条件不允许,我要等等。 什么是互斥?你我早起都要用厕所,谁先抢到谁先用,中途不被打扰。 同步与互斥经常放在一起讲,是因为它们之的关系很大,“互斥”操作可以使用“同步”来实现。我“等”你用完厕所,我再用厕所。这不就是用“同步”来实现“ 阅读全文

posted @ 2024-05-03 14:23 拉风摊主 阅读(3) 评论(0) 推荐(0) 编辑

2023年9月24日

使用GPIO模拟I2C的驱动程序分析-13

摘要: 参考资料: i2c_spec.pdf Linux文档 Linux-5.4\Documentation\devicetree\bindings\i2c\i2c-gpio.yaml Linux-4.9.88\Documentation\devicetree\bindings\i2c\i2c-gpio.t 阅读全文

posted @ 2023-09-24 20:23 拉风摊主 阅读(83) 评论(0) 推荐(0) 编辑

完善虚拟的I2C\_Adapter驱动并模拟EEPROM-12

摘要: 参考资料: Linux内核文档: Linux-4.9.88\Documentation\devicetree\bindings\i2c\i2c-gpio.txt Linux-5.4\Documentation\devicetree\bindings\i2c\i2c-gpio.yaml Linux内核 阅读全文

posted @ 2023-09-24 20:11 拉风摊主 阅读(32) 评论(0) 推荐(0) 编辑

I2c_Adapter驱动框架讲解与编写-11

摘要: 参考资料: Linux内核文档: Linux-4.9.88\Documentation\devicetree\bindings\i2c\i2c-gpio.txt Linux-5.4\Documentation\devicetree\bindings\i2c\i2c-gpio.yaml Linux内核 阅读全文

posted @ 2023-09-24 16:53 拉风摊主 阅读(14) 评论(0) 推荐(0) 编辑

2023年7月30日

编写设备驱动之i2c_client -10

摘要: 编写设备驱动之i2c_client 参考资料: Linux内核文档: Documentation\i2c\instantiating-devices.rst Documentation\i2c\writing-clients.rst Linux内核驱动程序示例: drivers/eeprom/at2 阅读全文

posted @ 2023-07-30 21:34 拉风摊主 阅读(48) 评论(0) 推荐(0) 编辑

导航