From 8afe3323485530277ca3ae38e73576e4f9517d12 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Sun, 21 Mar 2021 13:26:53 +0100 Subject: validation: Add test case support functions --- testsuites/validation/tc-support.c | 171 +++++++++++++++++++++++++++++++++++++ testsuites/validation/tc-support.h | 103 ++++++++++++++++++++++ 2 files changed, 274 insertions(+) create mode 100644 testsuites/validation/tc-support.c create mode 100644 testsuites/validation/tc-support.h (limited to 'testsuites/validation') diff --git a/testsuites/validation/tc-support.c b/testsuites/validation/tc-support.c new file mode 100644 index 0000000000..6b48a2d646 --- /dev/null +++ b/testsuites/validation/tc-support.c @@ -0,0 +1,171 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + +/** + * @file + * + * @ingroup RTEMSTestSuites + * + * @brief This source file contains the definition of DeleteTask(), + * DoCreateTask(), GetMode(), GetPriority(), GetSelfPriority(), + * ReceiveAnyEvents(), RestoreRunnerASR(), RestoreRunnerMode(), + * RestoreRunnerPriority(), SendEvents(), SetMode(), SetSelfPriority(), + * SetPriority(), and StartTask(). + */ + +/* + * Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de) + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "tc-support.h" + +#include + +rtems_id DoCreateTask( rtems_name name, rtems_task_priority priority ) +{ + rtems_status_code sc; + rtems_id id; + + sc = rtems_task_create( + name, + priority, + RTEMS_MINIMUM_STACK_SIZE, + RTEMS_DEFAULT_MODES, + RTEMS_DEFAULT_ATTRIBUTES, + &id + ); + T_assert_rsc_success( sc ); + + return id; +} + +void StartTask( rtems_id id, rtems_task_entry entry, void *arg ) +{ + rtems_status_code sc; + + sc = rtems_task_start( id, entry, (rtems_task_argument) arg); + T_assert_rsc_success( sc ); +} + +void DeleteTask( rtems_id id ) +{ + if ( id != 0 ) { + rtems_status_code sc; + + sc = rtems_task_delete( id ); + T_rsc_success( sc ); + } +} + +rtems_event_set ReceiveAnyEvents( void ) +{ + rtems_status_code sc; + rtems_event_set events; + + events = 0; + sc = rtems_event_receive( + RTEMS_ALL_EVENTS, + RTEMS_EVENT_ANY | RTEMS_WAIT, + RTEMS_NO_TIMEOUT, + &events + ); + T_rsc_success( sc ); + + return events; +} + +void SendEvents( rtems_id id, rtems_event_set events ) +{ + rtems_status_code sc; + + sc = rtems_event_send( id, events ); + T_rsc_success( sc ); +} + +rtems_mode GetMode( void ) +{ + return SetMode( RTEMS_DEFAULT_MODES, RTEMS_CURRENT_MODE ); +} + +rtems_mode SetMode( rtems_mode set, rtems_mode mask ) +{ + rtems_status_code sc; + rtems_mode previous; + + sc = rtems_task_mode( set, mask, &previous ); + T_rsc_success( sc ); + + return previous; +} + +rtems_task_priority GetPriority( rtems_id id ) +{ + return SetPriority( id, RTEMS_CURRENT_PRIORITY ); +} + +rtems_task_priority SetPriority( rtems_id id, rtems_task_priority priority ) +{ + rtems_status_code sc; + rtems_task_priority previous; + + sc = rtems_task_set_priority( id, priority, &previous ); + T_rsc_success( sc ); + + return previous; +} + +rtems_task_priority GetSelfPriority( void ) +{ + return SetPriority( RTEMS_SELF, RTEMS_CURRENT_PRIORITY ); +} + +rtems_task_priority SetSelfPriority( rtems_task_priority priority ) +{ + return SetPriority( RTEMS_SELF, priority ); +} + +void RestoreRunnerASR( void ) +{ + rtems_status_code sc; + + sc = rtems_signal_catch( NULL, RTEMS_DEFAULT_MODES ); + T_rsc_success( sc ); +} + +void RestoreRunnerMode( void ) +{ + rtems_status_code sc; + rtems_mode mode; + + sc = rtems_task_mode( RTEMS_DEFAULT_MODES, RTEMS_ALL_MODE_MASKS, &mode ); + T_rsc_success( sc ); +} + +void RestoreRunnerPriority( void ) +{ + SetSelfPriority( PRIO_ULTRA_HIGH ); +} diff --git a/testsuites/validation/tc-support.h b/testsuites/validation/tc-support.h new file mode 100644 index 0000000000..4ffa4193f0 --- /dev/null +++ b/testsuites/validation/tc-support.h @@ -0,0 +1,103 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + +/** + * @file + * + * @ingroup RTEMSTestSuites + * + * @brief This header file provides the support functions for the validation + * test cases. + */ + +/* + * Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de) + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _TC_SUPPORT_H +#define _TC_SUPPORT_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @addtogroup RTEMSTestSuites + * + * @{ + */ + +typedef enum { + PRIO_PSEUDO_ISR, + PRIO_ULTRA_HIGH, + PRIO_VERY_HIGH, + PRIO_HIGH, + PRIO_NORMAL, + PRIO_LOW, + PRIO_VERY_LOW, + PRIO_ULTRA_LOW +} Priority; + +#define CreateTask( name, priority ) \ + DoCreateTask( \ + rtems_build_name( name[ 0 ], name[ 1 ], name[ 2 ], name[ 3 ] ), \ + priority \ + ) + +rtems_id DoCreateTask( rtems_name name, rtems_task_priority priority ); + +void StartTask( rtems_id id, rtems_task_entry entry, void *arg ); + +void DeleteTask( rtems_id id ); + +rtems_event_set ReceiveAnyEvents( void ); + +void SendEvents( rtems_id id, rtems_event_set events ); + +rtems_mode GetMode( void ); + +rtems_mode SetMode( rtems_mode set, rtems_mode mask ); + +rtems_task_priority GetPriority( rtems_id id ); + +rtems_task_priority SetPriority( rtems_id id, rtems_task_priority priority ); + +rtems_task_priority GetSelfPriority( void ); + +rtems_task_priority SetSelfPriority( rtems_task_priority priority ); + +void RestoreRunnerASR( void ); + +void RestoreRunnerMode( void ); + +void RestoreRunnerPriority( void ); + +/** @} */ + +#ifdef __cplusplus +} +#endif + +#endif /* _TC_SUPPORT_H */ -- cgit v1.2.3