# BEGIN LICENSE BLOCK # Version: CMPL 1.1 # # The contents of this file are subject to the Cisco-style Mozilla Public # License Version 1.1 (the "License"); you may not use this file except # in compliance with the License. You may obtain a copy of the License # at www.eclipse-clp.org/license. # # Software distributed under the License is distributed on an "AS IS" # basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See # the License for the specific language governing rights and limitations # under the License. # # The Original Code is The ECLiPSe Constraint Logic Programming System. # The Initial Developer of the Original Code is Cisco Systems, Inc. # Portions created by the Initial Developer are # Copyright (C) 2006 Cisco Systems, Inc. All Rights Reserved. # # Contributor(s): # # END LICENSE BLOCK From - Fri Sep 24 12:35:31 1999 Message-ID: Date: Wed, 30 Mar 94 19:05:02 +0200 From: Kees Schuerman To: eclipse Subject: Message Passing System Users Only Cc: kees Content-Length: 1465 Status: RO X-Lines: 60 The message passing system consists of two layers: the a-layer (used to be structure layer) and the b-layer (used to be byte layer). The a-layer sits on top of the b-layer. The main difference between the two layers is that the a-layer provides several ports and the b-layer only a single port. Since the design draft presented in ECLiPSe Note 94-01, there have been various modifications to the interface. You can get an up to date view of the a-layer and b-layer interfaces by looking in the files amsg.h bmsg.h You can find them in ~kees/public/MPS. Note 1. Relevant primitives for worker management are: bport_register() bport_deregister() Note 2. Relevant primitives for stack copying are: bmem_put() bmem_get() bmem_ack() /* upcall */ On return of bmem_put() it is safe to start changing the data being put to the destination process. On the invocation of bmem_ack() the data transfer of a put/get operation is complete! Pitfall: bmemack() may be called before the return of bmem_put or bmem_get ! Note 3. Relevant primitives for scheduler are: amsg_alloc() amsg_send() amsg_receive() amsg_free() Sending messages which contain just bytes does not involve any data format conversions ! Note 4. Initialization amsg_init() is currently being redefined. It will be able to get a specified number of ports with specified notification procedures. Hope this helps you to make some progress. Kees