i tried to implement an upcall in linux 2.6.28 using the codes given in "
http://people.ee.ethz.ch/~arkeller/linux/kernel_user_space_howto.html#ss7.1";
( i have attached them)
but it just doesnt work....

it does printk the very first msg but at the call instruction it gives an
error

also plz help me know about the environment variables
#include <string.h>

int main(int argc, char *argv[]){
	char command[10] = "beep -r ";
	if(argv[1] != NULL) {	
		strncat(command, argv[1], 1);
	}
	else
		strncat(command, "1", 1);
	system(command);
	return 0;
}
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/proc_fs.h>
#include <asm/uaccess.h>


static int __init usermodehelper_example_init(void)
{
	int ret = 0;
	char *argv[] = {"/home/arkeller/eth/paper/code/callee", "2", NULL };
	char *envp[] = {"HOME=/", "PATH=/sbin:/usr/sbin:/bin:/usr/bin", NULL };

	printk("usermodehelper: init\n");
	/* last parameter: 1 -> wait until execution has finished, 0 go ahead without waiting*/
	/* returns 0 if usermode process was started successfully, errorvalue otherwise*/
	/* no possiblity to get return value of usermode process*/
	ret = call_usermodehelper("/home/arkeller/eth/paper/code/callee", argv, envp, UMH_WAIT_EXEC);
	if (ret != 0)
		printk("error in call to usermodehelper: %i\n", ret);
	else
		printk("everything all right\n");
        return 0;
}

static void __exit usermodehelper_example_exit(void)
{
	printk("usermodehelper: exit\n");
}

module_init(usermodehelper_example_init);
module_exit(usermodehelper_example_exit);
MODULE_LICENSE("GPL");

Reply via email to