comp.lang.ada
 help / color / mirror / Atom feed
* Q: Profiles
@ 2010-11-05 11:05 Georg Bauhaus
  2010-11-05 11:37 ` Yannick Duchêne (Hibou57)
                   ` (2 more replies)
  0 siblings, 3 replies; 15+ messages in thread
From: Georg Bauhaus @ 2010-11-05 11:05 UTC (permalink / raw)


The Ravenscar profile (and the Restricted profile in GNAT)
assume we want our tasks to run forever.  Programs will be
supported by a lean and efficient run-time.

What if I just want the lean and efficient Ravenscar run-time
but do want my tasks to terminate?



^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: Q: Profiles
  2010-11-05 11:05 Q: Profiles Georg Bauhaus
@ 2010-11-05 11:37 ` Yannick Duchêne (Hibou57)
  2010-11-05 11:50   ` Georg Bauhaus
  2010-11-05 20:14 ` Vinzent Hoefler
  2010-11-09 11:04 ` Matteo Bordin
  2 siblings, 1 reply; 15+ messages in thread
From: Yannick Duchêne (Hibou57) @ 2010-11-05 11:37 UTC (permalink / raw)


Le Fri, 05 Nov 2010 12:05:42 +0100, Georg Bauhaus  
<rm-host.bauhaus@maps.futureapps.de> a écrit:

> The Ravenscar profile (and the Restricted profile in GNAT)
> assume we want our tasks to run forever.  Programs will be
> supported by a lean and efficient run-time.
>
> What if I just want the lean and efficient Ravenscar run-time
> but do want my tasks to terminate?
What is the impact of using a system designed to run for ever for an  
application which is expected to run short or not very long ?

Is there a bad significant consequence ?

Are you talking from a user's point of view or from a  
designer's/provider's point of view ?

-- 
Si les chats miaulent et font autant de vocalises bizarres, c’est pas pour  
les chiens.



^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: Q: Profiles
  2010-11-05 11:37 ` Yannick Duchêne (Hibou57)
@ 2010-11-05 11:50   ` Georg Bauhaus
  0 siblings, 0 replies; 15+ messages in thread
From: Georg Bauhaus @ 2010-11-05 11:50 UTC (permalink / raw)


On 11/5/10 12:37 PM, Yannick Duchêne (Hibou57) wrote:
> Le Fri, 05 Nov 2010 12:05:42 +0100, Georg Bauhaus <rm-host.bauhaus@maps.futureapps.de> a écrit:
>
>> The Ravenscar profile (and the Restricted profile in GNAT)
>> assume we want our tasks to run forever. Programs will be
>> supported by a lean and efficient run-time.
>>
>> What if I just want the lean and efficient Ravenscar run-time
>> but do want my tasks to terminate?
> What is the impact of using a system designed to run for ever for an application which is expected to run short or not very long ?

Part of the system (run-time system?) is that it is lean
and efficient.

Assume programs tat are designed to run for a few days.
Their communication structure is easily expressed
since  the tasks communicate along very few lines.

No fancy tasking things (Ravenscar is on).

Basically, the tasks express independent sequences of
statement whose results is to be coordinated every once
in a while, and when they have finished.



^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: Q: Profiles
  2010-11-05 11:05 Q: Profiles Georg Bauhaus
  2010-11-05 11:37 ` Yannick Duchêne (Hibou57)
@ 2010-11-05 20:14 ` Vinzent Hoefler
  2010-11-05 20:59   ` Georg Bauhaus
  2010-11-09 11:04 ` Matteo Bordin
  2 siblings, 1 reply; 15+ messages in thread
From: Vinzent Hoefler @ 2010-11-05 20:14 UTC (permalink / raw)


On Fri, 05 Nov 2010 12:05:42 +0100, Georg Bauhaus <rm-host.bauhaus@maps.futureapps.de> wrote:

> The Ravenscar profile (and the Restricted profile in GNAT)
> assume we want our tasks to run forever.  Programs will be
> supported by a lean and efficient run-time.
>
> What if I just want the lean and efficient Ravenscar run-time
> but do want my tasks to terminate?

I'd suggest to use the appropriate list of Restriction pragmas then.

See ARM D13.1(3) f.


Vinzent.

-- 
There is no signature.



^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: Q: Profiles
  2010-11-05 20:14 ` Vinzent Hoefler
@ 2010-11-05 20:59   ` Georg Bauhaus
  2010-11-05 21:28     ` Vinzent Hoefler
  0 siblings, 1 reply; 15+ messages in thread
From: Georg Bauhaus @ 2010-11-05 20:59 UTC (permalink / raw)


On 11/5/10 9:14 PM, Vinzent Hoefler wrote:
> On Fri, 05 Nov 2010 12:05:42 +0100, Georg Bauhaus <rm-host.bauhaus@maps.futureapps.de> wrote:
>
>> The Ravenscar profile (and the Restricted profile in GNAT)
>> assume we want our tasks to run forever. Programs will be
>> supported by a lean and efficient run-time.
>>
>> What if I just want the lean and efficient Ravenscar run-time
>> but do want my tasks to terminate?
>
> I'd suggest to use the appropriate list of Restriction pragmas then.

I think I need to place a pragma Profile (Ravenscar)
or (Restricted) (in the case of GNAT) to make the compiler pick
the desired run-time.  But then tasks won't terminate.



^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: Q: Profiles
  2010-11-05 20:59   ` Georg Bauhaus
@ 2010-11-05 21:28     ` Vinzent Hoefler
  2010-11-05 23:11       ` Ed Falis
  0 siblings, 1 reply; 15+ messages in thread
From: Vinzent Hoefler @ 2010-11-05 21:28 UTC (permalink / raw)


On Fri, 05 Nov 2010 21:59:00 +0100, Georg Bauhaus <rm-host.bauhaus@maps.futureapps.de> wrote:

> On 11/5/10 9:14 PM, Vinzent Hoefler wrote:
>> On Fri, 05 Nov 2010 12:05:42 +0100, Georg Bauhaus <rm-host.bauhaus@maps.futureapps.de> wrote:
>>
>>> The Ravenscar profile (and the Restricted profile in GNAT)
>>> assume we want our tasks to run forever. Programs will be
>>> supported by a lean and efficient run-time.
>>>
>>> What if I just want the lean and efficient Ravenscar run-time
>>> but do want my tasks to terminate?
>>
>> I'd suggest to use the appropriate list of Restriction pragmas then.
>
> I think I need to place a pragma Profile (Ravenscar)
> or (Restricted) (in the case of GNAT) to make the compiler pick
> the desired run-time.  But then tasks won't terminate.

If you can stick to GNAT only, this isn't true. "No_Task_Termination" is an additional
restriction for the Ravenscar profile which isn't in the original set. See GNAT RM:

|The above set is a superset of the restrictions provided by pragma Profile (Restricted),
|it includes six additional restrictions (Simple_Barriers, No_Select_Statements,
|No_Calendar, No_Implicit_Heap_Allocations, No_Relative_Delay and No_Task_Termination).
                                                               ^^^^^^^^^^^^^^^^^^^^^^^
|This means that pragma Profile (Ravenscar), like the pragma Profile (Restricted),
|automatically causes the use of a simplified, more efficient version of the tasking
|run-time system.

Maybe I am wrong, but I would expect the binder to use the "simplified, more efficient
version" as soon as the proper set of restrictions is met, no matter if they are given
in a "pragma Profile (...)" or as an explicit list of "pragma Restrictions (...)".

And BTW, the "tasks won't terminate" is probably not true in its literal sense, it's
just erroneous behaviour if they do in a Ravenscar profile restricted program. ;)


Vinzent.

-- 
There is no signature.



^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: Q: Profiles
  2010-11-05 21:28     ` Vinzent Hoefler
@ 2010-11-05 23:11       ` Ed Falis
  2010-11-06  0:03         ` Georg Bauhaus
  2010-11-06  3:27         ` Yannick Duchêne (Hibou57)
  0 siblings, 2 replies; 15+ messages in thread
From: Ed Falis @ 2010-11-05 23:11 UTC (permalink / raw)


On Nov 5, 5:28 pm, "Vinzent Hoefler" <nntp-2010...@t-
domaingrabbing.de> wrote:
> On Fri, 05 Nov 2010 21:59:00 +0100, Georg Bauhaus <rm-host.bauh...@maps.futureapps.de> wrote:
> > On 11/5/10 9:14 PM, Vinzent Hoefler wrote:
> >> On Fri, 05 Nov 2010 12:05:42 +0100, Georg Bauhaus <rm-host.bauh...@maps.futureapps.de> wrote:
>
> >>> The Ravenscar profile (and the Restricted profile in GNAT)
> >>> assume we want our tasks to run forever. Programs will be
> >>> supported by a lean and efficient run-time.
>
> >>> What if I just want the lean and efficient Ravenscar run-time
> >>> but do want my tasks to terminate?
>
> >> I'd suggest to use the appropriate list of Restriction pragmas then.
>
> > I think I need to place a pragma Profile (Ravenscar)
> > or (Restricted) (in the case of GNAT) to make the compiler pick
> > the desired run-time.  But then tasks won't terminate.
>
> If you can stick to GNAT only, this isn't true. "No_Task_Termination" is an additional
> restriction for the Ravenscar profile which isn't in the original set. See GNAT RM:
>
> |The above set is a superset of the restrictions provided by pragma Profile (Restricted),
> |it includes six additional restrictions (Simple_Barriers, No_Select_Statements,
> |No_Calendar, No_Implicit_Heap_Allocations, No_Relative_Delay and No_Task_Termination).
>                                                                ^^^^^^^^^^^^^^^^^^^^^^^
> |This means that pragma Profile (Ravenscar), like the pragma Profile (Restricted),
> |automatically causes the use of a simplified, more efficient version of the tasking
> |run-time system.
>
> Maybe I am wrong, but I would expect the binder to use the "simplified, more efficient
> version" as soon as the proper set of restrictions is met, no matter if they are given
> in a "pragma Profile (...)" or as an explicit list of "pragma Restrictions (...)".
>
> And BTW, the "tasks won't terminate" is probably not true in its literal sense, it's
> just erroneous behaviour if they do in a Ravenscar profile restricted program. ;)
>
> Vinzent.
>
> --
> There is no signature.

The --RTS= switch for gnatmake or --config=,,,, switch to gprconfig is
your friend.  You generally would need to designate the run-time
library through one of these mechanisms.  pragma Profile (Ravenscar)
will remove some overhead, but not as much as the former in versions
of GNAT that support the specialized libraries.

As far as termination goes, it's erroneous as you stated, but there
are a variety of unusual ways to terminate tasks, typically being
system calls.

- Ed



^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: Q: Profiles
  2010-11-05 23:11       ` Ed Falis
@ 2010-11-06  0:03         ` Georg Bauhaus
  2010-11-06  3:27         ` Yannick Duchêne (Hibou57)
  1 sibling, 0 replies; 15+ messages in thread
From: Georg Bauhaus @ 2010-11-06  0:03 UTC (permalink / raw)


On 11/6/10 12:11 AM, Ed Falis wrote:

> The --RTS= switch for gnatmake or --config=,,,, switch to gprconfig is
> your friend.

Thanks for the pointers and a number of hints.


Georg



^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: Q: Profiles
  2010-11-05 23:11       ` Ed Falis
  2010-11-06  0:03         ` Georg Bauhaus
@ 2010-11-06  3:27         ` Yannick Duchêne (Hibou57)
  2010-11-06 14:43           ` Ed Falis
  1 sibling, 1 reply; 15+ messages in thread
From: Yannick Duchêne (Hibou57) @ 2010-11-06  3:27 UTC (permalink / raw)


Le Sat, 06 Nov 2010 00:11:37 +0100, Ed Falis <falis@verizon.net> a écrit:
> The --RTS= switch for gnatmake or --config=,,,, switch to gprconfig is

The --RTS=… option is really useful with GNAT-Pro, isn't it ?


-- 
Si les chats miaulent et font autant de vocalises bizarres, c’est pas pour  
les chiens.

“I am fluent in ASCII” [Warren 2010]



^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: Q: Profiles
  2010-11-06  3:27         ` Yannick Duchêne (Hibou57)
@ 2010-11-06 14:43           ` Ed Falis
  2010-11-06 14:53             ` Ludovic Brenta
  0 siblings, 1 reply; 15+ messages in thread
From: Ed Falis @ 2010-11-06 14:43 UTC (permalink / raw)


On Nov 5, 11:27 pm, Yannick Duchêne (Hibou57)
<yannick_duch...@yahoo.fr> wrote:
> Le Sat, 06 Nov 2010 00:11:37 +0100, Ed Falis <fa...@verizon.net> a écrit:
>
> > The --RTS= switch for gnatmake or --config=,,,, switch to gprconfig is
>
> The --RTS=… option is really useful with GNAT-Pro, isn't it ?

Right, the GNAT Pro line is the may place supporting alternate run-
time libraries of the various GNATs.

- Ed




^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: Q: Profiles
  2010-11-06 14:43           ` Ed Falis
@ 2010-11-06 14:53             ` Ludovic Brenta
  2010-11-06 18:51               ` Ed Falis
  0 siblings, 1 reply; 15+ messages in thread
From: Ludovic Brenta @ 2010-11-06 14:53 UTC (permalink / raw)


Ed Falis writes on comp.lang.ada:
> On Nov 5, 11:27 pm, Yannick Duchêne (Hibou57)
> <yannick_duch...@yahoo.fr> wrote:
>> Le Sat, 06 Nov 2010 00:11:37 +0100, Ed Falis <fa...@verizon.net> a écrit:
>>
>> > The --RTS= switch for gnatmake or --config=,,,, switch to gprconfig is
>>
>> The --RTS=… option is really useful with GNAT-Pro, isn't it ?
>
> Right, the GNAT Pro line is the may place supporting alternate run-
> time libraries of the various GNATs.

No, the gnat-4.4 in Debian also supports both SJLJ and ZCX runtimes :)

-- 
Ludovic Brenta.



^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: Q: Profiles
  2010-11-06 14:53             ` Ludovic Brenta
@ 2010-11-06 18:51               ` Ed Falis
  0 siblings, 0 replies; 15+ messages in thread
From: Ed Falis @ 2010-11-06 18:51 UTC (permalink / raw)


On Nov 6, 10:53 am, Ludovic Brenta <ludo...@ludovic-brenta.org> wrote:
> Ed Falis writes on comp.lang.ada:

> > Right, the GNAT Pro line is the may place supporting alternate run-
> > time libraries of the various GNATs.
>
> No, the gnat-4.4 in Debian also supports both SJLJ and ZCX runtimes :)
>
> --
> Ludovic Brenta.

Yes, and "it is good".



^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: Q: Profiles
  2010-11-05 11:05 Q: Profiles Georg Bauhaus
  2010-11-05 11:37 ` Yannick Duchêne (Hibou57)
  2010-11-05 20:14 ` Vinzent Hoefler
@ 2010-11-09 11:04 ` Matteo Bordin
  2010-11-09 11:40   ` Georg Bauhaus
  2 siblings, 1 reply; 15+ messages in thread
From: Matteo Bordin @ 2010-11-09 11:04 UTC (permalink / raw)


On Nov 5, 12:05 pm, Georg Bauhaus <rm-host.bauh...@maps.futureapps.de>
wrote:
> The Ravenscar profile (and the Restricted profile in GNAT)
> assume we want our tasks to run forever.  Programs will be
> supported by a lean and efficient run-time.
>
> What if I just want the lean and efficient Ravenscar run-time
> but do want my tasks to terminate?

Why don't you just let your task suspend forever on an entry whose
barrier is never opened?



^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: Q: Profiles
  2010-11-09 11:04 ` Matteo Bordin
@ 2010-11-09 11:40   ` Georg Bauhaus
  2010-11-09 13:09     ` Matteo Bordin
  0 siblings, 1 reply; 15+ messages in thread
From: Georg Bauhaus @ 2010-11-09 11:40 UTC (permalink / raw)


On 09.11.10 12:04, Matteo Bordin wrote:

>> What if I just want the lean and efficient Ravenscar run-time
>> but do want my tasks to terminate?
> 
> Why don't you just let your task suspend forever on an entry whose
> barrier is never opened?

The program is supposed to terminate (and I cannot change
that setup).

Did I understand correctly?  Would there be a difference if
the line Never.Enter_Castle were commented out?

pragma Profile (Ravenscar);

package Demo is
   pragma Elaborate_Body(Demo);
   task Ending;
end Demo;

package body Demo is

   protected Never is
      entry Enter_Castle;
   end Never;

   protected body Never is
      entry Enter_Castle when False is begin null;
      end Enter_Castle;
   end Never;

   task body Ending is
   begin
      -- ...
      Never.Enter_Castle;
   end Ending;

begin
   null;
end Demo;



^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: Q: Profiles
  2010-11-09 11:40   ` Georg Bauhaus
@ 2010-11-09 13:09     ` Matteo Bordin
  0 siblings, 0 replies; 15+ messages in thread
From: Matteo Bordin @ 2010-11-09 13:09 UTC (permalink / raw)


On Nov 9, 12:40 pm, Georg Bauhaus <rm.dash-bauh...@futureapps.de>
wrote:
> On 09.11.10 12:04, Matteo Bordin wrote:
>
> >> What if I just want the lean and efficient Ravenscar run-time
> >> but do want my tasks to terminate?
>
> > Why don't you just let your task suspend forever on an entry whose
> > barrier is never opened?
>
> The program is supposed to terminate (and I cannot change
> that setup).

I thought you needed some kind of dynamic reconfiguration of your
tasks set.




^ permalink raw reply	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2010-11-09 13:09 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-11-05 11:05 Q: Profiles Georg Bauhaus
2010-11-05 11:37 ` Yannick Duchêne (Hibou57)
2010-11-05 11:50   ` Georg Bauhaus
2010-11-05 20:14 ` Vinzent Hoefler
2010-11-05 20:59   ` Georg Bauhaus
2010-11-05 21:28     ` Vinzent Hoefler
2010-11-05 23:11       ` Ed Falis
2010-11-06  0:03         ` Georg Bauhaus
2010-11-06  3:27         ` Yannick Duchêne (Hibou57)
2010-11-06 14:43           ` Ed Falis
2010-11-06 14:53             ` Ludovic Brenta
2010-11-06 18:51               ` Ed Falis
2010-11-09 11:04 ` Matteo Bordin
2010-11-09 11:40   ` Georg Bauhaus
2010-11-09 13:09     ` Matteo Bordin

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