這種技巧很常見,不論是hotplug會是kernel init,都會發現這個函式的蹤影,當安裝plug&play裝置時,kernel會呼叫hotplug執行device setup script,而從kernel呼叫user space的API,就是user modehelper,簡單的程式我列如下
程式的重點在於envp和argv的設定,envp是環境設定的變數,而argv是user application的執行參數
static int __init testmodule_init(void)
{
int ret;
char *envp[] = {
"HOME=/",
"TERM=linux",
"PATH=/sbin:/usr/sbin:/bin:/usr/bin",
NULL,
};
char *argv[] = {
"/bin/ash",
"-c",
"echo 1 > /mnt/jffs2/aa.conf",
NULL
};
if ((ret =call_usermodehelper(argv[0], argv, envp, /*UMH_WAIT_PROC*/1)) != 0) {
printk(KERN_ERR "user mode helper failed to run\n”);
return 0;
}
static void __exit testmodule_exit(void)
{
}
留言