Linux kernel & device driver programming

Cross-Referenced Linux and Device Driver Code

[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ]
Version: [ 2.6.11.8 ] [ 2.6.25 ] [ 2.6.25.8 ] [ 2.6.31.13 ] Architecture: [ i386 ]
  1 #ifndef __LINUX_KMOD_H__
  2 #define __LINUX_KMOD_H__
  3 
  4 /*
  5  *      include/linux/kmod.h
  6  *
  7  *      This program is free software; you can redistribute it and/or modify
  8  *      it under the terms of the GNU General Public License as published by
  9  *      the Free Software Foundation; either version 2 of the License, or
 10  *      (at your option) any later version.
 11  *
 12  *      This program is distributed in the hope that it will be useful,
 13  *      but WITHOUT ANY WARRANTY; without even the implied warranty of
 14  *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 15  *      GNU General Public License for more details.
 16  *
 17  *      You should have received a copy of the GNU General Public License
 18  *      along with this program; if not, write to the Free Software
 19  *      Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 20  */
 21 
 22 #include <linux/stddef.h>
 23 #include <linux/errno.h>
 24 #include <linux/compiler.h>
 25 
 26 #define KMOD_PATH_LEN 256
 27 
 28 #ifdef CONFIG_KMOD
 29 /* modprobe exit status on success, -ve on error.  Return value
 30  * usually useless though. */
 31 extern int request_module(const char * name, ...) __attribute__ ((format (printf, 1, 2)));
 32 #else
 33 static inline int request_module(const char * name, ...) { return -ENOSYS; }
 34 #endif
 35 
 36 #define try_then_request_module(x, mod...) ((x) ?: (request_module(mod), (x)))
 37 
 38 struct key;
 39 struct file;
 40 struct subprocess_info;
 41 
 42 /* Allocate a subprocess_info structure */
 43 struct subprocess_info *call_usermodehelper_setup(char *path,
 44                                                   char **argv, char **envp);
 45 
 46 /* Set various pieces of state into the subprocess_info structure */
 47 void call_usermodehelper_setkeys(struct subprocess_info *info,
 48                                  struct key *session_keyring);
 49 int call_usermodehelper_stdinpipe(struct subprocess_info *sub_info,
 50                                   struct file **filp);
 51 void call_usermodehelper_setcleanup(struct subprocess_info *info,
 52                                     void (*cleanup)(char **argv, char **envp));
 53 
 54 enum umh_wait {
 55         UMH_NO_WAIT = -1,       /* don't wait at all */
 56         UMH_WAIT_EXEC = 0,      /* wait for the exec, but not the process */
 57         UMH_WAIT_PROC = 1,      /* wait for the process to complete */
 58 };
 59 
 60 /* Actually execute the sub-process */
 61 int call_usermodehelper_exec(struct subprocess_info *info, enum umh_wait wait);
 62 
 63 /* Free the subprocess_info. This is only needed if you're not going
 64    to call call_usermodehelper_exec */
 65 void call_usermodehelper_freeinfo(struct subprocess_info *info);
 66 
 67 static inline int
 68 call_usermodehelper(char *path, char **argv, char **envp, enum umh_wait wait)
 69 {
 70         struct subprocess_info *info;
 71 
 72         info = call_usermodehelper_setup(path, argv, envp);
 73         if (info == NULL)
 74                 return -ENOMEM;
 75         return call_usermodehelper_exec(info, wait);
 76 }
 77 
 78 static inline int
 79 call_usermodehelper_keys(char *path, char **argv, char **envp,
 80                          struct key *session_keyring, enum umh_wait wait)
 81 {
 82         struct subprocess_info *info;
 83 
 84         info = call_usermodehelper_setup(path, argv, envp);
 85         if (info == NULL)
 86                 return -ENOMEM;
 87 
 88         call_usermodehelper_setkeys(info, session_keyring);
 89         return call_usermodehelper_exec(info, wait);
 90 }
 91 
 92 extern void usermodehelper_init(void);
 93 
 94 struct file;
 95 extern int call_usermodehelper_pipe(char *path, char *argv[], char *envp[],
 96                                     struct file **filp);
 97 
 98 #endif /* __LINUX_KMOD_H__ */
 99 
  This page was automatically generated by the LXR engine.