dmam_pool_create

前面讲了用dma_pool_create申请的pool最后都要用dma_pool_free 来释放的。kernel能不能自动在driver detach的时候自动调用dma_pool_free 呢?
答案是肯定的。
这样在使用dma_pool的时候就推荐使用dmam_pool_create
struct dma_pool *dmam_pool_create(const char *name, struct device *dev,
                  size_t size, size_t align, size_t allocation)
{
    struct dma_pool **ptr, *pool;

    ptr = devres_alloc(dmam_pool_release, sizeof(*ptr), GFP_KERNEL);
    if (!ptr)
        return NULL;

    pool = *ptr = dma_pool_create(name, dev, size, align, allocation);
    if (pool)
        devres_add(dev, ptr);
    else
        devres_free(ptr);

    return pool;
}
用这个函数申请的pool在driver detach的时候会自动调用dmam_pool_release,这个是由devres_alloc 来决定的。这样在driver detach的时候就会自动调用dmam_pool_release
static void dmam_pool_release(struct device *dev, void *res)
{
    struct dma_pool *pool = *(struct dma_pool **)res;

    dma_pool_destroy(pool);
}
在dmam_pool_release 中就会自动调用dma_pool_destroy


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值