X-Git-Url: http://git.lttng.org/?a=blobdiff_plain;f=include%2Fwrapper%2Ffdtable.h;h=d81b4f0b4c8404107e41f42b0862209ed7827daf;hb=HEAD;hp=8f01a194a7b5131e152b342441b0d258924fa56f;hpb=cf41b81e4a59a36acef130dcaf34defd901eb870;p=lttng-modules.git diff --git a/include/wrapper/fdtable.h b/include/wrapper/fdtable.h index 8f01a194..bd03c08b 100644 --- a/include/wrapper/fdtable.h +++ b/include/wrapper/fdtable.h @@ -8,56 +8,52 @@ #ifndef _LTTNG_WRAPPER_FDTABLE_H #define _LTTNG_WRAPPER_FDTABLE_H -#include +#include #include #include -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,11,0)) +#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(6,7,0)) static inline -struct file *lttng_lookup_fd_rcu(unsigned int fd) +struct file *lttng_lookup_fdget_rcu(unsigned int fd) { - return lookup_fd_rcu(fd); + return lookup_fdget_rcu(fd); } -#else + +#elif ((LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,11,0)) || \ + LTTNG_KERNEL_RANGE(5,10,220, 5,11,0)) static inline -struct file *lttng_lookup_fd_rcu(unsigned int fd) +struct file *lttng_lookup_fdget_rcu(unsigned int fd) { - return fcheck(fd); -} -#endif - -#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); + 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); -/* - * iterate_fd() appeared at commit - * c3c073f808b22dfae15ef8412b6f7b998644139a in the Linux kernel (first - * released kernel: v3.7). - */ -#define lttng_iterate_fd iterate_fd - + if (unlikely(!file || !get_file_rcu(file))) + return NULL; + return file; +} #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,10,0)) +static inline +bool lttng_close_on_exec(unsigned int fd, const struct files_struct *files) { - return close_on_exec(fd, fdt); + return close_on_exec(fd, files); } - #else - -static inline bool lttng_close_on_exec(int fd, const struct fdtable *fdt) +static inline +bool lttng_close_on_exec(unsigned int fd, const struct files_struct *files) { - return FD_ISSET(fd, fdt->close_on_exec); + return close_on_exec(fd, files_fdtable(files)); } - #endif #endif /* _LTTNG_WRAPPER_FDTABLE_H */