How to send a signal from inside the kernel?

Aziz KEZZOU opensource.enthousiat at gmail.com
Thu Mar 17 09:34:07 PST 2005


Hi all,
I would like to send a signal (e.g SIGUSR1) to a user process from
inside the kernel (kld module).
Can any one tell me how to do it ?
I tried the following code inspired from sys/kern/kern_sig.c :
==============================================================
#include <sys/types.h> 
#include <sys/signal.h>

int process_pid;
struct kill_args {
	int	pid;
	int	signum;
};

void send_SIGUSR1() {
  struct kill_args uap;
  uap.pid = process_pid;
  uap.signum = SIGUSR1;  
  kill((struct thread *)0, &uap);
}
===============================================================

but that causes a page fault in kernel mode (ie. Kernel panic :-)

Any help is appreciated, thanks.
Aziz


More information about the freebsd-hackers mailing list