Root/
1 | #ifndef _LINUX_NAMEI_H |
2 | #define _LINUX_NAMEI_H |
3 | |
4 | #include <linux/dcache.h> |
5 | #include <linux/linkage.h> |
6 | #include <linux/path.h> |
7 | |
8 | struct vfsmount; |
9 | |
10 | struct open_intent { |
11 | int flags; |
12 | int create_mode; |
13 | struct file *file; |
14 | }; |
15 | |
16 | enum { MAX_NESTED_LINKS = 8 }; |
17 | |
18 | struct nameidata { |
19 | struct path path; |
20 | struct qstr last; |
21 | struct path root; |
22 | unsigned int flags; |
23 | int last_type; |
24 | unsigned depth; |
25 | char *saved_names[MAX_NESTED_LINKS + 1]; |
26 | |
27 | /* Intent data */ |
28 | union { |
29 | struct open_intent open; |
30 | } intent; |
31 | }; |
32 | |
33 | /* |
34 | * Type of the last component on LOOKUP_PARENT |
35 | */ |
36 | enum {LAST_NORM, LAST_ROOT, LAST_DOT, LAST_DOTDOT, LAST_BIND}; |
37 | |
38 | /* |
39 | * The bitmask for a lookup event: |
40 | * - follow links at the end |
41 | * - require a directory |
42 | * - ending slashes ok even for nonexistent files |
43 | * - internal "there are more path components" flag |
44 | * - locked when lookup done with dcache_lock held |
45 | * - dentry cache is untrusted; force a real lookup |
46 | */ |
47 | #define LOOKUP_FOLLOW 1 |
48 | #define LOOKUP_DIRECTORY 2 |
49 | #define LOOKUP_CONTINUE 4 |
50 | #define LOOKUP_PARENT 16 |
51 | #define LOOKUP_REVAL 64 |
52 | /* |
53 | * Intent data |
54 | */ |
55 | #define LOOKUP_OPEN 0x0100 |
56 | #define LOOKUP_CREATE 0x0200 |
57 | #define LOOKUP_EXCL 0x0400 |
58 | #define LOOKUP_RENAME_TARGET 0x0800 |
59 | |
60 | extern int user_path_at(int, const char __user *, unsigned, struct path *); |
61 | |
62 | #define user_path(name, path) user_path_at(AT_FDCWD, name, LOOKUP_FOLLOW, path) |
63 | #define user_lpath(name, path) user_path_at(AT_FDCWD, name, 0, path) |
64 | #define user_path_dir(name, path) \ |
65 | user_path_at(AT_FDCWD, name, LOOKUP_FOLLOW | LOOKUP_DIRECTORY, path) |
66 | |
67 | extern int kern_path(const char *, unsigned, struct path *); |
68 | |
69 | extern int path_lookup(const char *, unsigned, struct nameidata *); |
70 | extern int vfs_path_lookup(struct dentry *, struct vfsmount *, |
71 | const char *, unsigned int, struct nameidata *); |
72 | |
73 | extern struct file *lookup_instantiate_filp(struct nameidata *nd, struct dentry *dentry, |
74 | int (*open)(struct inode *, struct file *)); |
75 | |
76 | extern struct dentry *lookup_one_len(const char *, struct dentry *, int); |
77 | |
78 | extern int follow_down(struct path *); |
79 | extern int follow_up(struct path *); |
80 | |
81 | extern struct dentry *lock_rename(struct dentry *, struct dentry *); |
82 | extern void unlock_rename(struct dentry *, struct dentry *); |
83 | |
84 | static inline void nd_set_link(struct nameidata *nd, char *path) |
85 | { |
86 | nd->saved_names[nd->depth] = path; |
87 | } |
88 | |
89 | static inline char *nd_get_link(struct nameidata *nd) |
90 | { |
91 | return nd->saved_names[nd->depth]; |
92 | } |
93 | |
94 | static inline void nd_terminate_link(void *name, size_t len, size_t maxlen) |
95 | { |
96 | ((char *) name)[min(len, maxlen)] = '\0'; |
97 | } |
98 | |
99 | #endif /* _LINUX_NAMEI_H */ |
100 |
Branches:
ben-wpan
ben-wpan-stefan
javiroman/ks7010
jz-2.6.34
jz-2.6.34-rc5
jz-2.6.34-rc6
jz-2.6.34-rc7
jz-2.6.35
jz-2.6.36
jz-2.6.37
jz-2.6.38
jz-2.6.39
jz-3.0
jz-3.1
jz-3.11
jz-3.12
jz-3.13
jz-3.15
jz-3.16
jz-3.18-dt
jz-3.2
jz-3.3
jz-3.4
jz-3.5
jz-3.6
jz-3.6-rc2-pwm
jz-3.9
jz-3.9-clk
jz-3.9-rc8
jz47xx
jz47xx-2.6.38
master
Tags:
od-2011-09-04
od-2011-09-18
v2.6.34-rc5
v2.6.34-rc6
v2.6.34-rc7
v3.9