![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
驱动
文章平均质量分 77
aningxiaoxixi
此人很聪明,一看就会,所以不写
展开
-
内核线程(kthread)的简单使用
内核线程的简单使用内核线程是工作在内核空间的,不属于任何一个进程,可以发生睡眠。内核线程的相关代码在:include/linux/kthread.h , kernel/kthread.c。转载 2022-12-29 23:28:42 · 203 阅读 · 0 评论 -
DP协议学习笔记
DP设有专用总线,即AUX Channel,用于source和sink之间的握手。因为source是过程的控制装置,它为sink提出请求。sink与source进行通信的唯一途径是在热插拔检测(HPD)信号中发出一个脉冲。因为AUX Channel是source / sink通信的关键部分,所以理解握手过程的核心在于记录AUX Channel通信。AUX Channel Monitor工具是所有DP协议相关工程师和设计师必须配备的设备。转载 2022-10-11 00:27:53 · 5653 阅读 · 0 评论 -
linux内核 内存管理
1 slab分配器是使用伙伴系统分配出来的实际的物理地址,不过slab分配器在连续的物理页面上,对小内存进行管理。伙伴系统在分配内存的时候是以page为单位的,但是实际上可能需求是以Byte为单位的,所以使用slab来管理小块内存。2 kmalloc 函数用来创建通用的缓存,使用slab 机制。3 Linux 支持单个最大的 slab 缓存大小为32MB。相反则是 free函数。............原创 2022-08-15 23:53:24 · 159 阅读 · 0 评论 -
kernel: kmalloc
可以看出,每一个不同的order,都会对应一个free_area,然后同一个order,同一个free_area下,再有每一个不同的 MIGRATE_TYPES ,都会对应一个free_list,即一个链表,我们可以视为一个内存池,这个链表具体是指向struct page的lru域。接着就是针对order>=1的情况,调用__rmqueue_smallest(),将会在zone中寻找能够满足order要求的,存在的,最小的对应内存块。如果释放超过一个page,则会使用正常的buddy算法。......转载 2022-08-16 19:39:04 · 203 阅读 · 0 评论 -
互斥锁和自旋锁区别
自旋锁和互斥锁的区别注意点:1 互斥锁会在等待期间放弃cpu(因为在尝试获得 $ 的时候就禁止抢占)2 自旋锁 对比 互斥锁少了线程的调度,也是节省了成本。spin_lock 在单cpu 上 禁止抢占 preempt_disable spin_lock_irq 在单cpu 上 关本地中断 local_irq_disable 再 禁止抢占 preempt_disable...原创 2020-12-10 23:03:08 · 748 阅读 · 0 评论 -
alsa的新理解
1 snd_open 开始分析从 snd_minors[ ]中取出新的file_operations2 snd_register_device_for_dev 通过这个函数 构造出 snd_minors[ ] 这个数组3 一个函数通过 snd_register_device_for_dev 构造出了,控制设备4 一个函数通过 snd_register_device_for_dev 构造出了 pcm设备这个函数会 创建 一个输出设备,一个输入设备......原创 2020-12-09 23:55:28 · 227 阅读 · 0 评论 -
i2c设备驱动编写
手把手教你写i2c驱动注意: i2c_driver里面的probe函数需要实现1 字符设备类的注册2 字符设备文件的生成(需要研究一下)原创 2020-12-01 16:23:12 · 233 阅读 · 0 评论 -
字符设备注册标准写法
字符设备注册,创建注意:/proc/devices/ 下跟 /dev/下的区别原创 2020-12-01 15:36:32 · 103 阅读 · 0 评论