Re: [PATCH] dmabuf: allow exporter to define customs ioctls

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Am 09.03.2016 um 10:03 schrieb Daniel Vetter:
On Wed, Mar 9, 2016 at 9:54 AM, Benjamin Gaignard
<benjamin.gaignard@xxxxxxxxxx> wrote:
In addition of the already existing operations allow exporter
to use it own custom ioctls.

Signed-off-by: Benjamin Gaignard <benjamin.gaignard@xxxxxxxxxx>
First reaction: No way ever! More seriously, please start by
explaining why you need this.

I was about to complain as well. Device specific IOCTLs should probably better defined as operation on the device which takes the DMA-Buf file descriptor as a parameter.

If you really need this (which I doubt) then please define a range of IOCTL numbers for which it should apply.

Regards,
Christian.

-Daniel

---
  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

_______________________________________________
dri-devel mailing list
dri-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/dri-devel



_______________________________________________
dri-devel mailing list
dri-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/dri-devel




[Index of Archives]     [Linux DRI Users]     [Linux Intel Graphics]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux