From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.5-pre1 (2020-06-20) on ip-172-31-74-118.ec2.internal X-Spam-Level: X-Spam-Status: No, score=-1.9 required=3.0 tests=BAYES_00 autolearn=ham autolearn_force=no version=3.4.5-pre1 Path: eternal-september.org!reader02.eternal-september.org!feeder.eternal-september.org!aioe.org!.POSTED.2uCIJahv+a4XEBqttj5Vkw.user.gioia.aioe.org!not-for-mail From: "Dmitry A. Kazakov" Newsgroups: comp.lang.ada Subject: Re: is there a version of unix written in Ada Date: Thu, 1 Oct 2020 14:51:54 +0200 Organization: Aioe.org NNTP Server Message-ID: References: <00cd3aaa-d518-43a2-b321-58d6fae70aebo@googlegroups.com> <57eb7a65-51ea-4624-b9dc-9c4dda0fee59n@googlegroups.com> <5f70fd3b$0$13541$426a74cc@news.free.fr> <87wo0d3iac.fsf@nightsong.com> <87sgb02l7b.fsf@nightsong.com> <875z7vyy1u.fsf@nightsong.com> <87wo0bkns3.fsf@nightsong.com> NNTP-Posting-Host: 2uCIJahv+a4XEBqttj5Vkw.user.gioia.aioe.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit X-Complaints-To: abuse@aioe.org User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.3.1 X-Notice: Filtered by postfilter v. 0.9.2 Content-Language: en-US Xref: reader02.eternal-september.org comp.lang.ada:60360 List-Id: On 01/10/2020 13:38, Niklas Holsti wrote: > On 2020-10-01 13:21, Dmitry A. Kazakov wrote: >> On 01/10/2020 11:59, J-P. Rosen wrote: >>> Le 01/10/2020 à 11:28, Dmitry A. Kazakov a écrit : >>>> BTW, I still do not know to design an Ada-conform tracing/logging >>>> facility such that you could trace/log from anywhere, protected action >>>> included, and without knowing statically which protected object is >>>> involved. >>>> >>> Did you have a look at package Debug? >>> (https://www.adalog.fr/en/components#Debug) >> >> Thanks >> >>> It features, among others, a trace routine which is guaranteed to not be >>> potentially blocking. >> >> It calls a protected operation on a different protected object, yes, >> this is non-blocking, and I considered same, but is this legal? > > Yes. > > If the program is using ceiling-priority-based protection, the priority > of the calling object must be less or equal to the priority of the > called object. My mental picture was protected procedure calls executed concurrently on different cores of a multi-core processor. Would that sort of implementation be legal? If so, then let there be protected procedure P1 of the object O1 and P2 of O2. If P1 and P2 call to P3 of O3 that would be a problem. Ergo ether wandering or concurrent protected protected calls must be illegal. > 1. A LIFO queue of log entries implemented in a protected object of > highest priority. The object has a procedure "Write_Log_Entry". Yes, that was what I thought and what Debug.adb does. However Debug.adb allocates the body of the FIFO element in the pool. I would rather use my implementation of indefinite FIFO which does not use pools. I don't want allocators/deallocators inside protected stuff. > 2. A task that empties the LIFO queue into a log file. The task calls an > entry of the LIFO protected object to get a log entry from the queue, > but executes the file-writing operations in task context, not in a > protected operation. A simpler approach is to flush the queue by the first call to an unprotected variant of Trace. I believe Debug.adb does just this. -- Regards, Dmitry A. Kazakov http://www.dmitry-kazakov.de