[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Help
Hi again:
I test it, but this is no t exactly wat I need, because designed like this,
is the daemon who have to access the dev file, blocking (if exist) other
callers processes, and what I realy need is that the kernel wake up the
daemond. I meen, the daemond should wait until a kernel advise.
In the other hand, this daemon will be called by other proccesses, so I need
a blocking mechanism that let me awake the daemon from another userland
proccess.
thanks for your time...
On Monday 14 January 2002 02:59 pm, you wrote:
> On Mon, Jan 14, 2002 at 01:29:21PM -0500, Israel Fdez wrote:
> > I'm developing a file auditor kernel module. The auditing tasks are
> > performed by a userland daemond, and the sys_open and sys_exec system
> > calls are intercepted by the kernel module. I was using IPC V messages to
> > communicate both hte LKm anda the daemon, but I realize that they are not
> > designed to run within the kernel space. Now I'm tring with a /proc file,
> > but, this is my question:
>
> You actually want a real device driver, /proc wasn't designed to be
> abused like that.
>
> > Whow can I make my daemond to wait a "signal" or something else from the
> > kernel module. This "signal" should contain the file path to be audited.
>
> Use a semaphore (or some other kind of locking mechanism).
>
> struct semaphore sem;
>
> /* device "read" function */
> static ssize_t read_func(struct file *filp, char *buf, size_t count,
> loff_t *f_pos)
> {
> if(down_interruptible(&sem))
> return -ERESTARTSYS;
>
> /* copy data to userland */
>
> return number of bytes written to userland;
> }
>
> /* other part of the driver that wants to wakeup userland (interrupt
> /* handler, for example) */
>
> up(&sem);
>
> /* initialisation at module load*/
> sema_init(&sem, 1);
>
>
> Userland daemon reads the device, but blocks on the semaphore. Userland
> gets woken up either when it receives a signal (hence the
> down_interruptible()), or when the semaphore gets signaled with up()
> (probably when data comes available). Again, see "linux device drivers,
> 2nd edition".
>
>
> Erik
--
Kernelnewbies: Help each other learn about the Linux kernel.
Archive: http://mail.nl.linux.org/kernelnewbies/
IRC Channel: irc.openprojects.net / #kernelnewbies
Web Page: http://www.kernelnewbies.org/
- Follow-Ups:
- Re: Help
- From: Erik Mouw <J.A.K.Mouw@its.tudelft.nl>
- References:
- Help
- From: Israel Fdez <israel@seg.inf.cu>
- Re: Help
- From: Erik Mouw <J.A.K.Mouw@its.tudelft.nl>