lkml.org 
[lkml]   [2002]   [Sep]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
Subjectkthread execve question
Date

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/

\
 
 \ /
  Last update: 2005-03-22 13:28    [W:0.034 / U:1.056 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site