summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorInki Dae <inki.dae@samsung.com>2013-07-22 12:52:01 +0900
committerChanho Park <chanho61.park@samsung.com>2014-11-18 11:43:40 +0900
commit8dd6e00ce4dc5d17f04c75b81fd3c0cd1eb71367 (patch)
tree4ec6cfaca62cff9b23cf419c573007cca8a5f636 /drivers
parentacb487ebca1926a5db8ca8e35ef9dd87349845cb (diff)
downloadlinux-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.c8
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);