diff options
author | André Fabian Silva Delgado <emulatorman@parabola.nu> | 2015-08-05 17:04:01 -0300 |
---|---|---|
committer | André Fabian Silva Delgado <emulatorman@parabola.nu> | 2015-08-05 17:04:01 -0300 |
commit | 57f0f512b273f60d52568b8c6b77e17f5636edc0 (patch) | |
tree | 5e910f0e82173f4ef4f51111366a3f1299037a7b /include/linux/file.h |
Initial import
Diffstat (limited to 'include/linux/file.h')
-rw-r--r-- | include/linux/file.h | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/include/linux/file.h b/include/linux/file.h new file mode 100644 index 000000000..9a290b36b --- /dev/null +++ b/include/linux/file.h @@ -0,0 +1,77 @@ +/* + * Wrapper functions for accessing the file_struct fd array. + */ + +#ifndef __LINUX_FILE_H +#define __LINUX_FILE_H + +#include <linux/compiler.h> +#include <linux/types.h> +#include <linux/posix_types.h> + +struct file; + +extern void fput(struct file *); + +struct file_operations; +struct vfsmount; +struct dentry; +struct path; +extern struct file *alloc_file(struct path *, fmode_t mode, + const struct file_operations *fop); +extern struct file *get_empty_filp(void); + +static inline void fput_light(struct file *file, int fput_needed) +{ + if (fput_needed) + fput(file); +} + +struct fd { + struct file *file; + unsigned int flags; +}; +#define FDPUT_FPUT 1 +#define FDPUT_POS_UNLOCK 2 + +static inline void fdput(struct fd fd) +{ + if (fd.flags & FDPUT_FPUT) + fput(fd.file); +} + +extern struct file *fget(unsigned int fd); +extern struct file *fget_raw(unsigned int fd); +extern unsigned long __fdget(unsigned int fd); +extern unsigned long __fdget_raw(unsigned int fd); +extern unsigned long __fdget_pos(unsigned int fd); + +static inline struct fd __to_fd(unsigned long v) +{ + return (struct fd){(struct file *)(v & ~3),v & 3}; +} + +static inline struct fd fdget(unsigned int fd) +{ + return __to_fd(__fdget(fd)); +} + +static inline struct fd fdget_raw(unsigned int fd) +{ + return __to_fd(__fdget_raw(fd)); +} + +extern int f_dupfd(unsigned int from, struct file *file, unsigned flags); +extern int replace_fd(unsigned fd, struct file *file, unsigned flags); +extern void set_close_on_exec(unsigned int fd, int flag); +extern bool get_close_on_exec(unsigned int fd); +extern void put_filp(struct file *); +extern int get_unused_fd_flags(unsigned flags); +extern void put_unused_fd(unsigned int fd); + +extern void fd_install(unsigned int fd, struct file *file); + +extern void flush_delayed_fput(void); +extern void __fput_sync(struct file *); + +#endif /* __LINUX_FILE_H */ |