Next: , Up: Tasking model in PolyORB



5.1 PolyORB Tasking runtimes

PolyORB may use three different tasking runtimes to manage and synchronize tasks, if any. Tasking runtimes capabilities are defined in the Ada reference manual [ISO95] and the next revision of this standard (Ada0Y).

The choice of a specific tasking runtime is a compile-time parameter, Tasking run-times for more details on their configuration.

5.1.1 Full tasking runtime

Full tasking runtime refers to configuration in which there are some dependencies on the tasking constructs defined in chapter 9 of [ISO95]. It makes use of all capabilities defined in this section to manage and synchronize tasks.

In this configuration, a PolyORB application must be compiled and linked with a tasking-capable Ada runtime.

5.1.2 No tasking runtime

No tasking runtime refers to configuration in which there is no semantic dependency on tasking constructs. Thus, no tasking is required.

In this configuration, a PolyORB application may be compiled and linked with a tasking-capable Ada runtime or a no-tasking Ada runtime.

5.1.3 Ravenscar tasking runtime

Ravenscar tasking runtime refers to configuration in which tasking constructs are compliant with the Ravenscar tasking restricted profile.

In this configuration, a PolyORB application may be compiled and linked with a tasking-capable Ada runtime or a Ravenscar Ada runtime.

To configure tasking constructs used by PolyORB, one must instanciate the PolyORB.Setup.Tasking.Ravenscar package to setup tasks and protected objects used by PolyORB core.

     
     ------------------------------------------------------------------------------
     --                                                                          --
     --                           POLYORB COMPONENTS                             --
     --                                                                          --
     --      P O L Y O R B . S E T U P . T A S K I N G . R A V E N S C A R       --
     --                                                                          --
     --                                 S p e c                                  --
     --                                                                          --
     --         Copyright (C) 2002-2004 Free Software Foundation, Inc.           --
     --                                                                          --
     -- PolyORB is free software; you  can  redistribute  it and/or modify it    --
     -- under terms of the  GNU General Public License as published by the  Free --
     -- Software Foundation;  either version 2,  or (at your option)  any  later --
     -- version. PolyORB is distributed  in the hope that it will be  useful,    --
     -- but WITHOUT ANY WARRANTY;  without even the implied warranty of MERCHAN- --
     -- TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public --
     -- License  for more details.  You should have received  a copy of the GNU  --
     -- General Public License distributed with PolyORB; see file COPYING. If    --
     -- not, write to the Free Software Foundation, 59 Temple Place - Suite 330, --
     -- Boston, MA 02111-1307, USA.                                              --
     --                                                                          --
     -- As a special exception,  if other files  instantiate  generics from this --
     -- unit, or you link  this unit with other files  to produce an executable, --
     -- this  unit  does not  by itself cause  the resulting  executable  to  be --
     -- covered  by the  GNU  General  Public  License.  This exception does not --
     -- however invalidate  any other reasons why  the executable file  might be --
     -- covered by the  GNU Public License.                                      --
     --                                                                          --
     --                PolyORB is maintained by ACT Europe.                      --
     --                    (email: sales@@act-europe.fr)                          --
     --                                                                          --
     ------------------------------------------------------------------------------
     
     --  You should instanciate this package to set up a ravenscar profile.
     
     with System;
     
     with PolyORB.Tasking.Profiles.Ravenscar.Threads.Annotations;
     
     with PolyORB.Tasking.Profiles.Ravenscar.Threads;
     with PolyORB.Tasking.Profiles.Ravenscar.Mutexes;
     with PolyORB.Tasking.Profiles.Ravenscar.Condition_Variables;
     
     generic
        Number_Of_Application_Tasks    : Integer;
        --  Number of tasks created by the user.
     
        Number_Of_System_Tasks         : Integer;
        --  Number of tasks created by the PolyORB run-time library.
     
        Number_Of_Conditions           : Integer;
        --  Number of preallocated conditions.
     
        Number_Of_Mutexes              : Integer;
        --  Number of preallocated mutexes.
     
        Task_Priority                  : System.Priority;
        --  Priority affected to the tasks of the pool.
     
        Storage_Size                   : Natural;
        --  Stack size of the system tasks.
     
     package PolyORB.Setup.Tasking.Ravenscar is
     
        package Threads_Package is
           new PolyORB.Tasking.Profiles.Ravenscar.Threads
          (Number_Of_Application_Tasks,
           Number_Of_System_Tasks,
           Task_Priority,
           Storage_Size);
     
        package Thread_Annotations_Package is new Threads_Package.Annotations;
     
        package Conditions_Package is
           new PolyORB.Tasking.Profiles.Ravenscar.Condition_Variables
          (Threads_Package,
           Number_Of_Conditions);
     
        package Mutexes_Package is
           new PolyORB.Tasking.Profiles.Ravenscar.Mutexes
          (Threads_Package,
           Number_Of_Mutexes);
     
     end PolyORB.Setup.Tasking.Ravenscar;