12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- #ifndef _LINUX_FS_STRUCT_H
- #define _LINUX_FS_STRUCT_H
- #include <linux/path.h>
- #include <linux/spinlock.h>
- #include <linux/seqlock.h>
- struct fs_struct {
- int users;
- spinlock_t lock;
- seqcount_t seq;
- int umask;
- int in_exec;
- struct path root, pwd;
- };
- extern struct kmem_cache *fs_cachep;
- extern void exit_fs(struct task_struct *);
- extern void set_fs_root(struct fs_struct *, struct path *);
- extern void set_fs_pwd(struct fs_struct *, struct path *);
- extern struct fs_struct *copy_fs_struct(struct fs_struct *);
- extern void free_fs_struct(struct fs_struct *);
- extern void daemonize_fs_struct(void);
- extern int unshare_fs_struct(void);
- static inline void get_fs_root(struct fs_struct *fs, struct path *root)
- {
- spin_lock(&fs->lock);
- *root = fs->root;
- path_get(root);
- spin_unlock(&fs->lock);
- }
- static inline void get_fs_pwd(struct fs_struct *fs, struct path *pwd)
- {
- spin_lock(&fs->lock);
- *pwd = fs->pwd;
- path_get(pwd);
- spin_unlock(&fs->lock);
- }
- static inline void get_fs_root_and_pwd(struct fs_struct *fs, struct path *root,
- struct path *pwd)
- {
- spin_lock(&fs->lock);
- *root = fs->root;
- path_get(root);
- *pwd = fs->pwd;
- path_get(pwd);
- spin_unlock(&fs->lock);
- }
- #endif /* _LINUX_FS_STRUCT_H */
|