LCOV - code coverage report
Current view: top level - include/linux - umh.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 2 2 100.0 %
Date: 2023-08-24 13:40:31 Functions: 0 0 -

          Line data    Source code
       1             : #ifndef __LINUX_UMH_H__
       2             : #define __LINUX_UMH_H__
       3             : 
       4             : #include <linux/gfp.h>
       5             : #include <linux/stddef.h>
       6             : #include <linux/errno.h>
       7             : #include <linux/compiler.h>
       8             : #include <linux/workqueue.h>
       9             : #include <linux/sysctl.h>
      10             : 
      11             : struct cred;
      12             : struct file;
      13             : 
      14             : #define UMH_NO_WAIT     0x00    /* don't wait at all */
      15             : #define UMH_WAIT_EXEC   0x01    /* wait for the exec, but not the process */
      16             : #define UMH_WAIT_PROC   0x02    /* wait for the process to complete */
      17             : #define UMH_KILLABLE    0x04    /* wait for EXEC/PROC killable */
      18             : #define UMH_FREEZABLE   0x08    /* wait for EXEC/PROC freezable */
      19             : 
      20             : struct subprocess_info {
      21             :         struct work_struct work;
      22             :         struct completion *complete;
      23             :         const char *path;
      24             :         char **argv;
      25             :         char **envp;
      26             :         int wait;
      27             :         int retval;
      28             :         int (*init)(struct subprocess_info *info, struct cred *new);
      29             :         void (*cleanup)(struct subprocess_info *info);
      30             :         void *data;
      31             : } __randomize_layout;
      32             : 
      33             : extern int
      34             : call_usermodehelper(const char *path, char **argv, char **envp, int wait);
      35             : 
      36             : extern struct subprocess_info *
      37             : call_usermodehelper_setup(const char *path, char **argv, char **envp,
      38             :                           gfp_t gfp_mask,
      39             :                           int (*init)(struct subprocess_info *info, struct cred *new),
      40             :                           void (*cleanup)(struct subprocess_info *), void *data);
      41             : 
      42             : extern int
      43             : call_usermodehelper_exec(struct subprocess_info *info, int wait);
      44             : 
      45             : enum umh_disable_depth {
      46             :         UMH_ENABLED = 0,
      47             :         UMH_FREEZING,
      48             :         UMH_DISABLED,
      49             : };
      50             : 
      51             : extern int __usermodehelper_disable(enum umh_disable_depth depth);
      52             : extern void __usermodehelper_set_disable_depth(enum umh_disable_depth depth);
      53             : 
      54             : static inline int usermodehelper_disable(void)
      55             : {
      56           1 :         return __usermodehelper_disable(UMH_DISABLED);
      57             : }
      58             : 
      59             : static inline void usermodehelper_enable(void)
      60             : {
      61           1 :         __usermodehelper_set_disable_depth(UMH_ENABLED);
      62             : }
      63             : 
      64             : extern int usermodehelper_read_trylock(void);
      65             : extern long usermodehelper_read_lock_wait(long timeout);
      66             : extern void usermodehelper_read_unlock(void);
      67             : 
      68             : #endif /* __LINUX_UMH_H__ */

Generated by: LCOV version 1.14