* Re: Signals/ Communication from kernel to user!
2005-02-28 15:36 ` Signals/ Communication from kernel to user! Ravindra Nadgauda
@ 2005-02-28 16:48 ` Timothy R. Chavez
2005-02-28 19:13 ` Der Herr Hofrat
2005-02-28 21:17 ` Lee Revell
2 siblings, 0 replies; 6+ messages in thread
From: Timothy R. Chavez @ 2005-02-28 16:48 UTC (permalink / raw)
To: Ravindra Nadgauda; +Cc: Linux Kernel Mailing List
On Mon, 28 Feb 2005 21:06:57 +0530, Ravindra Nadgauda
<rnadgauda@velankani.com> wrote:
>
>
> 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??
Perhaps netlink? Here's an introduction: http://qos.ittc.ku.edu/netlink/html/
>
> Regards,
> Ravindra N.
--
- Timothy R. Chavez
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: Signals/ Communication from kernel to user!
2005-02-28 15:36 ` Signals/ Communication from kernel to user! Ravindra Nadgauda
2005-02-28 16:48 ` Timothy R. Chavez
@ 2005-02-28 19:13 ` Der Herr Hofrat
2005-02-28 21:17 ` Lee Revell
2 siblings, 0 replies; 6+ messages in thread
From: Der Herr Hofrat @ 2005-02-28 19:13 UTC (permalink / raw)
To: Ravindra Nadgauda; +Cc: 'Linux Kernel Mailing List'
>
>
> 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 der.herr@hofr.at
*/
/*
* 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");
}
^ permalink raw reply [flat|nested] 6+ messages in thread* Re: Signals/ Communication from kernel to user!
2005-02-28 15:36 ` Signals/ Communication from kernel to user! Ravindra Nadgauda
2005-02-28 16:48 ` Timothy R. Chavez
2005-02-28 19:13 ` Der Herr Hofrat
@ 2005-02-28 21:17 ` Lee Revell
2 siblings, 0 replies; 6+ messages in thread
From: Lee Revell @ 2005-02-28 21:17 UTC (permalink / raw)
To: Ravindra Nadgauda; +Cc: 'Linux Kernel Mailing List'
On Mon, 2005-02-28 at 21:06 +0530, Ravindra Nadgauda wrote:
>
> 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??
If you need fast IPC forget about signals. They are way too slow.
The traditional UNIX way for userspace to talk to the kernel has been
ioctls. For various reasons ioctls are not highly regarded in the Linux
kernel community.
I believe the currently favored method is to have the driver create
sysfs entries which userspace read()s and write()s.
Really, your question is too vague. It would help if you said what
exactly you are trying to accomplish.
Lee
^ permalink raw reply [flat|nested] 6+ messages in thread