Fix: btrfs_chunk tracepoints changed in linux 6.8.0-rc1
[lttng-modules.git] / include / wrapper / fdtable.h
index 996199a7b00093a4615362fc17f0fb1ea7241b70..46fc3f33dddef766d7dfea8e71f7a8711b956b74 100644 (file)
@@ -8,41 +8,37 @@
 #ifndef _LTTNG_WRAPPER_FDTABLE_H
 #define _LTTNG_WRAPPER_FDTABLE_H
 
-#include <linux/version.h>
+#include <lttng/kernel-version.h>
 #include <linux/fdtable.h>
+#include <linux/sched.h>
 
-#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,7,0))
-
-int lttng_iterate_fd(struct files_struct *files,
-               unsigned int first,
-               int (*cb)(const void *, struct file *, unsigned int),
-               const void *ctx);
-
-#else
-
-/*
- * iterate_fd() appeared at commit
- * c3c073f808b22dfae15ef8412b6f7b998644139a in the Linux kernel (first
- * released kernel: v3.7).
- */
-#define lttng_iterate_fd       iterate_fd
-
-#endif
-
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
-
-static inline bool lttng_close_on_exec(int fd, const struct fdtable *fdt)
+#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(6,7,0))
+static inline
+struct file *lttng_lookup_fdget_rcu(unsigned int fd)
 {
-       return close_on_exec(fd, fdt);
+       return lookup_fdget_rcu(fd);
 }
 
-#else
-
-static inline bool lttng_close_on_exec(int fd, const struct fdtable *fdt)
+#elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,11,0))
+static inline
+struct file *lttng_lookup_fdget_rcu(unsigned int fd)
 {
-       return FD_ISSET(fd, fdt->close_on_exec);
+       struct file* file = lookup_fd_rcu(fd);
+
+       if (unlikely(!file || !get_file_rcu(file)))
+               return NULL;
+       return file;
 }
+#else
+static inline
+struct file *lttng_lookup_fdget_rcu(unsigned int fd)
+{
+       struct file* file = fcheck(fd);
 
+       if (unlikely(!file || !get_file_rcu(file)))
+               return NULL;
+       return file;
+}
 #endif
 
 #endif /* _LTTNG_WRAPPER_FDTABLE_H */
This page took 0.024666 seconds and 4 git commands to generate.