root/include/linux/umh.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. usermodehelper_disable
  2. usermodehelper_enable

   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     0       /* don't wait at all */
  15 #define UMH_WAIT_EXEC   1       /* wait for the exec, but not the process */
  16 #define UMH_WAIT_PROC   2       /* wait for the process to complete */
  17 #define UMH_KILLABLE    4       /* wait for EXEC/PROC killable */
  18 
  19 struct subprocess_info {
  20         struct work_struct work;
  21         struct completion *complete;
  22         const char *path;
  23         char **argv;
  24         char **envp;
  25         struct file *file;
  26         int wait;
  27         int retval;
  28         pid_t pid;
  29         int (*init)(struct subprocess_info *info, struct cred *new);
  30         void (*cleanup)(struct subprocess_info *info);
  31         void *data;
  32 } __randomize_layout;
  33 
  34 extern int
  35 call_usermodehelper(const char *path, char **argv, char **envp, int wait);
  36 
  37 extern struct subprocess_info *
  38 call_usermodehelper_setup(const char *path, char **argv, char **envp,
  39                           gfp_t gfp_mask,
  40                           int (*init)(struct subprocess_info *info, struct cred *new),
  41                           void (*cleanup)(struct subprocess_info *), void *data);
  42 
  43 struct subprocess_info *call_usermodehelper_setup_file(struct file *file,
  44                           int (*init)(struct subprocess_info *info, struct cred *new),
  45                           void (*cleanup)(struct subprocess_info *), void *data);
  46 struct umh_info {
  47         const char *cmdline;
  48         struct file *pipe_to_umh;
  49         struct file *pipe_from_umh;
  50         struct list_head list;
  51         void (*cleanup)(struct umh_info *info);
  52         pid_t pid;
  53 };
  54 int fork_usermode_blob(void *data, size_t len, struct umh_info *info);
  55 
  56 extern int
  57 call_usermodehelper_exec(struct subprocess_info *info, int wait);
  58 
  59 extern struct ctl_table usermodehelper_table[];
  60 
  61 enum umh_disable_depth {
  62         UMH_ENABLED = 0,
  63         UMH_FREEZING,
  64         UMH_DISABLED,
  65 };
  66 
  67 extern int __usermodehelper_disable(enum umh_disable_depth depth);
  68 extern void __usermodehelper_set_disable_depth(enum umh_disable_depth depth);
  69 
  70 static inline int usermodehelper_disable(void)
  71 {
  72         return __usermodehelper_disable(UMH_DISABLED);
  73 }
  74 
  75 static inline void usermodehelper_enable(void)
  76 {
  77         __usermodehelper_set_disable_depth(UMH_ENABLED);
  78 }
  79 
  80 extern int usermodehelper_read_trylock(void);
  81 extern long usermodehelper_read_lock_wait(long timeout);
  82 extern void usermodehelper_read_unlock(void);
  83 
  84 #endif /* __LINUX_UMH_H__ */

/* [<][>][^][v][top][bottom][index][help] */