Linux 内核 API dma_pool_create

Linux 内核 API dma_pool_create
创建一个用于DMA传输的内存池。它允许在设备和驱动程序之间高效地进行DMA数据传输,而无需进行缓存刷新操作。参数中的各个选项允许定制内存块的大小、对齐要求和边界,以适应不同设备的需求。
返回的DMA分配池可以通过 dma_pool_alloc()函数来分配内存块,这些内存块都具有一致性的DMA映射,可以直接用于设备之间的数据传输
参数说明:

  • @name:用于诊断的池的名称。
  • @dev:将执行DMA传输的设备。
  • @size:池中内存块的大小。
  • @align:内存块的对齐要求,必须是2的幂次。
  • @boundary:返回的内存块不会跨越这个2的幂次边界。

在使用这些池的情况下,可以使用 dma_pool_alloc() 函数分配内存。这些内存块都具有“一致性”DMA映射,可以由设备及其驱动程序访问,而无需使用缓存刷新等。实际分配的内存块大小可能会由于对齐而比请求的大小要大。
如果@boundary非零,那么从dma_pool_alloc()返回的对象将不会跨越这个大小边界。这对于具有对单个DMA传输的寻址限制的设备非常有用,例如不跨越4KB边界。

返回值:具有所请求特性的DMA分配池,如果无法创建则返回%NULL

struct dma_pool *dma_pool_create(const char *name, struct device *dev,
                                 size_t size, size_t align, size_t boundary)
{
   
    struct dma_pool *retval;
    size_t allocation;
    bool empty = false;

    // 对输入参数进行校验
    if <
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值