Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
fs_struct.h
Go to the documentation of this file.
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;
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 *, struct path *);
21 extern void set_fs_pwd(struct fs_struct *, struct path *);
22 extern struct fs_struct *copy_fs_struct(struct fs_struct *);
23 extern void free_fs_struct(struct fs_struct *);
24 extern void daemonize_fs_struct(void);
25 extern int unshare_fs_struct(void);
26 
27 static inline void get_fs_root(struct fs_struct *fs, struct path *root)
28 {
29  spin_lock(&fs->lock);
30  *root = fs->root;
31  path_get(root);
32  spin_unlock(&fs->lock);
33 }
34 
35 static inline void get_fs_pwd(struct fs_struct *fs, struct path *pwd)
36 {
37  spin_lock(&fs->lock);
38  *pwd = fs->pwd;
39  path_get(pwd);
40  spin_unlock(&fs->lock);
41 }
42 
43 static inline void get_fs_root_and_pwd(struct fs_struct *fs, struct path *root,
44  struct path *pwd)
45 {
46  spin_lock(&fs->lock);
47  *root = fs->root;
48  path_get(root);
49  *pwd = fs->pwd;
50  path_get(pwd);
51  spin_unlock(&fs->lock);
52 }
53 
54 #endif /* _LINUX_FS_STRUCT_H */