Dear Hackers,
I've been studying the descriptions of IPC in the L4 Reference Manual
(x86) and the L4 User Manual (MIPS) and would be grateful if someone
could confirm to me that I've correctly understood some points which
are not explicitly stated in those manuals. Here's are my
hypotheses/deductions; please tell me if I'm right or wrong!
(1) Both the "send message descriptor" and the "receive message
descriptor" allow in-line data, strings and fpages to be transmitted
in both directions. In fact, the names are confusing and they might
better be referred to as "client message descriptor" and "server
message descriptor" as the only differences between them relate to the
way the other party is addressed - plus one little optimisation for
the case where a "receive message descriptor" wants to receive just an
fpage.
(2) If you want to transmit some data from thread S to thread T, one
way of doing it is to get thread S to do a SEND operation and thread T
to do a RECEIVE FROM operation, but you could equally well get thread
S to do a RECEIVE FROM and thread T to do a SEND, as the "RECEIVE
FROM" and "SEND" IPC types have nothing to do with "receive" and
"send", really.
(3) When you do a CALL operation, specifying both a "send message
descriptor" and a "receive message descriptor" in the same system
call, in most cases you probably only want to send data with the
former and only receive data with the latter. Since both descriptors
have space for both directions, you can use the same message
descriptor as both send message descriptor and receive message
descriptor, if you want. But you don't have to.
Edmund