OpenCores
URL https://opencores.org/ocsvn/test_project/test_project/trunk

Subversion Repositories test_project

[/] [test_project/] [trunk/] [linux_sd_driver/] [include/] [linux/] [namei.h] - Blame information for rev 62

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 62 marcus.erl
#ifndef _LINUX_NAMEI_H
2
#define _LINUX_NAMEI_H
3
 
4
#include <linux/dcache.h>
5
#include <linux/linkage.h>
6
 
7
struct vfsmount;
8
 
9
struct open_intent {
10
        int     flags;
11
        int     create_mode;
12
        struct file *file;
13
};
14
 
15
enum { MAX_NESTED_LINKS = 8 };
16
 
17
struct nameidata {
18
        struct dentry   *dentry;
19
        struct vfsmount *mnt;
20
        struct qstr     last;
21
        unsigned int    flags;
22
        int             last_type;
23
        unsigned        depth;
24
        char *saved_names[MAX_NESTED_LINKS + 1];
25
 
26
        /* Intent data */
27
        union {
28
                struct open_intent open;
29
        } intent;
30
};
31
 
32
struct path {
33
        struct vfsmount *mnt;
34
        struct dentry *dentry;
35
};
36
 
37
/*
38
 * Type of the last component on LOOKUP_PARENT
39
 */
40
enum {LAST_NORM, LAST_ROOT, LAST_DOT, LAST_DOTDOT, LAST_BIND};
41
 
42
/*
43
 * The bitmask for a lookup event:
44
 *  - follow links at the end
45
 *  - require a directory
46
 *  - ending slashes ok even for nonexistent files
47
 *  - internal "there are more path compnents" flag
48
 *  - locked when lookup done with dcache_lock held
49
 *  - dentry cache is untrusted; force a real lookup
50
 */
51
#define LOOKUP_FOLLOW            1
52
#define LOOKUP_DIRECTORY         2
53
#define LOOKUP_CONTINUE          4
54
#define LOOKUP_PARENT           16
55
#define LOOKUP_NOALT            32
56
#define LOOKUP_REVAL            64
57
/*
58
 * Intent data
59
 */
60
#define LOOKUP_OPEN             (0x0100)
61
#define LOOKUP_CREATE           (0x0200)
62
#define LOOKUP_ACCESS           (0x0400)
63
#define LOOKUP_CHDIR            (0x0800)
64
 
65
extern int FASTCALL(__user_walk(const char __user *, unsigned, struct nameidata *));
66
extern int FASTCALL(__user_walk_fd(int dfd, const char __user *, unsigned, struct nameidata *));
67
#define user_path_walk(name,nd) \
68
        __user_walk_fd(AT_FDCWD, name, LOOKUP_FOLLOW, nd)
69
#define user_path_walk_link(name,nd) \
70
        __user_walk_fd(AT_FDCWD, name, 0, nd)
71
extern int FASTCALL(path_lookup(const char *, unsigned, struct nameidata *));
72
extern int vfs_path_lookup(struct dentry *, struct vfsmount *,
73
                           const char *, unsigned int, struct nameidata *);
74
extern void path_release(struct nameidata *);
75
extern void path_release_on_umount(struct nameidata *);
76
 
77
extern int __user_path_lookup_open(const char __user *, unsigned lookup_flags, struct nameidata *nd, int open_flags);
78
extern int path_lookup_open(int dfd, const char *name, unsigned lookup_flags, struct nameidata *, int open_flags);
79
extern struct file *lookup_instantiate_filp(struct nameidata *nd, struct dentry *dentry,
80
                int (*open)(struct inode *, struct file *));
81
extern struct file *nameidata_to_filp(struct nameidata *nd, int flags);
82
extern void release_open_intent(struct nameidata *);
83
 
84
extern struct dentry *lookup_one_len(const char *, struct dentry *, int);
85
extern struct dentry *lookup_one_noperm(const char *, struct dentry *);
86
 
87
extern int follow_down(struct vfsmount **, struct dentry **);
88
extern int follow_up(struct vfsmount **, struct dentry **);
89
 
90
extern struct dentry *lock_rename(struct dentry *, struct dentry *);
91
extern void unlock_rename(struct dentry *, struct dentry *);
92
 
93
static inline void nd_set_link(struct nameidata *nd, char *path)
94
{
95
        nd->saved_names[nd->depth] = path;
96
}
97
 
98
static inline char *nd_get_link(struct nameidata *nd)
99
{
100
        return nd->saved_names[nd->depth];
101
}
102
 
103
#endif /* _LINUX_NAMEI_H */

powered by: WebSVN 2.1.0

© copyright 1999-2025 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.