From: Simon Wright <simon@pushface.org>
Subject: Re: Ravenscar and context switching for Cortex-M4
Date: Fri, 13 Feb 2015 19:01:54 +0000
Date: 2015-02-13T19:01:54+00:00 [thread overview]
Message-ID: <lywq3lk53x.fsf@pushface.org> (raw)
In-Reply-To: ck6ssiF9shvU1@mid.individual.net
Niklas Holsti <niklas.holsti@tidorum.invalid> writes:
> AIUI, the Ravenscar rules mean that in a PO with an entry, the entry
> is basically implemented by:
> - a Boolean flag, the barrier for the entry
> - one pointer to the (at most one) task waiting on the closed entry.
>
> It would IMO not be a great complication to allow more than one entry
> per PO; it seems to enough to duplicate the above implementation
> components for each entry. Still needs no queues of tasks, as long as
> Max_Entry_Queue_Length => 1.
I think that would be OK in principle, but GNAT uses - for example - the
type System.Tasking.Protected_Object.Single_Entry.Protection_Entry, so
might get a little confused if asked to support more than one!
As for the barrier, which has to be a plain Boolean in Ravenscar (not
even "not Closed"), that's implemented using
System.Tasking.Protected_Objects.Entry_Body, which is a record
containing two accesses-to-subprogram; 'Barrier' designates a function
returning Boolean, and 'Action' implements the body of the entry. So I
think one could have more complex conditions at negligible cost.
GNAT has Profile (Restricted), see s-rident.ads; the restrictions added
to Restricted to make Ravenscar are (at 4.9.1, haven't checked whether
this has changed in 5)
No_Calendar
No_Implicit_Heap_Allocations
No_Local_Timing_Events
No_Relative_Delay
No_Select_Statements
No_Specific_Termination_Handlers
No_Task_Termination
Simple_Barriers
next prev parent reply other threads:[~2015-02-13 19:01 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-02-12 20:25 Ravenscar and context switching for Cortex-M4 Patrick Noffke
2015-02-12 21:28 ` Niklas Holsti
2015-02-13 12:41 ` G.B.
2015-02-13 16:25 ` Simon Wright
2015-02-13 18:08 ` Niklas Holsti
2015-02-13 19:01 ` Simon Wright [this message]
2015-02-13 23:45 ` Georg Bauhaus
2015-02-16 16:27 ` Patrick Noffke
2015-02-16 16:34 ` Patrick Noffke
2015-02-16 21:28 ` Simon Wright
2015-02-19 20:14 ` Patrick Noffke
2015-02-19 21:03 ` Bob Duff
2015-02-20 13:05 ` Simon Wright
2015-02-19 22:13 ` Patrick Noffke
2015-02-19 22:44 ` Patrick Noffke
2015-02-20 8:31 ` Simon Wright
2015-06-24 15:20 ` Patrick Noffke
2015-08-06 21:05 ` Patrick Noffke
2015-08-06 21:43 ` Patrick Noffke
2015-08-07 20:34 ` Patrick Noffke
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox