cvs commit: src/sys/kern kern_thr.c syscalls.master src/sys/sys
deischen at freebsd.org
Thu Aug 16 19:33:19 PDT 2007
On Fri, 17 Aug 2007, David Xu wrote:
> Daniel Eischen wrote:
>> I realize what it's for, and I don't agree that it belongs in the
>> tree. There are other forms of interprocess communication, pipes,
>> sockets, even msg queues. I'm sure you can find a few ways to send
>> a message to a process to say "send signal X to thread Y" if you
>> really wanted to. It looks like even Linux makes you use a thread
>> group, not a thread.
>> I don't see where this was discussed on -arch or -current, but
>> maybe I missed that thread.
> I've CCe'd Tijl Coosemans to check if there is another way to implement
> the feature in WINE instead of in kernel. in fact, I have delayed the
> the change for a few days, I was thinking you know the patch, but the
> fact is not now. PS, the feature is not required by libthr. ;-)
Yes, I know it's not needed by libthr :-) I would think you
could use mq_open(), mq_notify() with sigev_notify = SIGEV_SIGNAL,
etc. When the receiving process gets the signal, it reads
the message queue to get the target thread id and the signal
to send to it.
It would be nice if we (FreeBSD) did have thread groups, and
the ability to (soft) bind them to specific CPUs or CPU sets,
ala Solaris processor_bind(), pset_bind(), etc. Once you have
these, then I can perhaps see a thrgrp_signal() or something
similar since the thread group would already be managable
outside the context of a process.
More information about the cvs-src