RTEMS
Classes | Macros | Typedefs | Enumerations | Functions | Variables
Test Support

Test support functions. More...

Classes

struct  rtems_test_parallel_context
 Internal context for parallel job execution. More...
 
struct  rtems_test_parallel_job
 Basic parallel job description. More...
 

Macros

#define RTEMS_TEST_INITIAL_EXTENSION   { NULL, NULL, NULL, NULL, NULL, NULL, NULL, rtems_test_fatal_extension }
 Initial extension for tests.
 
#define TEST_STATE   RTEMS_TEST_STATE_PASS
 
#define RTEMS_TEST_PARALLEL_PROCESSOR_MAX   32
 

Typedefs

typedef struct rtems_test_parallel_job rtems_test_parallel_job
 
typedef void(* rtems_test_parallel_worker_setup) (rtems_test_parallel_context *ctx, size_t worker_index, rtems_id worker_id)
 Worker task setup handler. More...
 

Enumerations

enum  RTEMS_TEST_STATE {
  RTEMS_TEST_STATE_PASS, RTEMS_TEST_STATE_FAIL, RTEMS_TEST_STATE_USER_INPUT, RTEMS_TEST_STATE_INDETERMINATE,
  RTEMS_TEST_STATE_BENCHMARK
}
 Test states.
 

Functions

void rtems_test_fatal_extension (rtems_fatal_source source, bool always_set_to_false, rtems_fatal_code code)
 Fatal extension for tests.
 
int rtems_test_begin (const char *name, const RTEMS_TEST_STATE state)
 Prints a begin of test message using printf(). More...
 
int rtems_test_end (const char *name)
 Prints an end of test message using printf(). More...
 
void rtems_test_exit (int status) RTEMS_NO_RETURN
 Exit the test without calling exit() since it closes stdin, etc and pulls in stdio code.
 
int rtems_test_printf (const char *format,...) RTEMS_PRINTFLIKE(1
 Prints via the RTEMS printer. More...
 
static bool rtems_test_parallel_stop_job (const rtems_test_parallel_context *ctx)
 Indicates if a job body should stop its work loop. More...
 
static bool rtems_test_parallel_is_master_worker (size_t worker_index)
 Indicates if a worker is the master worker. More...
 
static rtems_id rtems_test_parallel_get_task_id (const rtems_test_parallel_context *ctx, size_t worker_index)
 Returns the task identifier for a worker. More...
 
void rtems_test_parallel (rtems_test_parallel_context *ctx, rtems_test_parallel_worker_setup worker_setup, const rtems_test_parallel_job *jobs, size_t job_count)
 Runs a bunch of jobs in parallel on all processors of the system. More...
 
void rtems_test_busy_cpu_usage (time_t seconds, long nanoseconds)
 Performs a busy loop for the specified seconds and nanoseconds based on the CPU usage of the executing thread. More...
 
RTEMS_NO_RETURN void rtems_test_run (rtems_task_argument arg, const RTEMS_TEST_STATE state)
 Runs the test cases of the RTEMS Test Framework using a default configuration in the context of a task. More...
 

Variables

const char rtems_test_name []
 Each test must define a test name string.
 
rtems_printer rtems_test_printer
 Each test must define a printer.
 

Detailed Description

Test support functions.

Typedef Documentation

◆ rtems_test_parallel_worker_setup

typedef void(* rtems_test_parallel_worker_setup) (rtems_test_parallel_context *ctx, size_t worker_index, rtems_id worker_id)

Worker task setup handler.

Called during rtems_test_parallel() to optionally setup a worker task before it is started.

Parameters
[in]ctxThe parallel context.
[in]worker_indexThe worker index.
[in]worker_idThe worker task identifier.

Definition at line 149 of file test-info.h.

Function Documentation

◆ rtems_test_begin()

int rtems_test_begin ( const char *  name,
const RTEMS_TEST_STATE  state 
)

Prints a begin of test message using printf().

Returns
As specified by printf().

Definition at line 38 of file testbeginend.c.

◆ rtems_test_busy_cpu_usage()

void rtems_test_busy_cpu_usage ( time_t  seconds,
long  nanoseconds 
)

Performs a busy loop for the specified seconds and nanoseconds based on the CPU usage of the executing thread.

This function continuously reads the CPU usage of the executing thread. This operation may lead to a scheduler instance lock contention in SMP configurations.

Parameters
[in]secondsThe busy seconds.
[in]nanosecondsThe busy nanoseconds.

◆ rtems_test_end()

int rtems_test_end ( const char *  name)

Prints an end of test message using printf().

Returns
As specified by printf().

Definition at line 75 of file testbeginend.c.

◆ rtems_test_parallel()

void rtems_test_parallel ( rtems_test_parallel_context ctx,
rtems_test_parallel_worker_setup  worker_setup,
const rtems_test_parallel_job jobs,
size_t  job_count 
)

Runs a bunch of jobs in parallel on all processors of the system.

The worker tasks inherit the priority of the executing task.

There are SMP barriers before and after the job body.

Parameters
[in]ctxThe parallel context.
[in]worker_setupOptional handler to setup a worker task before it is started.
[in]jobsThe table of jobs.
[in]job_countThe count of jobs in the job table.

◆ rtems_test_parallel_get_task_id()

static rtems_id rtems_test_parallel_get_task_id ( const rtems_test_parallel_context ctx,
size_t  worker_index 
)
inlinestatic

Returns the task identifier for a worker.

Parameters
[in]ctxThe parallel context.
[in]worker_indexThe worker index.
Returns
The task identifier of the worker.

Definition at line 266 of file test-info.h.

◆ rtems_test_parallel_is_master_worker()

static bool rtems_test_parallel_is_master_worker ( size_t  worker_index)
inlinestatic

Indicates if a worker is the master worker.

The master worker is the thread that called rtems_test_parallel().

Parameters
[in]worker_indexThe worker index.
Return values
trueThis is the master worker.
falseOtherwise.

Definition at line 253 of file test-info.h.

◆ rtems_test_parallel_stop_job()

static bool rtems_test_parallel_stop_job ( const rtems_test_parallel_context ctx)
inlinestatic

Indicates if a job body should stop its work loop.

Parameters
[in]ctxThe parallel context.
Return values
trueThe job body should stop its work loop and return to the caller.
falseOtherwise.

Definition at line 236 of file test-info.h.

◆ rtems_test_printf()

int rtems_test_printf ( const char *  format,
  ... 
)

Prints via the RTEMS printer.

Returns
As specified by printf().

◆ rtems_test_run()

RTEMS_NO_RETURN void rtems_test_run ( rtems_task_argument  arg,
const RTEMS_TEST_STATE  state 
)

Runs the test cases of the RTEMS Test Framework using a default configuration in the context of a task.

The application must provide rtems_test_name.

Parameters
argis the task argument.
stateis the test state.

Definition at line 72 of file testrun.c.