Blame view
include/linux/kmod.h
3.21 KB
1da177e4c
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
#ifndef __LINUX_KMOD_H__ #define __LINUX_KMOD_H__ /* * include/linux/kmod.h * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ |
ac331d158
|
21 |
#include <linux/gfp.h> |
7888e7ff4
|
22 |
#include <linux/stddef.h> |
1da177e4c
|
23 24 |
#include <linux/errno.h> #include <linux/compiler.h> |
a06a4dc3a
|
25 |
#include <linux/workqueue.h> |
17f60a7da
|
26 |
#include <linux/sysctl.h> |
1da177e4c
|
27 28 |
#define KMOD_PATH_LEN 256 |
a1ef5adb4
|
29 |
#ifdef CONFIG_MODULES |
5ed109103
|
30 |
extern char modprobe_path[]; /* for sysctl */ |
1da177e4c
|
31 32 |
/* modprobe exit status on success, -ve on error. Return value * usually useless though. */ |
b9075fa96
|
33 34 |
extern __printf(2, 3) int __request_module(bool wait, const char *name, ...); |
acae05156
|
35 36 37 |
#define request_module(mod...) __request_module(true, mod) #define request_module_nowait(mod...) __request_module(false, mod) #define try_then_request_module(x, mod...) \ |
97c18e2c7
|
38 |
((x) ?: (__request_module(true, mod), (x))) |
1da177e4c
|
39 |
#else |
acae05156
|
40 41 |
static inline int request_module(const char *name, ...) { return -ENOSYS; } static inline int request_module_nowait(const char *name, ...) { return -ENOSYS; } |
df648c9fb
|
42 |
#define try_then_request_module(x, mod...) (x) |
1da177e4c
|
43 |
#endif |
7888e7ff4
|
44 |
|
879669961
|
45 |
struct cred; |
0ab4dc922
|
46 |
struct file; |
a06a4dc3a
|
47 |
|
9d944ef32
|
48 49 50 |
#define UMH_NO_WAIT 0 /* don't wait at all */ #define UMH_WAIT_EXEC 1 /* wait for the exec, but not the process */ #define UMH_WAIT_PROC 2 /* wait for the process to complete */ |
d0bd587a8
|
51 |
#define UMH_KILLABLE 4 /* wait for EXEC/PROC killable */ |
a06a4dc3a
|
52 53 54 |
struct subprocess_info { struct work_struct work; struct completion *complete; |
a06a4dc3a
|
55 56 57 |
char *path; char **argv; char **envp; |
9d944ef32
|
58 |
int wait; |
a06a4dc3a
|
59 |
int retval; |
879669961
|
60 |
int (*init)(struct subprocess_info *info, struct cred *new); |
a06a4dc3a
|
61 62 63 |
void (*cleanup)(struct subprocess_info *info); void *data; }; |
0ab4dc922
|
64 |
|
785042f2e
|
65 |
extern int |
66e5b7e19
|
66 |
call_usermodehelper(char *path, char **argv, char **envp, int wait); |
0ab4dc922
|
67 |
|
938e4b22e
|
68 69 70 71 72 73 74 |
extern struct subprocess_info * call_usermodehelper_setup(char *path, char **argv, char **envp, gfp_t gfp_mask, int (*init)(struct subprocess_info *info, struct cred *new), void (*cleanup)(struct subprocess_info *), void *data); extern int call_usermodehelper_exec(struct subprocess_info *info, int wait); |
17f60a7da
|
75 |
extern struct ctl_table usermodehelper_table[]; |
247bc0374
|
76 77 78 79 80 |
enum umh_disable_depth { UMH_ENABLED = 0, UMH_FREEZING, UMH_DISABLED, }; |
247bc0374
|
81 82 83 84 85 86 87 88 89 90 91 92 |
extern int __usermodehelper_disable(enum umh_disable_depth depth); extern void __usermodehelper_set_disable_depth(enum umh_disable_depth depth); static inline int usermodehelper_disable(void) { return __usermodehelper_disable(UMH_DISABLED); } static inline void usermodehelper_enable(void) { __usermodehelper_set_disable_depth(UMH_ENABLED); } |
fe2e39d87
|
93 |
extern int usermodehelper_read_trylock(void); |
9b78c1da6
|
94 |
extern long usermodehelper_read_lock_wait(long timeout); |
fe2e39d87
|
95 |
extern void usermodehelper_read_unlock(void); |
1bfcf1304
|
96 |
|
1da177e4c
|
97 |
#endif /* __LINUX_KMOD_H__ */ |