diff options
author | Inki Dae <inki.dae@samsung.com> | 2013-07-22 12:52:01 +0900 |
---|---|---|
committer | Chanho Park <chanho61.park@samsung.com> | 2014-11-18 11:43:40 +0900 |
commit | 8dd6e00ce4dc5d17f04c75b81fd3c0cd1eb71367 (patch) | |
tree | 4ec6cfaca62cff9b23cf419c573007cca8a5f636 /drivers | |
parent | acb487ebca1926a5db8ca8e35ef9dd87349845cb (diff) | |
download | linux-3.10-8dd6e00ce4dc5d17f04c75b81fd3c0cd1eb71367.tar.gz linux-3.10-8dd6e00ce4dc5d17f04c75b81fd3c0cd1eb71367.tar.bz2 linux-3.10-8dd6e00ce4dc5d17f04c75b81fd3c0cd1eb71367.zip |
dmabuf-sync: add private backend callbacks
This ops has just a free callback to release resource for each
device driver. free callback will be called when device driver's
sync object is freed. So device drivers should implement this callback
so that their own contexts can be cleaned up regarding sync object.
Signed-off-by: Inki Dae <inki.dae@samsung.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/base/dmabuf-sync.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/drivers/base/dmabuf-sync.c b/drivers/base/dmabuf-sync.c index fdf3bce61a0..abfd8e3f009 100644 --- a/drivers/base/dmabuf-sync.c +++ b/drivers/base/dmabuf-sync.c @@ -320,7 +320,9 @@ EXPORT_SYMBOL(is_dmabuf_sync_supported); * The caller can get a new sync object for buffer synchronization * through this function. */ -struct dmabuf_sync *dmabuf_sync_init(void *priv, const char *name) +struct dmabuf_sync *dmabuf_sync_init(const char *name, + struct dmabuf_sync_priv_ops *ops, + void *priv) { struct dmabuf_sync *sync; @@ -330,6 +332,7 @@ struct dmabuf_sync *dmabuf_sync_init(void *priv, const char *name) strncpy(sync->name, name, ARRAY_SIZE(sync->name) - 1); + sync->ops = ops; sync->priv = priv; INIT_LIST_HEAD(&sync->syncs); mutex_init(&sync->lock); @@ -353,6 +356,9 @@ void dmabuf_sync_fini(struct dmabuf_sync *sync) if (WARN_ON(!sync)) return; + if (sync->ops && sync->ops->free) + sync->ops->free(sync->priv); + kfree(sync); } EXPORT_SYMBOL(dmabuf_sync_fini); |