Branch data Line data Source code
1 : : #ifndef _LINUX_FS_STRUCT_H
2 : : #define _LINUX_FS_STRUCT_H
3 : :
4 : : #include <linux/path.h>
5 : : #include <linux/spinlock.h>
6 : : #include <linux/seqlock.h>
7 : :
8 : : struct fs_struct {
9 : : int users;
10 : : spinlock_t lock;
11 : : seqcount_t seq;
12 : : int umask;
13 : : int in_exec;
14 : : struct path root, pwd;
15 : : };
16 : :
17 : : extern struct kmem_cache *fs_cachep;
18 : :
19 : : extern void exit_fs(struct task_struct *);
20 : : extern void set_fs_root(struct fs_struct *, const struct path *);
21 : : extern void set_fs_pwd(struct fs_struct *, const struct path *);
22 : : extern struct fs_struct *copy_fs_struct(struct fs_struct *);
23 : : extern void free_fs_struct(struct fs_struct *);
24 : : extern int unshare_fs_struct(void);
25 : :
26 : : static inline void get_fs_root(struct fs_struct *fs, struct path *root)
27 : : {
28 : : spin_lock(&fs->lock);
29 : 2325 : *root = fs->root;
30 : 2325 : path_get(root);
31 : : spin_unlock(&fs->lock);
32 : : }
33 : :
34 : : static inline void get_fs_pwd(struct fs_struct *fs, struct path *pwd)
35 : : {
36 : : spin_lock(&fs->lock);
37 : 1606 : *pwd = fs->pwd;
38 : 1606 : path_get(pwd);
39 : : spin_unlock(&fs->lock);
40 : : }
41 : :
42 : : extern bool current_chrooted(void);
43 : :
44 : : #endif /* _LINUX_FS_STRUCT_H */
|