From abg@SEI.CMU.EDU Sun Sep 1 10:53:27 1996 Return-Path: Received: from inmet.camb.inmet.com by dsd.camb.inmet.com (4.1/SMI-4.1) id AA23628; Sun, 1 Sep 96 10:53:27 EDT Received: from sw-eng.falls-church.va.us (ns1.sw-eng.falls-church.va.us) by inmet.camb.inmet.com (4.1/SMI-4.1) id AA20120; Sun, 1 Sep 96 10:53:41 EDT Received: from dc.sei.cmu.edu by sw-eng.falls-church.va.us (8.7.1/) id OAA09486; Sun, 1 Sep 1996 14:51:49 GMT Received: from localhost.sei.cmu.edu by dc.sei.cmu.edu (8.6.10/3.00) id KAA16002; Sun, 1 Sep 1996 10:55:17 -0400 Message-Id: <199609011455.KAA16002@dc.sei.cmu.edu> To: ada-comment@sw-eng.falls-church.va.us Subject: Shared variables in shared passive packages Date: Sun, 01 Sep 96 10:55:16 EDT From: Anthony Gargaro !topic Shared Variables in Shared_Passive? !reference RM95-9.10, RM95-E.2.1 !reference 96-5647.a Laurent Guerby 96-8-23 !reference 96-5649.a Anthony Gargaro 96-8-24 !reference 96-5656.a Robert A Duff 96-8-27 !keywords synchronization !reference 96-5650.a Robert Dewar 96-8-25 !reference 96-5658.a Robert Dewar 96-8-28 !reference 96-5662.a Robert A Duff 96-8-29 !reference 96-5666.a Robert Dewar 96-8-30 !from Anthony Gargaro 96-9-01 <> !discussion Robert notes: >The subject of this discussion is whether a program that uses >shared variables in a shared passive partition is erroneous or not, and >it appears that with the current definition of the language, such a program >will in general be erroneous, since you cannot count on the Do_RPC (which is >NOT written by the user in real life!) having the right semantics. This is correct; a partitioned program cannot rely on remote calls to synchronize access to a variable declared in a shared passive package. Annex E requires that shared passive packages be supported in the absence of remote calls (E.2.3(20)). >Note incidentally that your suggestion that all such variables be wrapped in >protected types is completely bogus, since it would mean that share passive >partitions provide no additional functionality not available by other means! >The whole idea of shared passive partitions is to provide shared data which >does NOT have a procedural interface! A shared passive package allows a variable to be accessed from different partitions with same assurance as that provided for a nonpartitioned program. This is the additional functionality provided by Annex E. There is no requirement in Annex E to provide additional assurance. Consequently, it is my understanding that if access to a shared variable is erroneous for a nonpartitioned program, it will be erroneous if the variable is declared in a shared passive package for a partitioned program. It should be recalled that an important goal of Annex E is that a partitioned program must execute with the same semantics as its nonpartitioned counterpart.