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