LCOV - code coverage report
Current view: top level - include/linux - file.h (source / functions) Hit Total Coverage
Test: gcov_data_raspi2_real_modules_combined.info Lines: 12 12 100.0 %
Date: 2020-09-30 20:25:40 Functions: 1 1 100.0 %
Branches: 45 56 80.4 %

           Branch data     Line data    Source code
       1                 :            : /* SPDX-License-Identifier: GPL-2.0 */
       2                 :            : /*
       3                 :            :  * Wrapper functions for accessing the file_struct fd array.
       4                 :            :  */
       5                 :            : 
       6                 :            : #ifndef __LINUX_FILE_H
       7                 :            : #define __LINUX_FILE_H
       8                 :            : 
       9                 :            : #include <linux/compiler.h>
      10                 :            : #include <linux/types.h>
      11                 :            : #include <linux/posix_types.h>
      12                 :            : 
      13                 :            : struct file;
      14                 :            : 
      15                 :            : extern void fput(struct file *);
      16                 :            : extern void fput_many(struct file *, unsigned int);
      17                 :            : 
      18                 :            : struct file_operations;
      19                 :            : struct vfsmount;
      20                 :            : struct dentry;
      21                 :            : struct inode;
      22                 :            : struct path;
      23                 :            : extern struct file *alloc_file_pseudo(struct inode *, struct vfsmount *,
      24                 :            :         const char *, int flags, const struct file_operations *);
      25                 :            : extern struct file *alloc_file_clone(struct file *, int flags,
      26                 :            :         const struct file_operations *);
      27                 :            : 
      28                 :            : static inline void fput_light(struct file *file, int fput_needed)
      29                 :            : {
      30   [ #  #  +  +  :    3395797 :         if (fput_needed)
          +  -  +  +  +  
          +  +  +  +  +  
          +  +  +  +  #  
          #  +  +  +  +  
          +  +  +  +  +  
                +  +  + ]
      31                 :    1163371 :                 fput(file);
      32                 :            : }
      33                 :            : 
      34                 :            : struct fd {
      35                 :            :         struct file *file;
      36                 :            :         unsigned int flags;
      37                 :            : };
      38                 :            : #define FDPUT_FPUT       1
      39                 :            : #define FDPUT_POS_UNLOCK 2
      40                 :            : 
      41                 :            : static inline void fdput(struct fd fd)
      42                 :            : {
      43   [ +  +  +  +  :   76930409 :         if (fd.flags & FDPUT_FPUT)
          +  +  +  +  +  
          +  #  #  #  #  
          +  +  +  +  +  
                +  #  # ]
      44                 :    9327907 :                 fput(fd.file);
      45                 :            : }
      46                 :            : 
      47                 :            : extern struct file *fget(unsigned int fd);
      48                 :            : extern struct file *fget_many(unsigned int fd, unsigned int refs);
      49                 :            : extern struct file *fget_raw(unsigned int fd);
      50                 :            : extern unsigned long __fdget(unsigned int fd);
      51                 :            : extern unsigned long __fdget_raw(unsigned int fd);
      52                 :            : extern unsigned long __fdget_pos(unsigned int fd);
      53                 :            : extern void __f_unlock_pos(struct file *);
      54                 :            : 
      55                 :            : static inline struct fd __to_fd(unsigned long v)
      56                 :            : {
      57                 :   80356107 :         return (struct fd){(struct file *)(v & ~3),v & 3};
      58                 :            : }
      59                 :            : 
      60                 :            : static inline struct fd fdget(unsigned int fd)
      61                 :            : {
      62                 :   15408257 :         return __to_fd(__fdget(fd));
      63                 :            : }
      64                 :            : 
      65                 :            : static inline struct fd fdget_raw(unsigned int fd)
      66                 :            : {
      67                 :   25618253 :         return __to_fd(__fdget_raw(fd));
      68                 :            : }
      69                 :            : 
      70                 :            : static inline struct fd fdget_pos(int fd)
      71                 :            : {
      72                 :   39336438 :         return __to_fd(__fdget_pos(fd));
      73                 :            : }
      74                 :            : 
      75                 :   39337743 : static inline void fdput_pos(struct fd f)
      76                 :            : {
      77         [ +  + ]:   39337743 :         if (f.flags & FDPUT_POS_UNLOCK)
      78                 :    3022545 :                 __f_unlock_pos(f.file);
      79                 :            :         fdput(f);
      80                 :   39334402 : }
      81                 :            : 
      82                 :            : extern int f_dupfd(unsigned int from, struct file *file, unsigned flags);
      83                 :            : extern int replace_fd(unsigned fd, struct file *file, unsigned flags);
      84                 :            : extern void set_close_on_exec(unsigned int fd, int flag);
      85                 :            : extern bool get_close_on_exec(unsigned int fd);
      86                 :            : extern int get_unused_fd_flags(unsigned flags);
      87                 :            : extern void put_unused_fd(unsigned int fd);
      88                 :            : 
      89                 :            : extern void fd_install(unsigned int fd, struct file *file);
      90                 :            : 
      91                 :            : extern void flush_delayed_fput(void);
      92                 :            : extern void __fput_sync(struct file *);
      93                 :            : 
      94                 :            : #endif /* __LINUX_FILE_H */

Generated by: LCOV version 1.14