Commit | Line | Data |
---|---|---|
1da177e4 LT |
1 | #ifndef _LINUX_FS_STRUCT_H |
2 | #define _LINUX_FS_STRUCT_H | |
3 | ||
6ac08c39 | 4 | #include <linux/path.h> |
1da177e4 LT |
5 | |
6 | struct fs_struct { | |
498052bb | 7 | int users; |
1da177e4 LT |
8 | rwlock_t lock; |
9 | int umask; | |
498052bb | 10 | int in_exec; |
7f2da1e7 | 11 | struct path root, pwd; |
1da177e4 LT |
12 | }; |
13 | ||
aa362a83 CL |
14 | extern struct kmem_cache *fs_cachep; |
15 | ||
1da177e4 | 16 | extern void exit_fs(struct task_struct *); |
ac748a09 JB |
17 | extern void set_fs_root(struct fs_struct *, struct path *); |
18 | extern void set_fs_pwd(struct fs_struct *, struct path *); | |
1da177e4 | 19 | extern struct fs_struct *copy_fs_struct(struct fs_struct *); |
498052bb | 20 | extern void free_fs_struct(struct fs_struct *); |
3e93cd67 AV |
21 | extern void daemonize_fs_struct(void); |
22 | extern int unshare_fs_struct(void); | |
1da177e4 | 23 | |
f7ad3c6b MS |
24 | static inline void get_fs_root(struct fs_struct *fs, struct path *root) |
25 | { | |
26 | read_lock(&fs->lock); | |
27 | *root = fs->root; | |
28 | path_get(root); | |
29 | read_unlock(&fs->lock); | |
30 | } | |
31 | ||
32 | static inline void get_fs_pwd(struct fs_struct *fs, struct path *pwd) | |
33 | { | |
34 | read_lock(&fs->lock); | |
35 | *pwd = fs->pwd; | |
36 | path_get(pwd); | |
37 | read_unlock(&fs->lock); | |
38 | } | |
39 | ||
40 | static inline void get_fs_root_and_pwd(struct fs_struct *fs, struct path *root, | |
41 | struct path *pwd) | |
42 | { | |
43 | read_lock(&fs->lock); | |
44 | *root = fs->root; | |
45 | path_get(root); | |
46 | *pwd = fs->pwd; | |
47 | path_get(pwd); | |
48 | read_unlock(&fs->lock); | |
49 | } | |
50 | ||
1da177e4 | 51 | #endif /* _LINUX_FS_STRUCT_H */ |