LCOV - code coverage report
Current view: top level - include/linux - file.h (source / functions) Hit Total Coverage
Test: combined.info Lines: 14 14 100.0 %
Date: 2022-03-28 15:32:58 Functions: 0 0 -
Branches: 38 88 43.2 %

           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 task_struct;
      20                 :            : struct vfsmount;
      21                 :            : struct dentry;
      22                 :            : struct inode;
      23                 :            : struct path;
      24                 :            : extern struct file *alloc_file_pseudo(struct inode *, struct vfsmount *,
      25                 :            :         const char *, int flags, const struct file_operations *);
      26                 :            : extern struct file *alloc_file_clone(struct file *, int flags,
      27                 :            :         const struct file_operations *);
      28                 :            : 
      29                 :     119776 : static inline void fput_light(struct file *file, int fput_needed)
      30                 :            : {
      31   [ -  -  +  +  :     119776 :         if (fput_needed)
          -  -  +  +  -  
          +  +  +  +  +  
          +  +  +  +  -  
          -  -  -  -  +  
             -  +  -  + ]
      32                 :       7061 :                 fput(file);
      33                 :            : }
      34                 :            : 
      35                 :            : struct fd {
      36                 :            :         struct file *file;
      37                 :            :         unsigned int flags;
      38                 :            : };
      39                 :            : #define FDPUT_FPUT       1
      40                 :            : #define FDPUT_POS_UNLOCK 2
      41                 :            : 
      42                 :    2033682 : static inline void fdput(struct fd fd)
      43                 :            : {
      44   [ +  +  +  +  :    2025091 :         if (fd.flags & FDPUT_FPUT)
          +  +  -  +  -  
          +  -  -  -  -  
          -  -  -  -  -  
                +  -  - ]
      45                 :       5674 :                 fput(fd.file);
      46                 :            : }
      47                 :            : 
      48                 :            : extern struct file *fget(unsigned int fd);
      49                 :            : extern struct file *fget_many(unsigned int fd, unsigned int refs);
      50                 :            : extern struct file *fget_raw(unsigned int fd);
      51                 :            : extern struct file *fget_task(struct task_struct *task, unsigned int fd);
      52                 :            : extern unsigned long __fdget(unsigned int fd);
      53                 :            : extern unsigned long __fdget_raw(unsigned int fd);
      54                 :            : extern unsigned long __fdget_pos(unsigned int fd);
      55                 :            : extern void __f_unlock_pos(struct file *);
      56                 :            : 
      57                 :    2680660 : static inline struct fd __to_fd(unsigned long v)
      58                 :            : {
      59   [ +  +  +  +  :    2680660 :         return (struct fd){(struct file *)(v & ~3),v & 3};
          +  +  +  -  -  
          +  -  -  -  -  
          -  -  -  -  -  
          -  -  -  +  -  
          -  -  +  -  -  
          -  +  -  +  -  
             -  -  +  - ]
      60                 :            : }
      61                 :            : 
      62                 :     422201 : static inline struct fd fdget(unsigned int fd)
      63                 :            : {
      64                 :     422201 :         return __to_fd(__fdget(fd));
      65                 :            : }
      66                 :            : 
      67                 :    1739041 : static inline struct fd fdget_raw(unsigned int fd)
      68                 :            : {
      69                 :    1739041 :         return __to_fd(__fdget_raw(fd));
      70                 :            : }
      71                 :            : 
      72                 :     519418 : static inline struct fd fdget_pos(int fd)
      73                 :            : {
      74                 :     519418 :         return __to_fd(__fdget_pos(fd));
      75                 :            : }
      76                 :            : 
      77                 :            : static inline void fdput_pos(struct fd f)
      78                 :            : {
      79                 :            :         if (f.flags & FDPUT_POS_UNLOCK)
      80                 :            :                 __f_unlock_pos(f.file);
      81                 :            :         fdput(f);
      82                 :            : }
      83                 :            : 
      84                 :            : extern int f_dupfd(unsigned int from, struct file *file, unsigned flags);
      85                 :            : extern int replace_fd(unsigned fd, struct file *file, unsigned flags);
      86                 :            : extern void set_close_on_exec(unsigned int fd, int flag);
      87                 :            : extern bool get_close_on_exec(unsigned int fd);
      88                 :            : extern int __get_unused_fd_flags(unsigned flags, unsigned long nofile);
      89                 :            : extern int get_unused_fd_flags(unsigned flags);
      90                 :            : extern void put_unused_fd(unsigned int fd);
      91                 :            : 
      92                 :            : extern void fd_install(unsigned int fd, struct file *file);
      93                 :            : 
      94                 :            : extern void flush_delayed_fput(void);
      95                 :            : extern void __fput_sync(struct file *);
      96                 :            : 
      97                 :            : #endif /* __LINUX_FILE_H */

Generated by: LCOV version 1.14