> > > Hello, > We wanted to establish a communication from kernel module (possibly a > driver) to a user level process. > > Wanted to know whether signals can be used for this purpose OR there any > other (better) methods of communication?? > a bit brute force but you can simply run through the task list and kick the pid of your user-space app (example for 2.4 kernel):
hofrat ---snip--- /* * Copywrite 2002 Der Herr Hofrat * License GPL V2 * Author [EMAIL PROTECTED] */ /* * run through the task list of linux search for the passed pid and send it * a SIGKILL . run as insmod pid=# to send process with pid # a kill signal */ #include <bits/signum.h> /* signal number macros SIGHUP etc. */ #include <linux/kernel.h> /* printk level */ #include <linux/module.h> /* kernel version etc. */ #include <linux/sched.h> /* task_struct */ MODULE_LICENSE("GPL v2"); MODULE_AUTHOR("Der Herr Hofrat"); MODULE_DESCRIPTION("Signal to a user-space app from a kernel module"); int pid=0; MODULE_PARM(pid,"i"); int ksignal(int pid,int signum) { struct task_struct *p; /* run through the task list of linux until we find our pid */ for_each_task(p){ if(p->pid == pid){ printk("sending signal %d for pid %d\n",signum,(int)p->pid); /* don't have a sig_info struct to send along - pass 0 */ return send_sig(signum,p,0); } } /* did not find the requested pid */ return -1; } int init_module(void) { /* send pid a SIGKILL */ ksignal(pid,SIGKILL); return 0; } void cleanup_module(void) { printk("out of here\n"); } - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/