This is the initial implmentation of the LWKT messaging infrastructure.
authorMatthew Dillon <dillon@dragonflybsd.org>
Sun, 20 Jul 2003 01:37:22 +0000 (01:37 +0000)
committerMatthew Dillon <dillon@dragonflybsd.org>
Sun, 20 Jul 2003 01:37:22 +0000 (01:37 +0000)
commitece04fd07217bf1f9936c194773e9d20fa8ac327
tree0ce281912305927e4b54a7d8d8dc1243f307e1bc
parent13363fc1df673e554b4760c4e38966699d33d63c
This is the initial implmentation of the LWKT messaging infrastructure.
Messages are sent to message ports and typically replied to a message port
embedded in the originating thread's thread structure (td_msgport).
The port functions match up and optimization client sync/asynch requests
verses target synch/asynch responses.

In this initial implementation a port must be owned by a particular thread,
and we use *asynch* IPI messaging to forward queueing and dequeueing operations
to the correct cpu.  Most of the IPI overhead will be absorbed by the fact
that these same IPIs also tend to schedule the threads in question, which on
the correct cpu (which is the one it will be on) costs nothing.

Message ports have in-context dispatch functions for initiating, aborting,
and replying to a message which can be overriden and will queue by default.

This code compiles but is as yet unreferenced, and almost certainly needs more
work.
sys/conf/files
sys/kern/lwkt_msgport.c [new file with mode: 0644]
sys/kern/lwkt_rwlock.c
sys/kern/lwkt_thread.c
sys/sys/msgport.h [new file with mode: 0644]
sys/sys/msgport2.h [new file with mode: 0644]
sys/sys/thread.h