blob: 3f56e240109ba7871f0ce4a6cce5e1a7440dbf90 (
plain) (
tree)
|
|
--
-- TMTEST / SPECIFICATION
--
-- DESCRIPTION:
--
-- This package is the specification for Test 26 of the RTEMS
-- Timing Test Suite.
--
-- DEPENDENCIES:
--
--
--
-- COPYRIGHT (c) 1989-1997.
-- On-Line Applications Research Corporation (OAR).
-- Copyright assigned to U.S. Government, 1994.
--
-- The license and distribution terms for this file may in
-- the file LICENSE in this distribution or at
-- http://www.OARcorp.com/rtems/license.html.
--
-- $Id$
--
with TIMER_DRIVER;
with RTEMS;
package TMTEST is
--
-- This points to the RTEMS task control block for the MIDDLE_TASK.
--
MIDDLE_TCB : RTEMS.TCB_POINTER;
--
-- The following is the ID of the semaphore used for timing operations.
--
SEMAPHORE_ID : RTEMS.ID;
--
-- The following variable is set to the execution time returned
-- by the timer.
--
END_TIME : RTEMS.UNSIGNED32;
--
-- INIT
--
-- DESCRIPTION:
--
-- This RTEMS task initializes the application.
--
procedure INIT (
ARGUMENT : in RTEMS.TASK_ARGUMENT
);
--
-- NULL_TASK
--
-- DESCRIPTION:
--
-- This RTEMS task has a NULL body and is only included to
-- allow TASK_START to be invoked without impacting another
-- task.
--
procedure NULL_TASK (
ARGUMENT : in RTEMS.TASK_ARGUMENT
);
--
-- HIGH_TASK
--
-- DESCRIPTION:
--
-- This RTEMS task is the highest priority test task and
-- thus executes first. It is responsible for measuring
-- and reporting the following times:
--
-- + THREAD_DISABLE_DISPATCH
-- + THREAD_ENABLE_DISPATCH
-- + THREAD_SET_STATE
--
-- After measuring and reporting the above times, this task
-- starts the timer and forces dispatch to the MIDDLE_TASK.
--
procedure HIGH_TASK (
ARGUMENT : in RTEMS.TASK_ARGUMENT
);
--
-- MIDDLE_TASK
--
-- DESCRIPTION:
--
-- This RTEMS task stops the timer and reports the execution
-- time for THREAD_DISPATCH without any floating point context
-- save and restore involved. Following this, it starts the
-- timer and forces a CONTEXT_SWITCH to the LOW_TASK.
--
procedure MIDDLE_TASK (
ARGUMENT : in RTEMS.TASK_ARGUMENT
);
--
-- LOW_TASK
--
-- DESCRIPTION:
--
-- This RTEMS task stops the timer and reports the execution
-- time for a raw CONTEXT_SWITCH without any floating point context
-- save and restore involved. Following this, it starts the
-- timer and performs a CONTEXT_RESTORE_FP for the FLOATING_POINT_TASK_1
-- and a CONTEXT_SWITCH to FLOATING_POINT_TASK_1.
--
procedure LOW_TASK (
ARGUMENT : in RTEMS.TASK_ARGUMENT
);
--
-- FLOATING_POINT_TASK_1
--
-- DESCRIPTION:
--
-- This RTEMS task stops the timer and reports the execution
-- time for a CONTEXT_SWITCH which restores the first floating
-- point context. Following this, it starts the
-- timer and performs a CONTEXT_SAVE_FP and CONTEXT_RESTORE_FP
-- and a CONTEXT_SWITCH to FLOATING_POINT_TASK_2. Once
-- control is returned to this task FLOATING_POINT_TASK_2, the
-- timer is stopped and the execution time for CONTEXT_SWITCH
-- from a used to an initialized floating point context is reported.
-- Following this, it starts the timer and performs a
-- CONTEXT_SAVE_FP and CONTEXT_RESTORE_FP and a CONTEXT_SWITCH
-- to FLOATING_POINT_TASK_2.
--
procedure FLOATING_POINT_TASK_1 (
ARGUMENT : in RTEMS.TASK_ARGUMENT
);
--
-- FLOATING_POINT_TASK_2
--
-- DESCRIPTION:
--
-- This RTEMS task stops the timer and reports the execution
-- time for a CONTEXT_SWITCH which switches from one freshly
-- initialized floating point context to another freshly
-- initialized floating point context. Following this, it
-- "dirties" its floating point context and starts the
-- timer. After this it performs a CONTEXT_SAVE_FP and
-- CONTEXT_RESTORE_FP and a CONTEXT_SWITCH to FLOATING_POINT_TASK_1.
-- Once control is returned to this task FLOATING_POINT_TASK_2, the
-- timer is stopped and the execution time for CONTEXT_SWITCH
-- from one used floating point context to another used floating
-- point context is reported. After this, this task invokes
-- the COMPLETE_TEST subprogram to measure and report
-- the remaining execution times measured by this test.
--
procedure FLOATING_POINT_TASK_2 (
ARGUMENT : in RTEMS.TASK_ARGUMENT
);
--
-- COMPLETE_TEST
--
-- DESCRIPTION:
--
-- This subprogram is responsible for measuring and reporting the
-- following execution times:
--
-- + THREAD_RESUME
-- + THREAD_UNBLOCK
-- + THREAD_READY
-- + THREAD_GET with a valid id
-- + THREAD_GET with an invalid id
--
procedure COMPLETE_TEST;
end TMTEST;
|