comp.lang.ada
 help / color / mirror / Atom feed
From: Simon Wright <simon@pushface.org>
Subject: Re: Reducing the cost of real-time software through a cyclic task abstraction for Ada
Date: Wed, 07 Feb 2018 22:04:29 +0000
Date: 2018-02-07T22:04:29+00:00	[thread overview]
Message-ID: <lyvaf8mp76.fsf@pushface.org> (raw)
In-Reply-To: 9f4aa92f-f3bf-44f8-8316-c66e7eb0f4bc@googlegroups.com

guyclaude.burger@gmail.com writes:

> That paper is huge, no wonder no one (seems to) dares to review
> it. Could you make a summary, or a short exposé on why "loop delay
> until ..." or similar statements are not enough to implement neatly
> the desired semantic ?

Not that big for a thesis, though it does seem a bit repetitive. The pix
seemed a bit OTT, I guess I'm just old-fashioned. And English.

He made criticisms of the -sfp- RTSs which don't apply to the -full-
versions; e.g. no memory allocation, no inheritance (and, by the way,
the -sfp- version *does* provide memory allocation, just not
deallocation). We have to remember that it takes a lot of time to work
to a doctorate, and keeping up with AdaCore improvements wouldn't add a
lot.

The problem with implementing the desired task paradigms with 'delay
until' etc is that although you could do it with a lot of distributed
effort (including use of tasking libraries as in GNATCOLL) it wouldn't
be easy to work out whether the system would meet its deadlines, with a
tool or by hand. And there'd be lots of opportunity for mistakes.

Another point I noticed was that he doesn't like the way an entry
released by an interrupt handler runs in the context of the task that
happened to be running at the time of the interrupt. I can't get too
excited about that, the interrupt had to be handled, and the code in the
entry shouldn't(*) be lengthy.

He says (p.158) "running a protected procedure handler in response to an
interrupt [...] invokes a context switch" which is not true.

My personal view of the AdaCore BB RTS is that it's fiendishly
complicated. I suppose that to meet all the ARM requirements it has to
be. Some of this appears to be for portability. The package call graph
is deeply nested.

I ws interested to see the claim that AdaCore BB RTS won't allow an MCU
to enter a low-power mode. I've not had occasion to try it out, but
FreeRTOS (which my Cortex GNAT RTS[1] runs on) does support this.

(*) not a good position to be in if your system is severely CPU-bound;
but in that case, would you believe the theoretical calculations anyway?

[1] https://github.com/simonjwright/cortex-gnat-rts

  reply	other threads:[~2018-02-07 22:04 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-02-05  0:27 Reducing the cost of real-time software through a cyclic task abstraction for Ada Shark8
2018-02-06 14:13 ` guyclaude.burger
2018-02-07 22:04   ` Simon Wright [this message]
2018-02-08 10:25     ` Mark Lorenzen
2018-02-09 21:03       ` Shark8
2018-02-07 18:25 ` Lucretia
2018-02-07 19:12   ` Shark8
2018-02-07 21:25     ` Lucretia
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox