如何从cdev获取设备
问题描述:
我正在编写一个内核模块,它将分配一些连贯的内存并返回相应的虚拟地址和物理地址。如何从cdev获取设备
我正在注册该模块为cdev
,用dma_alloc_coherent()
分配空间,我想使用dma_common_mmap()
将其映射到mmap。
dma_common_mmap()
需要一个指向struct device
的指针:我怎么能得到它?
答
void *dma_alloc_coherent(struct device *dev, size_t size, dma_addr_t *dma_handle, int flag);
该函数处理缓冲区的分配和映射。前两个参数是设备结构和所需缓冲区的大小。 该函数返回两个地方的DMA映射结果。函数的返回值是缓冲区的内核虚拟地址,驱动程序可以使用该地址。 与此同时,关联的总线地址在dma_handle中返回。
你有没有设法让dma_alloc_coherent和mmap工作。我不能做到这一点。我必须写我自己的读/写功能。 – user1876942