[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

sending signals from xdd's



While implementing TCP for MintNet, I came across the following
problem:

TCP provides for delivery of out-of-band or urgent data. When
urgent data arrives on a socket, the process which is the owner
of the socket (this concept of the sockets owner is much like
the one used for terminals), must be signaled that urgent data
has arrived.

Usually Unixes do this by
1) sending this sockets owner a SIGURG signal and
2) waking up any processes seleting for exceptional conditions
   on this socket.

The 2nd is impossible under MiNT, because Fselect() doesn't
currently support selecting for exceptional conditions.

The 1st would require a device driver to be able to send signals
to ANY process, even if the current process' effective UID is
not zero and different from the effective UID of the process that
should be signaled.

Currently the only possibility I see to do the 1st is to fork a
new process (much like minixfs and modm0dev do) that is used to
send signals.

Is there another way (without a different process) to signal
different processes from a device driver?

Perhaps (as Juergen suggested some time ago) post_sig() should be
made available for device drivers through struct kerinfo?

Any ideas?

Kay.