Re: Registering for multiple SIGIO within a process

From: Ray Lee
Date: Wed Sep 28 2005 - 17:52:15 EST


On 9/28/05, Bhattacharjee, Satadal <Satadal.Bhattacharjee@xxxxxxxxxxx> wrote:
[...]
> Each shared object has function within it to register with kernel to receive
> SIGIO when an event is generated by the HBA. Driver received the event from
> the HBA and sends SIGIO to the kernel.
[...]
> When driver generates a signal, the shared object which registered last,
> receives the signal. The first registration never receives any signal.
[...]
> So can somebody suggest what is the correct mechanism to register with the
> kernel for receiving multiple signals from a single process?

(Sheesh, what is it with people thinking signals are something to be
used in any design after the 1970's?)

You're out of luck. Either register a sigio handler as a dispatcher in
your loader (shell) process before either of the two shared objects
do, and then somehow echo the signal to the correct object by hand
(assuming you can determine which HBA raised the signal -- and no idea
how'd you do this, actually), or fork() the main shell process into at
least one other one to allow receiving of the signals separately. I'd
suggest fork()ing twice, once per HBA, as that'd probably end up
simpler code-wise.

Ray
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/