My theory was that this case (high bits zero) would mean that the signal
is sent to _all_ the processes.
Now, the CLONE_PID stuff is not finalized, as you say, and in order to
make the "send-to-all" semantics efficient, we need to have a separate
pointer structure for "next process with same PID" (kind of like th thread
pointers that we now use for parent/child relationships). Because unless
we have something like that, we'd have to search through _all_ the
processes, even for the normal case when we aren't threading at all.
The other possibility I see is to always think of the "high bits zero"
process as the parent process to all threads (it is), and not special-case
the zero at all. If you send a signal with high bits zero, it goes to the
"parent", and nobody else.
I don't know what the exact POSIX requirements were for pthreads, and
that's probably what has to decide the issue. If POSIX allows the model
where only the "mother thread" gets the signals, use that. If POSIX
pthreads requires that _all_ threads get the signal some way, use the
"zero means all" algorithm and add the extra linked list of processes
stuff.
Anyway, this is one area where the implementation is not something I feel
strongly about, and as such the deciding factor is what the standard says
and what makes it easiest for us. Feel free to send me patches..
Linus
PS. Oh, and while I'm orating here, I might as well tell everybody that
I've been busy writing my masters thesis, and as a result I've moved all
the mailing lists to a low-priority channel. I'll try to concentrate on my
thesis for a while, so I'll be less active than usual. Don't worry, this
is all temporary.