From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,f15aeba9975c472f,start X-Google-Attributes: gid103376,public X-Google-ArrivalTime: 2003-09-30 14:19:19 PST Path: archiver1.google.com!news2.google.com!newsfeed.stanford.edu!news-spur1.maxwell.syr.edu!news.maxwell.syr.edu!news-han1.dfn.de!news-ham1.dfn.de!news.uni-hamburg.de!cs.tu-berlin.de!not-for-mail From: Stephan Heinemann Newsgroups: comp.lang.ada Subject: Protected Entry Call Semantics Date: 30 Sep 2003 21:19:15 GMT Organization: Technische Universitaet Berlin, Deutschland Message-ID: NNTP-Posting-Host: fiesta.cs.tu-berlin.de Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit X-Trace: news.cs.tu-berlin.de 1064956755 26025 130.149.17.156 (30 Sep 2003 21:19:15 GMT) X-Complaints-To: news@cs.tu-berlin.de NNTP-Posting-Date: 30 Sep 2003 21:19:15 GMT User-Agent: tin/1.4.6-20020816 ("Aerials") (UNIX) (SunOS/5.9 (sun4u)) Xref: archiver1.google.com comp.lang.ada:37 Date: 2003-09-30T21:19:15+00:00 List-Id: Hi, regarding entry calls on protected objects that cannot be immediately selected, i.e., they are closed, the ARM states the following in C.9.5.3 (13,15): -- When a queued call is selected, it is removed from its entry queue. Selecting a queued call from a particular entry queue is called servicing the entry queue. An entry with queued calls can be serviced under the following circumstances: [...] If after performing, as part of a protected action on the associated protected object, an operation on the object other than a call on a protected function, the entry is checked and found to be open. -- Well, my problem is the "can be serviced" in C.9.5.3 (13). I am using the Ravenscar profile and there may be only one task waiting on a protected entry. Other tasks trigger that waiting task by opening the associated barrier. Lets say there is one such triggering task that accesses the protected object twice during its response (just for example, the same could be done with two tasks, each triggering once). The first access opens the barrier while the second one closes it. Now, some implementations may choose to let the triggering task execute the protected action of the waiting task and position the latter after the entry call for its resumption. For other implementations, the waiting task executes its protected action itself and therefore it depends on the scheduler whether the waiting task may enter the protected object or not , i.e., if a time slice is given to it or not. For the example given, this would be between the two triggering tasks. My problem is to formalise this situation somehow... Do I need to take a particular implementation to be able to do so? If yes, does anybody know how ORK/GNAT handles this situation? The problem is that even both accesses could open the barrier and I do not even know which access really triggered the waiting task, i.e., which values where passed to the waiting task and when. But how can I tell whether a deadline is missed or not if I do not even know to which event the response belonged? Would it be a too hard constraint to allow only at most one triggering task possessing only one triggering access to a particular protected object in this case? Thanks in advance, Stephan