這種技巧很常見,不論是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)
{
 
}
最後修改日期: 3 6 月, 2022

作者

留言

撰寫回覆或留言

發佈留言必須填寫的電子郵件地址不會公開。