dmabuf: Add the capability to expose DMA-BUF stats in sysfs
[linux-2.6-microblaze.git] / include / linux / dma-buf.h
index efdc56b..342585b 100644 (file)
@@ -295,6 +295,9 @@ struct dma_buf_ops {
  * @poll: for userspace poll support
  * @cb_excl: for userspace poll support
  * @cb_shared: for userspace poll support
+ * @sysfs_entry: for exposing information about this buffer in sysfs.
+ * The attachment_uid member of @sysfs_entry is protected by dma_resv lock
+ * and is incremented on each attach.
  *
  * This represents a shared buffer, created by calling dma_buf_export(). The
  * userspace representation is a normal file descriptor, which can be created by
@@ -330,6 +333,15 @@ struct dma_buf {
 
                __poll_t active;
        } cb_excl, cb_shared;
+#ifdef CONFIG_DMABUF_SYSFS_STATS
+       /* for sysfs stats */
+       struct dma_buf_sysfs_entry {
+               struct kobject kobj;
+               struct dma_buf *dmabuf;
+               unsigned int attachment_uid;
+               struct kset *attach_stats_kset;
+       } *sysfs_entry;
+#endif
 };
 
 /**
@@ -379,6 +391,7 @@ struct dma_buf_attach_ops {
  * @importer_ops: importer operations for this attachment, if provided
  * dma_buf_map/unmap_attachment() must be called with the dma_resv lock held.
  * @importer_priv: importer specific attachment data.
+ * @sysfs_entry: For exposing information about this attachment in sysfs.
  *
  * This structure holds the attachment information between the dma_buf buffer
  * and its user device(s). The list contains one attachment struct per device
@@ -399,6 +412,13 @@ struct dma_buf_attachment {
        const struct dma_buf_attach_ops *importer_ops;
        void *importer_priv;
        void *priv;
+#ifdef CONFIG_DMABUF_SYSFS_STATS
+       /* for sysfs stats */
+       struct dma_buf_attach_sysfs_entry {
+               struct kobject kobj;
+               unsigned int map_counter;
+       } *sysfs_entry;
+#endif
 };
 
 /**