Hi: Today I read the DICE Manual 3.1.0 and it talks about something about indirect IPC and direct IPC. According to my understanding it seems like this: indirect IPC: sender - > message buffer -> receiver direct IPC: sender ->sender buffer -> receive buffer ->receiver.
But I think this understanding is wrong and I don't search something helpful by google, too. If somebody knows please tell me.
In this manaul it says ln L4 version 4 all constructed data types will be transmitted by indirect IPC not direct IPC. I also want to know why.
Thank you. Best wishes. cheng
Hi,
chenggh wrote:
Hi: Today I read the DICE Manual 3.1.0 and it talks about something about indirect IPC and direct IPC. According to my understanding it seems like this: indirect IPC: sender - > message buffer -> receiver direct IPC: sender ->sender buffer -> receive buffer ->receiver.
I assume you refer to the sections on indirect parts IPC. In the L4.V2 interface strings can be transmitted either directly or indirectly. In the direct transmission one string can be located immediately after the message descriptor. See the L4.V2 Ref Man in Section 2.2.4 on Messages. The first message contains a set of dwords (dword0, 1, ...). In addition, L4.V2 allows to copy strings in place. In this case descriptors (string dope) point to the string to be transmitted.
In L4.V4 data can only be transmitted in the UTCBs (up to 64 words) or as indirect strings referred to by String Items.
Best regards
Marcus
Hi Cheng,
chenggh wrote:
Hi: Today I read the DICE Manual 3.1.0 and it talks about something about indirect IPC and direct IPC. According to my understanding it seems like this: indirect IPC: sender - > message buffer -> receiver direct IPC: sender ->sender buffer -> receive buffer ->receiver.
But I think this understanding is wrong and I don't search something helpful by google, too. If somebody knows please tell me.
You should look into the l4 specs, e.g. here:
In short, direct IPC transfers data directly via message registers, indirect IPC, indirectly via pointer / length descriptors in the IPC. All types are synchronous and use no buffers in the kernel. Direct and indirect parts can be mixed in one IPC. In the manuals indirect IPC is called string IPC or string item etc.
Cheers, Martin
l4-hackers@os.inf.tu-dresden.de