1# BEGIN LICENSE BLOCK 2# Version: CMPL 1.1 3# 4# The contents of this file are subject to the Cisco-style Mozilla Public 5# License Version 1.1 (the "License"); you may not use this file except 6# in compliance with the License. You may obtain a copy of the License 7# at www.eclipse-clp.org/license. 8# 9# Software distributed under the License is distributed on an "AS IS" 10# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See 11# the License for the specific language governing rights and limitations 12# under the License. 13# 14# The Original Code is The ECLiPSe Constraint Logic Programming System. 15# The Initial Developer of the Original Code is Cisco Systems, Inc. 16# Portions created by the Initial Developer are 17# Copyright (C) 2006 Cisco Systems, Inc. All Rights Reserved. 18# 19# Contributor(s): 20# 21# END LICENSE BLOCK 22 23From - Fri Sep 24 12:35:31 1999 24Message-ID: <md5:C1D667E4B36ABEE47FEBB82102E8C7AC> 25Date: Wed, 30 Mar 94 19:05:02 +0200 26From: Kees Schuerman <kees@scorpio> 27To: eclipse 28Subject: Message Passing System Users Only 29Cc: kees 30Content-Length: 1465 31Status: RO 32X-Lines: 60 33 34 35The message passing system consists of two layers: the a-layer (used to 36be structure layer) and the b-layer (used to be byte layer). The a-layer 37sits on top of the b-layer. The main difference between the two layers 38is that the a-layer provides several ports and the b-layer only a single 39port. 40 41Since the design draft presented in ECLiPSe Note 94-01, there have been 42various modifications to the interface. You can get an up to date view 43of the a-layer and b-layer interfaces by looking in the files 44 45 amsg.h 46 bmsg.h 47 48You can find them in ~kees/public/MPS. 49 50Note 1. Relevant primitives for worker management are: 51 52 bport_register() 53 bport_deregister() 54 55Note 2. Relevant primitives for stack copying are: 56 57 bmem_put() 58 bmem_get() 59 bmem_ack() /* upcall */ 60 61 On return of bmem_put() it is safe to start changing the data 62 being put to the destination process. 63 64 On the invocation of bmem_ack() the data transfer of a put/get 65 operation is complete! 66 67 Pitfall: bmemack() may be called before the return of bmem_put 68 or bmem_get ! 69 70Note 3. Relevant primitives for scheduler are: 71 72 amsg_alloc() 73 amsg_send() 74 amsg_receive() 75 amsg_free() 76 77 Sending messages which contain just bytes does not involve 78 any data format conversions ! 79 80Note 4. Initialization 81 82 amsg_init() is currently being redefined. It will 83 be able to get a specified number of ports with 84 specified notification procedures. 85 86 87Hope this helps you to make some progress. 88 89Kees 90 91 92 93 94 95