Re: RPCs

From: Andy Valencia <vandys_at_nospam.org>
Date: Mon Dec 04 1995 - 10:25:48 PST

[Eric.Commelin@masi.ibp.fr (Eric COMMELIN) writes:]

>- when a message is sent using M_READ, the buffer the kenel is provided is
> used to receive the data from the server. The client can provide data
> to the server in this buffer, because it will not be copied in the
> server's address space.

No. when M_READ, the buffer never reaches the server. It is used only to
receive data back from the server.

>- if a message is sent without using M_READ, the server can read the data
> contained in the buffer, but it can not write this buffer to send his
> ansewer.

Not quite the whole story. If the server is not registered for DMA, the
buffer is available, but read-only. If the server has enabled DMA, the
buffer is mapped read/write.

>- Can I use a single msg_send to send raw data to a server an receive raw
> data from it? Do you see another way?

Only for DMA servers.

>I would like to implement RPCs with 'in' and 'out' params coded in the
>messages, as does the MIG (Mach Interface Generator) for the Mach
>micro-kernel.

VSTa message operations are either a "read" or a "write". To move bulk data
in both directions you generally use a pair of operations, or operate as a
DMA server. Designing your messaging system for bidirectional
scatter/gather bulks up your message data structure (and the code
implementing the function) for something that is relatively rare.

                                                        Andy
Received on Mon Dec 4 10:25:51 1995

This archive was generated by hypermail 2.1.8 : Thu Sep 22 2005 - 15:12:38 PDT