Syslink API work - greatly simplify the syslink_msg structure. Reimplement
commit688ee1a878d8af4991897d978ae667db89a8b602
authorMatthew Dillon <dillon@dragonflybsd.org>
Sun, 27 May 2007 20:35:43 +0000 (27 20:35 +0000)
committerMatthew Dillon <dillon@dragonflybsd.org>
Sun, 27 May 2007 20:35:43 +0000 (27 20:35 +0000)
tree5d649d5d3339f695d8ed4f0ea8a0ab244636ee82
parent0a9f60927927b7a4228169d690ea8b1cfe5afd1c
Syslink API work - greatly simplify the syslink_msg structure.  Reimplement
the user API (NOTE: DMA buffers not yet implemented) and start working on
a kernel backend API.

Get rid of the inband DMA buffer fields and physical routing fields.
Replace the 32 bit message id with a 64 bit message id.

The 64 bit msgid allows guarenteed unique ids to be synthesized without
requiring the end points to actually track message ids.

Add a RPC protocol field (sm_proto) and move the command/reply bit and
endian detect bits from sm_msgid to sm_proto.  This allows the exact same
sm_msgid supplied in a command to be used in the reply and frees up bits
in the msgid that were previously going to be used for the protocol.
A separate protocol field also makes it a lot easier for the recipient
to check that the protocol is compatible with its expectations.

Implement a message based userland API and implement a syslink pair feature
so userland can get descriptors for both sides, for testing.  Implement
buffering limits, non-blocking I/O (but not select support yet), check
for duplicate message ids in active commands and match replies to commands.

Implement endian conversion to native endianess for the syslink message
header and any structured message elements.

Begin work on an out-of-band dma buffer API.
sys/kern/kern_syslink.c
sys/sys/syslink.h
sys/sys/syslink_msg.h
sys/sys/syslink_msg2.h