kthread execve question

From: Der Herr Hofrat (der.herr@mail.hofr.at)
Date: Mon Sep 02 2002 - 10:03:15 EST


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