/*********************************************************
 * DO NOT CHANGE THIS FILE, IT IS GENERATED AUTOMATICALY *
 *********************************************************/

/* Copyright 2008, 2009, Mariano Cerdeiro
 *
 * This file is part of FreeOSEK.
 *
 * FreeOSEK is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * Linking FreeOSEK statically or dynamically with other modules is making a
 * combined work based on FreeOSEK. Thus, the terms and conditions of the GNU
 * General Public License cover the whole combination.
 *
 * In addition, as a special exception, the copyright holders of FreeOSEK give
 * you permission to combine FreeOSEK program with free software programs or
 * libraries that are released under the GNU LGPL and with independent modules
 * that communicate with FreeOSEK solely through the FreeOSEK defined interface.
 * You may copy and distribute such a system following the terms of the GNU GPL
 * for FreeOSEK and the licenses of the other code concerned, provided that you
 * include the source code of that other code when and as the GNU GPL requires
 * distribution of source code.
 *
 * Note that people who make modified versions of FreeOSEK are not obligated to
 * grant this special exception for their modified versions; it is their choice
 * whether to do so. The GNU General Public License gives permission to release
 * a modified version without this exception; this exception also makes it
 * possible to release a modified version which carries forward this exception.
 *
 * FreeOSEK is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY 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
 * along with FreeOSEK. If not, see <http://www.gnu.org/licenses/>.
 *
 */

/** \page FreeOSEK_RE FreeOSEK OS Requirement Tracing
 *
 * This page list all FreeOSEK requirements and links to their implementation
 * and test.
 *
 * \section FreeOSEK_RE_RT FreeOSEK OS Reqruirement Tracing
 *
 * \subsection FreeOSEK_RE_RT_ActivateTask ActivateTask
 *
 * \reqd OSEK_SYS_3.1 The system service StatusType
 *			ActivateTask ( TaskType TaskID ) shall be defined.
 * \copyreqs
 * \copyreqt
 *
 * \reqd OSEK_SYS_3.1.1 The task TaskID shall be transferred from the suspended
 *			state into the ready state.
 * \copyreqs
 * \copyreqt
 *
 * \reqd OSEK_SYS_3.1.2 The operating system shall ensure that the task code is
 *			being executed from the first statement.
 * \copyreqs
 * \copyreqt
 *
 * \reqd OSEK_SYS_3.1.3 The service may be called from interrupt category 2
 *			level and from task level.
 * \copyreqs
 * \copyreqt
 *
 * \reqd OSEK_SYS_3.1.4 Rescheduling shall take place only if called from a
 *			preemptable task.
 * \copyreqs
 * \copyreqt
 *
 * \reqd OSEK_SYS_3.1.5 If other than E_OK is returned the activation is
 *			ignored.
 * \copyreqs
 * \copyreqt
 *
 * \reqd OSEK_SYS_3.1.6 When an extended task is transferred from suspended
 *			state into ready state all its events are cleared.
 * \copyreqs
 * \copyreqt
 *
 * \reqd OSEK_SYS_3.1.7 Possible return values in Standard mode are:
 *			E_OK if no errors
 *			E_OS_LIMIT if too many task activations of TaskID.
 * \copyreqs
 * \copyreqt
 *
 * \reqd OSEK_SYS_3.1.8 Added possible return values in Extended mode is:
 *			E_OS_ID if the Task TaskID is invalid.
 * \copyreqs
 * \copyreqt
 *
 * \subsection FreeOSEK_RE_RT_TerminateTask TerminateTask
 *
 * \reqd OSEK_SYS_3.2 The system service StatusType TerminateTask ( void )
 *			shall be defined.
 * \copyreqs
 * \copyreqt
 *
 * \reqd OSEK_SYS_3.2.1 The calling task shall be transferred from the running
 * 		state into the suspended state.
 * \copyreqs
 * \copyreqt
 *
 * \reqd OSEK_SYS_3.2.2 If an internal resource is assigned to the calling
 *			task, it is automatically released.
 * \copyreqs
 * \copyreqt
 *
 * \reqd OSEK_SYS_3.2.3 If the call was successful, TerminateTask does not
 *			return to the call level and the status can not be evaluated.
 * \copyreqs
 * \copyreqt
 *
 * \reqd OSEK_SYS_3.2.4 If the version with extended status is used, the
 *			service returns in case of error, and provides a status which
 *			can be evaluated in the application.
 * \copyreqs
 * \copyreqt
 *
 * \reqd OSEK_SYS_3.2.5 If the service TerminateTask is called successfully, it
 *			enforces a rescheduling.
 * \copyreqs
 * \copyreqt
 *
 * \reqd OSEK_SYS_3.2.6 This function will never returns in Standard mode.
 * \copyreqs
 * \copyreqt
 *
 * \reqd OSEK_SYS_3.2.7 Possibly return values in Extended mode are:
 *			E_OS_RESOURCE if the Task still occupies resources, or
 *			E_OS_CALLEVEL if called at interrupt level.
 * \copyreqs
 * \copyreqt
 *
 * \subsection FreeOSEK_RE_RT_ChainTask Chain Task
 *
 * \reqd OSEK_SYS_3.3 The system service StatusType
 *			ChainTask ( TaskType TaskID ) shall be defined.
 * \copyreqs
 * \copyreqt
 *
 * \reqd OSEK_SYS_3.3.1 This service causes the termination of the calling
 *			task.
 * \copyreqs
 * \copyreqt
 *
 * \reqd OSEK_SYS_3.3.2 After termination of the calling task a succeeding
 *			task TaskID shall be activated.
 * \copyreqs
 * \copyreqt
 *
 * \reqd OSEK_SYS_3.3.3 If the succeeding task is identical with the current
 * 		task, this does not result in multiple requests. The task is not
 *			transferred to the suspended state, but will immediately become ready
 *			again.
 * \copyreqs
 * \copyreqt
 *
 * \reqd OSEk_SYS_3.3.4 If an internal resource is assigned to the calling
 *			task it shall be automatically released, even if the succeeding task
 *			is identical with the current task.
 * \copyreqs
 * \copyreqt
 *
 * \reqd OSEK_SYS_3.3.5 If called successfully, ChainTask does not return to
 *			the call level and the status can not be evaluated.
 * \copyreqs
 * \copyreqt
 *
 * \reqd OSEK_SYS_3.3.6 If the service ChainTask is called successfully, this
 *			enforces a rescheduling.
 * \copyreqs
 * \copyreqt
 *
 * \reqd OSEK_SYS_3.3.7 When an extended task is transferred from suspended
 *			state into ready state all its events are cleared.
 * \copyreqs
 * \copyreqt
 *
 * \reqd OSEK_SYS_3.3.8 If E_OS_LIMIT is returned the activation is ignored.
 * \copyreqs
 * \copyreqt
 *
 * \reqd OSEK_SYS_3.3.9 Possible return values in Standard mode are:
 *			no returns if no errors
 *      	E_OS_LIMIT if too many task activations of TaskID.
 * \copyreqs
 * \copyreqt
 *
 * \reqd OSEK_SYS_3.3.10 Added possible return values in Extended mode are:
 *			E_OS_ID if the TaskID is invalid, or
 *			E_OS_RESOURCE if the calling task still occupies resources, or
 *			E_OS_CALLEVEL if call at interrupt level.
 * \copyreqs
 * \copyreqt
 *
 * \subsection FreeOSEK_RE_RT_Schedule Schedule
 *
 * \reqd OSEK_SYS_3.4 The system service StatusType
 *			Schedule ( void ) shall be defined.
 * \copyreqs
 * \copyreqt
 *
 * \reqd OSEK_SYS_3.4.1 If a task with a lower or equal priority than the
 *			ceiling priority of the internal resource and higher priority than
 *			the priority of the calling task is ready:
 * \copyreqs
 * \copyreqt
 *
 * \reqd OSEK_SYS_3.4.1.1 the internal resource of the task shall be released,
 * \copyreqs
 * \copyreqt
 *
 * \reqd OSEK_SYS_3.4.1.2 the current task is put into the ready state,
 * \copyreqs
 * \copyreqt
 *
 * \reqd OSEK_SYS_3.4.1.3 its context is saved,
 * \copyreqs
 * \copyreqt
 *
 * \reqd OSEK_SYS_3.4.1.4 and the higher-priority task is executed.
 * \copyreqs
 * \copyreqt
 *
 * \reqd OSEK_SYS_3.4.2 Otherwise the calling task is continued.
 * \copyreqs
 * \copyreqt
 *
 * \reqd OSEK_SYS_3.4.3 This service has no influence on tasks with no internal
 *			resource assigned.
 * \copyreqs
 * \copyreqt
 *
 * \reqd OSEK_SYS_3.4.4 Possible return values in Standard mode is:
 * 		E_OK
 * \copyreqs
 * \copyreqt
 *
 * \reqd OSEK_SYS_3.3.5 Extra possible return values in Extended mode are:
 *			E_OS_CALLEVEL if call at interrupt level, or
 *			E_OS_RESOURCE if the calling task occupies resources.
 * \copyreqs
 * \copyreqt
 *
 * \subsection FreeOSEK_RE_RT_GetTaskID GetTaskID
 *
 * \reqd OSEK_SYS_3.5 The system service
 *			StatusType GetTaskID ( TaskRefType TaskID ) shall be defined.
 * \copyreqs
 * \copyreqt
 *
 * \reqd OSEK_SYS_3.5.1 Shall returns the information about the TaskID of the
 *			task which is currently running.
 * \copyreqs
 * \copyreqt
 *
 * \reqd OSEK_SYS_3.5.2 If no task is currently running, the service returns
 *			INVALID_TASK as TaskType.
 * \copyreqs
 * \copyreqt
 *
 * \reqd OSEK_SYS_3.5.3 This function returns always E_OK.
 * \copyreqs
 * \copyreqt
 *
 * \subsection FreeOSEK_RE_RT_GetTaskState GetTaskState
 *
 * \reqd OSEK_SYS_3.6 The system service
 *			StatusType GetTaskState ( TaskType TaskID, TaskStateRefType State )
 *			shall be defined.
 * \copyreqs
 * \copyreqt
 *
 * \reqd OSEK_SYS_3.6.1 The service shall returns the state of a task (running,
 *			ready, waiting, suspended) at the time of calling GetTaskState.
 * \copyreqs
 * \copyreqt
 *
 * \reqd OSEK_SYS_3.6.2 When the service is called for a task, which is
 *			activated more than once, the state is set to running if any instance
 *			of the task is running.
 * \copyreqs
 * \copyreqt
 *
 * \reqd OSEK_SYS_3.6.3 Possible return values in Standard mode is:
 *			E_OK
 * \copyreqs
 * \copyreqt
 *
 * \reqd OSEK_SYS_3.6.4 Extra possible return values in Extended mode is:
 *			E_OS_ID if the Task TaskID is invalid.
 * \copyreqs
 * \copyreqt
 *
 */
