[PATCH] dmabuf: allow exporter to define customs ioctls
Benjamin Gaignard
benjamin.gaignard at linaro.org
Wed Mar 9 08:54:02 UTC 2016
In addition of the already existing operations allow exporter
to use it own custom ioctls.
Signed-off-by: Benjamin Gaignard <benjamin.gaignard at linaro.org>
---
drivers/dma-buf/dma-buf.c | 3 +++
include/linux/dma-buf.h | 5 +++++
2 files changed, 8 insertions(+)
diff --git a/drivers/dma-buf/dma-buf.c b/drivers/dma-buf/dma-buf.c
index 9810d1d..6abd129 100644
--- a/drivers/dma-buf/dma-buf.c
+++ b/drivers/dma-buf/dma-buf.c
@@ -291,6 +291,9 @@ static long dma_buf_ioctl(struct file *file,
return 0;
default:
+ if (dmabuf->ops->ioctl)
+ return dmabuf->ops->ioctl(dmabuf, cmd, arg);
+
return -ENOTTY;
}
}
diff --git a/include/linux/dma-buf.h b/include/linux/dma-buf.h
index 532108e..b6f9837 100644
--- a/include/linux/dma-buf.h
+++ b/include/linux/dma-buf.h
@@ -70,6 +70,9 @@ struct dma_buf_attachment;
* @vmap: [optional] creates a virtual mapping for the buffer into kernel
* address space. Same restrictions as for vmap and friends apply.
* @vunmap: [optional] unmaps a vmap from the buffer
+ * @ioctl: [optional] ioctls supported by the exporter.
+ * It is up to the exporter to do the proper copy_{from/to}_user
+ * calls. Should return -EINVAL in case of error.
*/
struct dma_buf_ops {
int (*attach)(struct dma_buf *, struct device *,
@@ -104,6 +107,8 @@ struct dma_buf_ops {
void *(*vmap)(struct dma_buf *);
void (*vunmap)(struct dma_buf *, void *vaddr);
+
+ int (*ioctl)(struct dma_buf *, unsigned int cmd, unsigned long arg);
};
/**
--
1.9.1
More information about the dri-devel
mailing list