- 博客(4)
- 收藏
- 关注
原创 dma_buf_ops 之 attach函数
2、对内存中的数据进行整理,输入参数dmabuf的sg_table做一次dup,然后赋值给临时内存dma_heap_attachment的table。1、分配一块临时内存,这块内存,赋值给输入参数struct dma_buf_attachment *attachment 的私有数据,并回传。3、buffer维护的attachments的list,添加这个新的attachment信息。这样这个attchment对应的table就有了,同样dmabuf也有了。绿色代表输入参数,淡蓝色代表结构体包括的内容。
2024-05-14 23:45:32
421
2
原创 Linux驱动 - class和device
举个例子,一些年龄相仿、需要获取的知识相似的人,聚在一起学习,就构成了一个班级(Class)。这个班级可以有自己的名称(如295),但如果离开构成它的学生(device),它就没有任何存在意义。设备模型中的Class所提供的功能也一样了,例如一些相似的device(学生),需要向用户空间提供相似的接口(课程),如果每个设备的驱动都实现一遍的话,就会导致内核有大量的冗余代码,这就是极大的浪费。所谓设备类,是指提供的用户接口相似的一类设备的集合,常见的设备类的有block、tty、input、usb等等。
2024-04-15 23:52:47
180
1
原创 dmabuf细节疑问记录
解答:从下面的引用文章可以看到ioctl是先调用到vfs,然后再转换到驱动实现的unlocked_ioctl/compat_ioctl。疑问1:ioctl传过来的是int型的fd,为什么到了ioctl的函数这,第一个参数是struct file类型?
2024-04-14 10:56:03
700
原创 Linux dma-buf 梳理记录
dma-heap.c: 提供heap的操作接口,注册heap 和 对外heap的操作接口如ioctl/open,主要是字符设备。dma-buf.c: 提供基础函数,主要是dma内存操作函数,包括mmap,munmap,attach,detach等。一直想学习,好久不看Linux代码,看不太明白了~费了大力气,梳理了一些东西,权当记录。system heap是可以物理不连续的,内存分配是通过 alloc_pages。cma是物理连续的,内存分配是通过 cma_alloc。
2024-04-10 23:41:58
1288
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人