mirror of
https://github.com/AdaCore/PolyORB.git
synced 2026-02-12 13:01:15 -08:00
197 lines
4.6 KiB
ReStructuredText
197 lines
4.6 KiB
ReStructuredText
.. _RT-CORBA:
|
|
|
|
********
|
|
RT-CORBA
|
|
********
|
|
|
|
.. index:: RT-CORBA
|
|
|
|
.. _What_you_should_know_before_Reading_this_section:
|
|
|
|
What you should know before Reading this section
|
|
================================================
|
|
|
|
This section assumes that the reader is familiar with the Real-Time
|
|
CORBA specifications described in :cite:`rt-corba1.1:2002` and :cite:`rt-corba2.0:2003`.
|
|
|
|
.. _Installing_RT-CORBA:
|
|
|
|
Installing RT-CORBA
|
|
===================
|
|
|
|
The RT-CORBA library is installed as part of the installation of the
|
|
CORBA personality. Note that you may have to select specific run-time
|
|
options to enable full compliance with RT-CORBA specifications and
|
|
ensure real time behavior.
|
|
|
|
.. _Configuring_RT-CORBA:
|
|
|
|
Configuring RT-CORBA
|
|
====================
|
|
|
|
This section details how to configure your application to use the
|
|
RT-CORBA library.
|
|
|
|
.. _`PolyORB.RTCORBA_P.Setup`:
|
|
|
|
`PolyORB.RTCORBA_P.Setup`
|
|
-------------------------
|
|
|
|
.. index:: `PolyORB.RTCORBA_P.Setup`
|
|
|
|
The RT-CORBA specifications mandate that the implementation provide a
|
|
mechanism to set up some of its internals.
|
|
|
|
The package `PolyORB.RTCORBA_P.Setup` provides an API to set up
|
|
the `PriorityMapping` and `PriorityTransform` objects.
|
|
|
|
.. literalinclude:: polyorb-rtcorba_p-setup.ads
|
|
:language: ada
|
|
|
|
.. _`RTCORBA.PriorityMapping`:
|
|
|
|
`RTCORBA.PriorityMapping`
|
|
=========================
|
|
|
|
.. index:: `RTCORBA.PriorityMapping`
|
|
|
|
PolyORB provides different implementations of this specification:
|
|
|
|
|
|
* `RTCORBA.PriorityMapping.Direct` maps CORBA priorities
|
|
directly to native priorities. If the CORBA priority is not in
|
|
`System.Priority'Range`, then the mapping is not possible.
|
|
|
|
* `RTCORBA.PriorityMapping.Linear` maps each individual
|
|
native priority to a contiguous range of CORBA priorities, so that the
|
|
complete CORBA priority range is used up for the mapping. See
|
|
:file:`rtcorba-prioritymapping-linear.adb` for more details.
|
|
|
|
|
|
.. _RTCosScheduling_Service:
|
|
|
|
RTCosScheduling Service
|
|
=======================
|
|
|
|
.. index:: RTCosScheduling Service
|
|
|
|
.. _Overview:
|
|
|
|
Overview
|
|
--------
|
|
|
|
PolyORB provides an implementation of the RTCosScheduling service
|
|
defined in :cite:`rt-corba1.1:2002`.
|
|
|
|
PolyORB uses some permissions stated in the specifications to allow for
|
|
easy configuration of `ClientScheduler` and
|
|
`ServerScheduler`, defined in the following sections.
|
|
|
|
Additional information on the use of the API may be found in the
|
|
RTCosScheduling example in
|
|
:file:`examples/corba/rtcorba/rtcosscheduling`.
|
|
|
|
.. _`RTCosScheduling::ClientScheduler`:
|
|
|
|
`RTCosScheduling::ClientScheduler`
|
|
----------------------------------
|
|
|
|
Client side *activities* are defined in a configuration file that can
|
|
be loaded using
|
|
:file:`RTCosScheduling.ClientScheduler.Impl.Load_Configuration_File`
|
|
|
|
On the client side, the user can set up
|
|
|
|
|
|
* current task priority, using registered `PriorityMapping` object.
|
|
|
|
|
|
This file has the following syntax, derived from PolyORB configuration
|
|
file syntax:
|
|
|
|
|
|
::
|
|
|
|
# Name of the activity
|
|
[activity activity1]
|
|
|
|
# Activity priority, in RTCORBA.Priority'Range
|
|
priority=10000
|
|
|
|
|
|
|
|
In this example, activity `activity1` is defined with priority
|
|
`10'000`.
|
|
|
|
.. _`RTCosScheduling::ServerScheduler`:
|
|
|
|
`RTCosScheduling::ServerScheduler`
|
|
----------------------------------
|
|
|
|
Server side *POAs* and *objects* are defined in a configuration
|
|
file that can be loaded using
|
|
:file:`RTCosScheduling.ClientScheduler.Impl.Load_Configuration_File`
|
|
|
|
On the server side, the user can set up
|
|
|
|
|
|
* object priority, using registered `PriorityMapping` object.
|
|
|
|
* all RT-CORBA-specific POA configuration parameters.
|
|
|
|
|
|
This file has the following syntax, derived from PolyORB configuration
|
|
file syntax:
|
|
|
|
|
|
::
|
|
|
|
# Name of the object
|
|
[object object1]
|
|
|
|
# Object priority, in RTCORBA.Priority'Range
|
|
priority=10000
|
|
|
|
|
|
|
|
In this example, object `object1` is defined with priority
|
|
`10'000`.
|
|
|
|
|
|
::
|
|
|
|
# Name of the POA
|
|
[poa poa1]
|
|
|
|
# PriorityModelPolicy for POA
|
|
priority_model=CLIENT_PROPAGATED
|
|
default_priority=0 # not meaningful for CLIENT_PROPAGATED
|
|
|
|
# Threadpools attached to POA
|
|
threadpool_id=1
|
|
|
|
# Name of the POA
|
|
[poa poa2]
|
|
|
|
# PriorityModelPolicy for POA
|
|
priority_model=SERVER_DECLARED
|
|
default_priority=40
|
|
|
|
# Threadpools attached to POA
|
|
threadpool_id=2
|
|
|
|
# Name of the POA
|
|
[poa poa3]
|
|
|
|
# POA with no defined policies
|
|
|
|
|
|
|
|
In this example, Two POAs are defined: POA `poa1` will use the
|
|
`CLIENT_PROPAGATED` PriorityModel Policy, default value is not
|
|
meaningful for this configuration, `poa1` will use the Threadpool
|
|
#1; POA `poa2` will use the `SERVER_DECLARED` PriorityModel
|
|
Policy, default server priority is 40, `poa2` will use the
|
|
Threadpool #2. Note that both policies are optional and can be omitted.
|
|
|