From mboxrd@z Thu Jan 1 00:00:00 1970 Path: eternal-september.org!news.eternal-september.org!feeder3.eternal-september.org!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail From: Niklas Holsti Newsgroups: comp.lang.ada Subject: Re: Ichbiah 2022 compiler mode Date: Thu, 12 Sep 2024 18:43:45 +0300 Organization: Tidorum Ltd Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Trace: individual.net KxVpjYd5R1YbDTC4czWHzwA2cY4KsejBLk/DOTI7LniEtVhk+l Cancel-Lock: sha1:qUrnY12YlnC3050+kDIrBKYXnOc= sha256:OaXnwxH94IsWMA96/tsnqQOOhxYe6M2LRZuV0lfZ5n8= User-Agent: Mozilla Thunderbird Content-Language: en-US In-Reply-To: Xref: news.eternal-september.org comp.lang.ada:66346 List-Id: On 2024-09-12 15:36, Kevin Chadwick wrote: > >> If Ada did not have tasks with priorities, most of the Ada >> applications I have worked on in my life would have had to avoid Ada >> tasking and retreat to using some other real-time kernel, with ad-hoc >> mapping of the kernels's threads to Ada procedures. >> > > Counter intuitively it is possible that this is holding Ada back. A lot of > Ada code cannot run without some fairly complex runtime support due to > tasks, protected objects, finalization etc.. Runtimes have to be developed > for each chip instead of each cpu. True, however an Ada RTS can implement many of the tasking features with moderate effort on top of non-Ada real-time kernels such as FreeRTOS, VxWorks, etc., as AdaCore have done for some kernels. At least for the Ravenscar and Jorvik profiles. AIUI, the processor-specific stuff is then mainly in the kernel, not in the RTS. > If you need advanced multi core support then using an OS seems like a more > suitable situation to be in to me. Using a large OS like Linux would not be acceptable for many embedded systems. Fortunately the smaller real-time kernels are adding multi-core support too. The great advantage of using the standard Ada tasking feature, special syntax and all, is that your embedded Ada program can then be executed on a PC or other non-embedded computer, for testing or other purposes, tasking and all. It can also be analysed by static-analysis tools such as AdaControl for race conditions and other tasking-sensitive issues.