HI !
starting out at kernel/kmod.c as an example I tried to execve a simple command
from a kernel thread using the exec_usermodehelper from kmod (kmod enabled in
the kernel). It all seems to be fine - the printk appears but the command is
not executed...
any hint whats wrong ? any pointers to using kernel threads dosc/examples in
general and how to execute user space apps would be appreciated.
thx !
hofrat
--- broken hello world kthread ---
#define __KERNEL_SYSCALLS__
#include <linux/config.h>
#include <linux/module.h>
#include <linux/sched.h>
#include <linux/unistd.h>
#include <linux/kmod.h>
#include <linux/smp_lock.h>
#include <asm/uaccess.h>
char cmd_path[256] = "/bin/echo";
static int exec_cmd(void * kthread_arg)
{
static char * envp[] = { "HOME=/",
"TERM=linux",
"PATH=/:/bin:/usr/bin:/usr/bin",
NULL };
char *argv[] = { kthread_arg,
">>",
"/tmp/kthread_echo",
NULL };
int ret;
printk("calling usermodehelper for %s \n",cmd_path);
ret = exec_usermodehelper(cmd_path, argv, envp);
printk(KERN_ERR "failed to exec %s, ret = %d\n", cmd_path,ret);
return ret;
}
int init_module(void) {
pid_t pid;
char kthread_arg[]="Hello World";
pid = kernel_thread(exec_cmd, (void*) kthread_arg, 0);
if (pid < 0) {
printk(KERN_ERR "fork failed, errno %d\n", -pid);
return pid;
}
printk("fork ok, pid %d\n",pid);
return 0;
}
void cleanup_module(void) {
printk("module exit\n");
}
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
This archive was generated by hypermail 2b29 : Sat Sep 07 2002 - 22:00:16 EST