如何从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中返回。

看看int cdev_device_add(struct cdev *cdev, struct device *dev)

您可以在上找到一个工作示例linux-source/drivers/gpio/gpiolib.c

相关内容

  • 没有找到相关文章

最新更新