Thread (12 messages) 12 messages, 8 authors, 2003-12-14

Re: mpc / linux kernel - user space

From: Dan Kegel <hidden>
Date: 2003-11-27 19:28:39

Juergen Oberhofer wrote:
quoted
quoted
My problem is that the module / the interrupt handling function should
execute a procedure defined in the application program. How can I pass
a pointer (which points to that function) from the appl.program to the
module, such that the handler can execute this function every x
milliseconds? I thought to create a procedure in the module that
accepts
a function pointer as argument. But how can I achieve, that this module
procedure is visible to the application program?
 >>> ...
quoted
That's normally not something you do and I don't know if it's possible.
Application code normally communicates with your driver code using
system
calls (read/write). So either your appl procedure must be part
of your module, or you must signal e.g. a user thread the timer
interrupt happened, so the thread can execute that code.
Thank you! You mean that the application should install a signal handler
and the module sends on every interrupt a signal to the application process.
Although you could do it that way, it might be better to use
a unix domain or a netlink socket, and have the kernel module
send a message which the user program reads via the 'read' system call.

For what it's worth, netlink sockets turn out to be pretty
easy to use.  See http://www.cs.auc.dk/~fleury/netkeeper/
for one example.  Most of the complexity in programs that use
netlink are because they're trying to communicate routing
information.  If you just want to send your own messages,
create the netlink socket with type NETLINK_USERSOCK and
don't worry about the fancy stuff.
- Dan

** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help