
《linux设备驱动程序第三版》
文章平均质量分 74
本专栏是《linux设备驱动程序第三版》读书笔记
正在起飞的蜗牛
这个作者很懒,什么都没留下…
展开
-
内核中时间相关的知识介绍
内核中时间相关的操作原创 2022-07-03 23:15:45 · 831 阅读 · 0 评论 -
内核的并发和竞态(信号量、completion、自旋锁)
1、并发和并行(1)并行:在同一时刻有多个线程一起运行;(2)并发:在同一时刻只有一个线程在运行,但是在一个时间段内有多个线程运行;总结:并发是宏观的并行。因为CPU运行特别快,虽然CPU不断在切换运行的线程,但是对于人来说,根本感知不到CPU的切换过程,就好像荧光灯在不停的闪烁,但是频率只要够快,人们就感觉不到在闪烁。2、并发产生的原因(1)正在运行的多个用户进程以无法预知的方式访问驱动程序代码(2)外部设备的中断异步的发生,导致正在运行的进程或者驱动代码被中断(3)linux的软件原创 2022-05-03 10:28:12 · 701 阅读 · 0 评论 -
内核调试手段
1、内核调试配置选项内核拥有多项用于调试的功能,但是这些功能会造成额外的输出并导致性能下降,因此,内核通常都是禁止掉调试功能。内核调试相关的配置项主要集中在内核配置菜单"Kernel hacking"中,在使用下面的调试手段时,先确保内核相关的调试配置项已经开启。2、BUG()和BUG_ON()#ifndef HAVE_ARCH_BUG#define BUG() do { \ printk("BUG: failure at %s:%d/%s()!\n", __FILE__, __LINE_原创 2022-05-03 10:17:44 · 1650 阅读 · 2 评论 -
内核空间和应用空间的数据拷贝(copy_to_user & copy_from_user)
1、copy_to_user & copy_from_user函数原型long copy_to_user(void __user *to, const void *from, unsigned long n)long copy_from_user(void *to, const void __user * from, unsigned long n)(1)copy_to_user:从设备拷贝数据到用户空间;(2)copy_from_user:从用户空间拷贝数据到设备上;补充:用__原创 2022-04-26 23:24:03 · 1970 阅读 · 0 评论 -
驱动设计思想(机制、策略、分离、分层)
1、机制和策略(1)机制就是提供什么功能,策略就是怎么使用这些功能。在编写驱动时需要在编程时间和驱动的灵活性之间取一个可接受的折中,驱动提供机制,尽量不提供策略,策略让上层应用去做。(2)机制和策略的分离使得驱动有更好的移植性。同一个硬件可能在不同的环境和不同功能的设备里使用,当机制和策略分离时,同一个硬件就只需要修改策略不需要修改机制。比如硬盘的驱动,会将硬盘初始化并提供读写接口,但是谁有权访问、什么时候读写、每次读写多少数据都是上层去控制。这优点类似RISC架构,只提供基础操作,功能要上层开发人原创 2022-04-18 22:36:19 · 1720 阅读 · 0 评论