Add 'kernel_read' wrapper for kernels < v4.14
[lttng-modules.git] / include / wrapper / fs.h
diff --git a/include/wrapper/fs.h b/include/wrapper/fs.h
new file mode 100644 (file)
index 0000000..f11c19f
--- /dev/null
@@ -0,0 +1,43 @@
+/* SPDX-License-Identifier: (GPL-2.0-only or LGPL-2.1-only)
+ *
+ * wrapper/fs.h
+ *
+ * Copyright (C) 2020 Michael Jeanson <mjeanson@efficios.com>
+ */
+
+#ifndef _LTTNG_WRAPPER_FS_H
+#define _LTTNG_WRAPPER_FS_H
+
+#include <linux/fs.h>
+#include <lttng/kernel-version.h>
+
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,14,0))
+
+static inline
+ssize_t lttng_kernel_read(struct file *file, void *buf, size_t count, loff_t *pos)
+{
+       return kernel_read(file, buf, count, pos);
+}
+
+#else /* LINUX_VERSION_CODE >= KERNEL_VERSION(4,14,0) */
+
+static inline
+ssize_t lttng_kernel_read(struct file *file, void *buf, size_t count, loff_t *pos)
+{
+       ssize_t len;
+
+       len = kernel_read(file, *pos, buf, count);
+
+       /*
+        * Move 'pos' forward since it's passed by value in this
+        * implementation of 'kernel_read'.
+        */
+       if (len > 0)
+               (*pos) += len;
+
+       return len;
+}
+
+#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(4,14,0) */
+
+#endif /* _LTTNG_WRAPPER_FS_H */
This page took 0.039553 seconds and 4 git commands to generate.