LCOV - code coverage report
Current view: top level - lkbce/include/linux - namei.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 4 4 100.0 %
Date: 2017-01-25 Functions: 1 1 100.0 %

          Line data    Source code
       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           2 :         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           1 :         nd->saved_names[nd->depth] = path;
      87           1 : }
      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           1 : 
      99             : #endif /* _LINUX_NAMEI_H */

Generated by: LCOV version 1.10