Re: Communication between two kernel modules

From: Jan Hudec (bulb@ucw.cz)
Date: Wed Feb 20 2002 - 04:28:50 EST


> > Hi, how can I call some kind of APIs from kernel mode,
> > such as open, ioctl and close? Because I need to use
> > some services of another kernel module from my kernel
> > module and I have no source code of the module which
> > provides the services. Now I can only access the
> > module in user space using the open, ioctl and close
> > APIs. Can I do the same thing in my kernel module?
> Create a user-space app that will ioctl into your driver and wait for
> requests. When your module needs to call the other module it delivers request
> to the user-space app wich in turn calls the other module and returns results
> via another ioctl call.
>
> Take care not to deadlock.. In user space app use fork() or threads and
> handle module requests async...
>
> Be ready to handle an event when your user-space app unexpectedly dies.

Seems way too complicated to me. You can do everything from kernel.
You probably shouldn't use file handles in kernel, but you can use
file structure. Just open via filp_open, ioctl via ->f_op->ioctl
and close via filp_close (it will fput the structure).

You have to be in process context, either your ioctl handler or kernel
thread would do.

--------------------------------------------------------------------------------
                                                  - Jan Hudec `Bulb' <bulb@ucw.cz>
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Sat Feb 23 2002 - 21:00:23 EST