summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHauke Mehrtens <hauke@hauke-m.de>2015-02-23 23:17:41 +0100
committerHauke Mehrtens <hauke@hauke-m.de>2015-04-03 19:10:37 +0200
commit1adc4bb782a411b29f4f6ddc9b3ddbe081b7bacb (patch)
tree915ab1659fdcfb505f0ae3fa5083e45e810bfa8e
parent341d9219d9ae7a43ea28b5eb50eac38afc11e082 (diff)
header: adapt new dma_buf_export() signature
In commit 817bd72 the dma_buf_export() function signature changed from getting a long list of parameters to just getting a structure with all the parameters in it. This patch adds a function which translates from the new signature to the old function signature. This function now also handles the different versions of dma_buf_export() used in different kernel versions. Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
-rw-r--r--backport/backport-include/linux/dma-buf.h48
1 files changed, 41 insertions, 7 deletions
diff --git a/backport/backport-include/linux/dma-buf.h b/backport/backport-include/linux/dma-buf.h
index 48c2ebf5..07ac0b4a 100644
--- a/backport/backport-include/linux/dma-buf.h
+++ b/backport/backport-include/linux/dma-buf.h
@@ -8,13 +8,47 @@
#include <linux/dma-attrs.h>
#include <linux/dma-mapping.h>
-#if LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0)
-#define dma_buf_export(priv, ops, size, flags, resv) \
- dma_buf_export(priv, ops, size, flags)
-#elif LINUX_VERSION_CODE < KERNEL_VERSION(3,17,0)
+#if !defined(DEFINE_DMA_BUF_EXPORT_INFO) && LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0)
+/**
+ * helper macro for exporters; zeros and fills in most common values
+ */
+#define DEFINE_DMA_BUF_EXPORT_INFO(a) \
+ struct dma_buf_export_info a = { .exp_name = KBUILD_MODNAME }
+
+struct dma_buf_export_info {
+ const char *exp_name;
+ const struct dma_buf_ops *ops;
+ size_t size;
+ int flags;
+ struct reservation_object *resv;
+ void *priv;
+};
+
+#ifdef dma_buf_export
#undef dma_buf_export
-#define dma_buf_export(priv, ops, size, flags, resv) \
- dma_buf_export_named(priv, ops, size, flags, KBUILD_MODNAME)
-#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0) */
+#endif
+
+static inline
+struct dma_buf *backport_dma_buf_export(const struct dma_buf_export_info *exp_info)
+{
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,4,0)
+ return dma_buf_export(exp_info->priv,
+ (struct dma_buf_ops *)exp_info->ops,
+ exp_info->size, exp_info->flags);
+#elif LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0)
+ return dma_buf_export(exp_info->priv, exp_info->ops,
+ exp_info->size, exp_info->flags);
+#elif LINUX_VERSION_CODE < KERNEL_VERSION(3,17,0)
+ return dma_buf_export_named(exp_info->priv, exp_info->ops,
+ exp_info->size, exp_info->flags,
+ exp_info->exp_name);
+#else
+ return dma_buf_export_named(exp_info->priv, exp_info->ops,
+ exp_info->size, exp_info->flags,
+ exp_info->exp_name, exp_info->resv);
+#endif
+}
+#define dma_buf_export LINUX_BACKPORT(dma_buf_export)
+#endif /* !defined(DEFINE_DMA_BUF_EXPORT_INFO) */
#endif /* _BACKPORT_DMA_BUF_H__ */