参照元

説明

引数

返り値

参考

実装

static void *vb2_vmalloc_alloc(void *alloc_ctx, unsigned long size,
                               enum dma_data_direction dma_dir, gfp_t gfp_flags)
{
        struct vb2_vmalloc_buf *buf;
        buf = kzalloc(sizeof(*buf), GFP_KERNEL | gfp_flags);
        if (!buf)
                return NULL;
        buf->size = size;
        buf->vaddr = vmalloc_user(buf->size);
        buf->dma_dir = dma_dir;
        buf->handler.refcount = &buf->refcount;
        buf->handler.put = vb2_vmalloc_put;
        buf->handler.arg = buf;
        if (!buf->vaddr) {
                pr_debug("vmalloc of size %ld failed\n", buf->size);
                kfree(buf);
                return NULL;
        }
        atomic_inc(&buf->refcount);
        return buf;
}

コメント


トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2016-02-08 (月) 18:44:33