give readdir(2)/getdents(2)/etc. uniform exclusion with lseek()
same as read() on regular files has, and for the same reason. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
@@ -44,6 +44,7 @@ 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);
|
||||
extern void __f_unlock_pos(struct file *);
|
||||
|
||||
static inline struct fd __to_fd(unsigned long v)
|
||||
{
|
||||
@@ -60,6 +61,18 @@ static inline struct fd fdget_raw(unsigned int fd)
|
||||
return __to_fd(__fdget_raw(fd));
|
||||
}
|
||||
|
||||
static inline struct fd fdget_pos(int fd)
|
||||
{
|
||||
return __to_fd(__fdget_pos(fd));
|
||||
}
|
||||
|
||||
static inline void fdput_pos(struct fd f)
|
||||
{
|
||||
if (f.flags & FDPUT_POS_UNLOCK)
|
||||
__f_unlock_pos(f.file);
|
||||
fdput(f);
|
||||
}
|
||||
|
||||
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);
|
||||
|
Reference in New Issue
Block a user