X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=include%2Fwrapper%2Ffdtable.h;h=46fc3f33dddef766d7dfea8e71f7a8711b956b74;hb=c35f268c4169db55bd65c95472442cd4d00eb53f;hp=559a1dcea073a034ee277e170db62a259c8b94d0;hpb=0aebcd682f2b7dc028e635297c504b39439551da;p=lttng-modules.git diff --git a/include/wrapper/fdtable.h b/include/wrapper/fdtable.h index 559a1dce..46fc3f33 100644 --- a/include/wrapper/fdtable.h +++ b/include/wrapper/fdtable.h @@ -8,55 +8,37 @@ #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)) 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); - -#else - -/* - * iterate_fd() appeared at commit - * c3c073f808b22dfae15ef8412b6f7b998644139a in the Linux kernel (first - * released kernel: v3.7). - */ -#define lttng_iterate_fd iterate_fd + struct file* file = lookup_fd_rcu(fd); -#endif - -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0)) - -static inline bool lttng_close_on_exec(int fd, const struct fdtable *fdt) -{ - return close_on_exec(fd, fdt); + if (unlikely(!file || !get_file_rcu(file))) + return NULL; + return file; } - #else - -static inline bool lttng_close_on_exec(int fd, const struct fdtable *fdt) +static inline +struct file *lttng_lookup_fdget_rcu(unsigned int fd) { - return FD_ISSET(fd, fdt->close_on_exec); -} + struct file* file = fcheck(fd); + if (unlikely(!file || !get_file_rcu(file))) + return NULL; + return file; +} #endif #endif /* _LTTNG_WRAPPER_FDTABLE_H */