aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/file.h
diff options
context:
space:
mode:
authorAl Viro <viro@zeniv.linux.org.uk>2014-03-04 14:54:22 -0500
committerAl Viro <viro@zeniv.linux.org.uk>2014-03-10 11:44:42 -0400
commitbd2a31d522344b3ac2fb680bd2366e77a9bd8209 (patch)
treed08be6aea75b2f41bebf516bfc33187d0673bfce /include/linux/file.h
parent00e188ef6a7e7bf2883bcffc30d89e98a0bb76b3 (diff)
get rid of fget_light()
instead of returning the flags by reference, we can just have the low-level primitive return those in lower bits of unsigned long, with struct file * derived from the rest. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'include/linux/file.h')
-rw-r--r--include/linux/file.h21
1 files changed, 11 insertions, 10 deletions
diff --git a/include/linux/file.h b/include/linux/file.h
index f2517fa2d610..4d69123377a2 100644
--- a/include/linux/file.h
+++ b/include/linux/file.h
@@ -40,23 +40,24 @@ static inline void fdput(struct fd fd)
40} 40}
41 41
42extern struct file *fget(unsigned int fd); 42extern struct file *fget(unsigned int fd);
43extern struct file *fget_light(unsigned int fd, int *fput_needed); 43extern struct file *fget_raw(unsigned int fd);
44extern unsigned long __fdget(unsigned int fd);
45extern unsigned long __fdget_raw(unsigned int fd);
46extern unsigned long __fdget_pos(unsigned int fd);
44 47
45static inline struct fd fdget(unsigned int fd) 48static inline struct fd __to_fd(unsigned long v)
46{ 49{
47 int b; 50 return (struct fd){(struct file *)(v & ~3),v & 3};
48 struct file *f = fget_light(fd, &b);
49 return (struct fd){f,b};
50} 51}
51 52
52extern struct file *fget_raw(unsigned int fd); 53static inline struct fd fdget(unsigned int fd)
53extern struct file *fget_raw_light(unsigned int fd, int *fput_needed); 54{
55 return __to_fd(__fdget(fd));
56}
54 57
55static inline struct fd fdget_raw(unsigned int fd) 58static inline struct fd fdget_raw(unsigned int fd)
56{ 59{
57 int b; 60 return __to_fd(__fdget_raw(fd));
58 struct file *f = fget_raw_light(fd, &b);
59 return (struct fd){f,b};
60} 61}
61 62
62extern int f_dupfd(unsigned int from, struct file *file, unsigned flags); 63extern int f_dupfd(unsigned int from, struct file *file, unsigned flags);