From bc29c7c313e9e287731144b3e4701cc8a68e1c1c Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Mon, 12 Apr 2021 06:58:44 +0200 Subject: validation: Add support library Add a library for support functions used by validation tests. Rename tc-support.* to tx-support.* since this file does not contain test cases. --- testsuites/validation/tx-support.c | 171 +++++++++++++++++++++++++++++++++++++ 1 file changed, 171 insertions(+) create mode 100644 testsuites/validation/tx-support.c (limited to 'testsuites/validation/tx-support.c') diff --git a/testsuites/validation/tx-support.c b/testsuites/validation/tx-support.c new file mode 100644 index 0000000000..dcb7603832 --- /dev/null +++ b/testsuites/validation/tx-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 "tx-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 ); +} -- cgit v1.2.3