LCOV - code coverage report
Current view: top level - fs/kernfs - kernfs-internal.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 2 2 100.0 %
Date: 2014-04-16 Functions: 0 0 -
Branches: 2 10 20.0 %

           Branch data     Line data    Source code
       1                 :            : /*
       2                 :            :  * fs/kernfs/kernfs-internal.h - kernfs internal header file
       3                 :            :  *
       4                 :            :  * Copyright (c) 2001-3 Patrick Mochel
       5                 :            :  * Copyright (c) 2007 SUSE Linux Products GmbH
       6                 :            :  * Copyright (c) 2007, 2013 Tejun Heo <teheo@suse.de>
       7                 :            :  *
       8                 :            :  * This file is released under the GPLv2.
       9                 :            :  */
      10                 :            : 
      11                 :            : #ifndef __KERNFS_INTERNAL_H
      12                 :            : #define __KERNFS_INTERNAL_H
      13                 :            : 
      14                 :            : #include <linux/lockdep.h>
      15                 :            : #include <linux/fs.h>
      16                 :            : #include <linux/mutex.h>
      17                 :            : #include <linux/xattr.h>
      18                 :            : 
      19                 :            : #include <linux/kernfs.h>
      20                 :            : 
      21                 :            : struct kernfs_iattrs {
      22                 :            :         struct iattr            ia_iattr;
      23                 :            :         void                    *ia_secdata;
      24                 :            :         u32                     ia_secdata_len;
      25                 :            : 
      26                 :            :         struct simple_xattrs    xattrs;
      27                 :            : };
      28                 :            : 
      29                 :            : #define KN_DEACTIVATED_BIAS             INT_MIN
      30                 :            : 
      31                 :            : /* KERNFS_TYPE_MASK and types are defined in include/linux/kernfs.h */
      32                 :            : 
      33                 :            : /**
      34                 :            :  * kernfs_root - find out the kernfs_root a kernfs_node belongs to
      35                 :            :  * @kn: kernfs_node of interest
      36                 :            :  *
      37                 :            :  * Return the kernfs_root @kn belongs to.
      38                 :            :  */
      39                 :            : static inline struct kernfs_root *kernfs_root(struct kernfs_node *kn)
      40                 :            : {
      41                 :            :         /* if parent exists, it's always a dir; otherwise, @sd is a dir */
      42 [ #  # ][ #  # ]:       2769 :         if (kn->parent)
         [ #  # ][ +  - ]
                 [ +  - ]
      43                 :            :                 kn = kn->parent;
      44                 :        982 :         return kn->dir.root;
      45                 :            : }
      46                 :            : 
      47                 :            : /*
      48                 :            :  * Context structure to be used while adding/removing nodes.
      49                 :            :  */
      50                 :            : struct kernfs_addrm_cxt {
      51                 :            :         struct kernfs_node      *removed;
      52                 :            : };
      53                 :            : 
      54                 :            : /*
      55                 :            :  * mount.c
      56                 :            :  */
      57                 :            : struct kernfs_super_info {
      58                 :            :         /*
      59                 :            :          * The root associated with this super_block.  Each super_block is
      60                 :            :          * identified by the root and ns it's associated with.
      61                 :            :          */
      62                 :            :         struct kernfs_root      *root;
      63                 :            : 
      64                 :            :         /*
      65                 :            :          * Each sb is associated with one namespace tag, currently the
      66                 :            :          * network namespace of the task which mounted this kernfs
      67                 :            :          * instance.  If multiple tags become necessary, make the following
      68                 :            :          * an array and compare kernfs_node tag against every entry.
      69                 :            :          */
      70                 :            :         const void              *ns;
      71                 :            : };
      72                 :            : #define kernfs_info(SB) ((struct kernfs_super_info *)(SB->s_fs_info))
      73                 :            : 
      74                 :            : extern struct kmem_cache *kernfs_node_cache;
      75                 :            : 
      76                 :            : /*
      77                 :            :  * inode.c
      78                 :            :  */
      79                 :            : struct inode *kernfs_get_inode(struct super_block *sb, struct kernfs_node *kn);
      80                 :            : void kernfs_evict_inode(struct inode *inode);
      81                 :            : int kernfs_iop_permission(struct inode *inode, int mask);
      82                 :            : int kernfs_iop_setattr(struct dentry *dentry, struct iattr *iattr);
      83                 :            : int kernfs_iop_getattr(struct vfsmount *mnt, struct dentry *dentry,
      84                 :            :                        struct kstat *stat);
      85                 :            : int kernfs_iop_setxattr(struct dentry *dentry, const char *name, const void *value,
      86                 :            :                         size_t size, int flags);
      87                 :            : int kernfs_iop_removexattr(struct dentry *dentry, const char *name);
      88                 :            : ssize_t kernfs_iop_getxattr(struct dentry *dentry, const char *name, void *buf,
      89                 :            :                             size_t size);
      90                 :            : ssize_t kernfs_iop_listxattr(struct dentry *dentry, char *buf, size_t size);
      91                 :            : void kernfs_inode_init(void);
      92                 :            : 
      93                 :            : /*
      94                 :            :  * dir.c
      95                 :            :  */
      96                 :            : extern struct mutex kernfs_mutex;
      97                 :            : extern const struct dentry_operations kernfs_dops;
      98                 :            : extern const struct file_operations kernfs_dir_fops;
      99                 :            : extern const struct inode_operations kernfs_dir_iops;
     100                 :            : 
     101                 :            : struct kernfs_node *kernfs_get_active(struct kernfs_node *kn);
     102                 :            : void kernfs_put_active(struct kernfs_node *kn);
     103                 :            : void kernfs_addrm_start(struct kernfs_addrm_cxt *acxt);
     104                 :            : int kernfs_add_one(struct kernfs_addrm_cxt *acxt, struct kernfs_node *kn);
     105                 :            : void kernfs_addrm_finish(struct kernfs_addrm_cxt *acxt);
     106                 :            : struct kernfs_node *kernfs_new_node(struct kernfs_node *parent,
     107                 :            :                                     const char *name, umode_t mode,
     108                 :            :                                     unsigned flags);
     109                 :            : 
     110                 :            : /*
     111                 :            :  * file.c
     112                 :            :  */
     113                 :            : extern const struct file_operations kernfs_file_fops;
     114                 :            : 
     115                 :            : void kernfs_unmap_bin_file(struct kernfs_node *kn);
     116                 :            : 
     117                 :            : /*
     118                 :            :  * symlink.c
     119                 :            :  */
     120                 :            : extern const struct inode_operations kernfs_symlink_iops;
     121                 :            : 
     122                 :            : #endif  /* __KERNFS_INTERNAL_H */

Generated by: LCOV version 1.9