From dbfa8cae66811247e5110e2e17f1c6ae5d1b2bcd Mon Sep 17 00:00:00 2001 From: Alexis211 Date: Wed, 24 Mar 2010 15:40:16 +0100 Subject: IPC not tested but suposedly working. --- doc/objects-requests.txt | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) (limited to 'doc/objects-requests.txt') diff --git a/doc/objects-requests.txt b/doc/objects-requests.txt index 9169552..e53c343 100644 --- a/doc/objects-requests.txt +++ b/doc/objects-requests.txt @@ -1,11 +1,25 @@ +The requests can be of two types : +- Blocking, IE the sender waits for an answer +- Nonblocking, the request is a simple message. + Requests are identified by a 32bit function number, composed as follows : (8 bit) parameter and return type ; (24bit) function number the first 8 bits are : - 2bit answer type ; 2bit parameter a ; 2bit parameter b ; 2bit parameter c + 2bit answer type ; 2bit parameter a type ; 2bit parameter b type ; 2bit parameter c type each two bit couple can be one of the following : - 00 : void - 01 : object descriptor number (will be copied with a new number to reciever) -- 10 : integer -- 11 : long long (replies), or shared memory offset (requests and messages) +- 10 : long +- 11 : long long (replies), or shared memory offset in sender's space (requests and messages) + +When shared memory segments are sent as request parameters from a process to the same process, the pointer +to the memory is kept and sent to the handler function. If handler is in another process, receiver will +have to call request_mapShm specifying a pointer. Shared memory is automatically unmapped when requests +yields an answer, and is kept when the request is nonblocking (message). + +When objects are sent as request parameters, the receiver process will get an immediately usable object +descriptor. The descriptor is closed in blocking requests after the request yields an answer (except if the +request is handled in the same process than the sender, OR if the receiver already had a descriptor to +this object). The descriptor is kept when sent by a nonblocking request (message). -- cgit v1.2.3