- 追加された行はこの色です。
- 削除された行はこの色です。
*参照元 [#rf113fdc]
#backlinks
*説明 [#qea15f07]
-パス: [[linux-4.4.1/drivers/dma-buf/dma-buf.c]]
-FIXME: これは何?
--説明
**引数 [#o8d160fc]
-struct inode *inode
--
--[[linux-4.4.1/inode]]
-struct file *file
--
--[[linux-4.4.1/file]]
**返り値 [#cb12ae8b]
-int
--
**参考 [#s362638c]
*実装 [#a6884c2e]
static int dma_buf_release(struct inode *inode, struct file *file)
{
struct dma_buf *dmabuf;
-
--[[linux-4.4.1/dma_buf]]
if (!is_dma_buf_file(file))
return -EINVAL;
-
--[[linux-4.4.1/is_dma_buf_file()]]
dmabuf = file->private_data;
BUG_ON(dmabuf->vmapping_counter);
-
--[[linux-4.4.1/BUG_ON()]]
/*
* Any fences that a dma-buf poll can wait on should be signaled
* before releasing dma-buf. This is the responsibility of each
* driver that uses the reservation objects.
*
* If you hit this BUG() it means someone dropped their ref to the
* dma-buf while still having pending operation to the buffer.
*/
BUG_ON(dmabuf->cb_shared.active || dmabuf->cb_excl.active);
-
--dmabuf->cb_shared は 型
--dmabuf->cb_excl は 型
--[[linux-4.4.1/]]
dmabuf->ops->release(dmabuf);
-
--[[linux-4.4.1/]]
mutex_lock(&db_list.lock);
list_del(&dmabuf->list_node);
mutex_unlock(&db_list.lock);
-
--[[linux-4.4.1/mutex_lock()]]
--[[linux-4.4.1/list_del()]]
--[[linux-4.4.1/mutex_unlock()]]
--[[linux-4.4.1/db_list(global)]]
if (dmabuf->resv == (struct reservation_object *)&dmabuf[1])
reservation_object_fini(dmabuf->resv);
-
--[[linux-4.4.1/reservation_object_fini()]]
module_put(dmabuf->owner);
kfree(dmabuf);
-
--[[linux-4.4.1/module_put()]]
--[[linux-4.4.1/kfree()]]
return 0;
}
*コメント [#i2393608]