Enhancements in the test engine, not finished.
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@10835 35acf78f-673a-0410-8e92-d51de3d6d3f4
This commit is contained in:
parent
6bbfd2126f
commit
eb6b6685f0
|
@ -103,7 +103,7 @@ include $(CHIBIOS)/os/hal/osal/rt/osal.mk
|
|||
include $(CHIBIOS)/os/rt/rt.mk
|
||||
include $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/mk/port_v7m.mk
|
||||
# Other files (optional).
|
||||
#include $(CHIBIOS)/test/rt/test.mk
|
||||
include $(CHIBIOS)/test/rt/test.mk
|
||||
|
||||
# Define linker script file here
|
||||
LDSCRIPT= $(STARTUPLD)/STM32F746xG.ld
|
||||
|
|
|
@ -16,7 +16,8 @@
|
|||
|
||||
#include "ch.h"
|
||||
#include "hal.h"
|
||||
//#include "ch_test.h"
|
||||
#include "ch_test.h"
|
||||
#include "rt_test_root.h"
|
||||
|
||||
/*
|
||||
* This is a periodic thread that does absolutely nothing except flashing
|
||||
|
@ -71,8 +72,8 @@ int main(void) {
|
|||
* sleeping in a loop and check the button state.
|
||||
*/
|
||||
while (true) {
|
||||
// if (palReadLine(LINE_BUTTON_USER))
|
||||
// test_execute((BaseSequentialStream *)&SD1);
|
||||
if (palReadLine(LINE_BUTTON_USER))
|
||||
test_execute((BaseSequentialStream *)&SD1, rt_test_suite);
|
||||
chThdSleepMilliseconds(2000);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -24,7 +24,6 @@
|
|||
|
||||
#include "hal.h"
|
||||
#include "ch_test.h"
|
||||
#include "test_root.h"
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module local definitions. */
|
||||
|
@ -134,7 +133,7 @@ bool _test_assert_time_window(systime_t start,
|
|||
systime_t end,
|
||||
const char *msg) {
|
||||
|
||||
return _test_assert(osalOsIsTimeWithinX(osalOsGetSystemTimeX(), start, end),
|
||||
return _test_assert(osalTimeIsInRangeX(osalOsGetSystemTimeX(), start, end),
|
||||
msg);
|
||||
}
|
||||
|
||||
|
@ -224,7 +223,7 @@ void test_emit_token_i(char token) {
|
|||
*
|
||||
* @api
|
||||
*/
|
||||
msg_t test_execute(BaseSequentialStream *stream) {
|
||||
msg_t test_execute(BaseSequentialStream *stream, testsuite_t ts) {
|
||||
int i, j;
|
||||
|
||||
test_chp = stream;
|
||||
|
@ -252,21 +251,21 @@ msg_t test_execute(BaseSequentialStream *stream) {
|
|||
|
||||
test_global_fail = false;
|
||||
i = 0;
|
||||
while (test_suite[i]) {
|
||||
while (ts[i] != NULL) {
|
||||
j = 0;
|
||||
while (test_suite[i][j]) {
|
||||
while (ts[i][j] != NULL) {
|
||||
print_line();
|
||||
test_print("--- Test Case ");
|
||||
test_printn(i + 1);
|
||||
test_print(".");
|
||||
test_printn(j + 1);
|
||||
test_print(" (");
|
||||
test_print(test_suite[i][j]->name);
|
||||
test_print(ts[i][j]->name);
|
||||
test_println(")");
|
||||
#if TEST_DELAY_BETWEEN_TESTS > 0
|
||||
osalThreadSleepMilliseconds(TEST_DELAY_BETWEEN_TESTS);
|
||||
#endif
|
||||
execute_test(test_suite[i][j]);
|
||||
execute_test(ts[i][j]);
|
||||
if (test_local_fail) {
|
||||
test_print("--- Result: FAILURE (#");
|
||||
test_printn(test_step);
|
||||
|
|
|
@ -65,6 +65,27 @@ typedef struct {
|
|||
void (*execute)(void); /**< @brief Test case execution function. */
|
||||
} testcase_t;
|
||||
|
||||
/**
|
||||
* @brief Structure representing a test sequence.
|
||||
*/
|
||||
typedef const struct {
|
||||
const char *name; /**< @brief Name of the test sequence. */
|
||||
testcase_t *cases; /**< @brief Test cases array. */
|
||||
} testsequence_t;
|
||||
|
||||
/**
|
||||
* @brief Type of a test suite.
|
||||
*/
|
||||
typedef const struct {
|
||||
const char *name; /**< @brief Name of the test suite. */
|
||||
testsequence_t *sequences; /**< @brief Test sequences array. */
|
||||
} ts_t;
|
||||
|
||||
/**
|
||||
* @brief Type of a test suite.
|
||||
*/
|
||||
typedef const testcase_t * const *testsuite_t[];
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Module macros. */
|
||||
/*===========================================================================*/
|
||||
|
@ -173,7 +194,7 @@ extern "C" {
|
|||
void test_println(const char *msgp);
|
||||
void test_emit_token(char token);
|
||||
void test_emit_token_i(char token);
|
||||
msg_t test_execute(BaseSequentialStream *stream);
|
||||
msg_t test_execute(BaseSequentialStream *stream, testsuite_t ts);
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
@ -182,12 +203,6 @@ extern "C" {
|
|||
/* Module inline functions. */
|
||||
/*===========================================================================*/
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Late inclusions. */
|
||||
/*===========================================================================*/
|
||||
|
||||
#include "test_root.h"
|
||||
|
||||
#endif /* CH_TEST_H */
|
||||
|
||||
/** @} */
|
||||
|
|
|
@ -36,8 +36,8 @@
|
|||
</toolChain>
|
||||
</folderInfo>
|
||||
<sourceEntries>
|
||||
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="components"/>
|
||||
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="source"/>
|
||||
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="components"/>
|
||||
</sourceEntries>
|
||||
</configuration>
|
||||
</storageModule>
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -36,8 +36,8 @@
|
|||
</toolChain>
|
||||
</folderInfo>
|
||||
<sourceEntries>
|
||||
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="components"/>
|
||||
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="source"/>
|
||||
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="components"/>
|
||||
</sourceEntries>
|
||||
</configuration>
|
||||
</storageModule>
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -21,30 +21,30 @@
|
|||
* through successive improvements.
|
||||
*
|
||||
* <h2>Test Sequences</h2>
|
||||
* - @subpage test_sequence_001
|
||||
* - @subpage test_sequence_002
|
||||
* - @subpage test_sequence_003
|
||||
* - @subpage test_sequence_004
|
||||
* - @subpage test_sequence_005
|
||||
* - @subpage test_sequence_006
|
||||
* - @subpage test_sequence_007
|
||||
* - @subpage test_sequence_008
|
||||
* - @subpage test_sequence_009
|
||||
* - @subpage test_sequence_010
|
||||
* - @subpage test_sequence_011
|
||||
* - @subpage test_sequence_012
|
||||
* - @subpage test_sequence_013
|
||||
* - @subpage rt_test_sequence_001
|
||||
* - @subpage rt_test_sequence_002
|
||||
* - @subpage rt_test_sequence_003
|
||||
* - @subpage rt_test_sequence_004
|
||||
* - @subpage rt_test_sequence_005
|
||||
* - @subpage rt_test_sequence_006
|
||||
* - @subpage rt_test_sequence_007
|
||||
* - @subpage rt_test_sequence_008
|
||||
* - @subpage rt_test_sequence_009
|
||||
* - @subpage rt_test_sequence_010
|
||||
* - @subpage rt_test_sequence_011
|
||||
* - @subpage rt_test_sequence_012
|
||||
* - @subpage rt_test_sequence_013
|
||||
* .
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file test_root.c
|
||||
* @file rt_test_root.c
|
||||
* @brief Test Suite root structures code.
|
||||
*/
|
||||
|
||||
#include "hal.h"
|
||||
#include "ch_test.h"
|
||||
#include "test_root.h"
|
||||
#include "rt_test_root.h"
|
||||
|
||||
#if !defined(__DOXYGEN__)
|
||||
|
||||
|
@ -55,36 +55,36 @@
|
|||
/**
|
||||
* @brief Array of all the test sequences.
|
||||
*/
|
||||
const testcase_t * const *test_suite[] = {
|
||||
test_sequence_001,
|
||||
test_sequence_002,
|
||||
test_sequence_003,
|
||||
test_sequence_004,
|
||||
const testcase_t * const *rt_test_suite[] = {
|
||||
rt_test_sequence_001,
|
||||
rt_test_sequence_002,
|
||||
rt_test_sequence_003,
|
||||
rt_test_sequence_004,
|
||||
#if (CH_CFG_USE_SEMAPHORES) || defined(__DOXYGEN__)
|
||||
test_sequence_005,
|
||||
rt_test_sequence_005,
|
||||
#endif
|
||||
#if (CH_CFG_USE_MUTEXES) || defined(__DOXYGEN__)
|
||||
test_sequence_006,
|
||||
rt_test_sequence_006,
|
||||
#endif
|
||||
#if (CH_CFG_USE_MESSAGES) || defined(__DOXYGEN__)
|
||||
test_sequence_007,
|
||||
rt_test_sequence_007,
|
||||
#endif
|
||||
#if (CH_CFG_USE_EVENTS) || defined(__DOXYGEN__)
|
||||
test_sequence_008,
|
||||
rt_test_sequence_008,
|
||||
#endif
|
||||
#if (CH_CFG_USE_MAILBOXES) || defined(__DOXYGEN__)
|
||||
test_sequence_009,
|
||||
rt_test_sequence_009,
|
||||
#endif
|
||||
#if (CH_CFG_USE_MEMPOOLS) || defined(__DOXYGEN__)
|
||||
test_sequence_010,
|
||||
rt_test_sequence_010,
|
||||
#endif
|
||||
#if (CH_CFG_USE_HEAP) || defined(__DOXYGEN__)
|
||||
test_sequence_011,
|
||||
rt_test_sequence_011,
|
||||
#endif
|
||||
#if (CH_CFG_USE_DYNAMIC) || defined(__DOXYGEN__)
|
||||
test_sequence_012,
|
||||
rt_test_sequence_012,
|
||||
#endif
|
||||
test_sequence_013,
|
||||
rt_test_sequence_013,
|
||||
NULL
|
||||
};
|
||||
|
|
@ -15,26 +15,26 @@
|
|||
*/
|
||||
|
||||
/**
|
||||
* @file test_root.h
|
||||
* @file rt_test_root.h
|
||||
* @brief Test Suite root structures header.
|
||||
*/
|
||||
|
||||
#ifndef TEST_ROOT_H
|
||||
#define TEST_ROOT_H
|
||||
#ifndef RT_TEST_ROOT_H
|
||||
#define RT_TEST_ROOT_H
|
||||
|
||||
#include "test_sequence_001.h"
|
||||
#include "test_sequence_002.h"
|
||||
#include "test_sequence_003.h"
|
||||
#include "test_sequence_004.h"
|
||||
#include "test_sequence_005.h"
|
||||
#include "test_sequence_006.h"
|
||||
#include "test_sequence_007.h"
|
||||
#include "test_sequence_008.h"
|
||||
#include "test_sequence_009.h"
|
||||
#include "test_sequence_010.h"
|
||||
#include "test_sequence_011.h"
|
||||
#include "test_sequence_012.h"
|
||||
#include "test_sequence_013.h"
|
||||
#include "rt_test_sequence_001.h"
|
||||
#include "rt_test_sequence_002.h"
|
||||
#include "rt_test_sequence_003.h"
|
||||
#include "rt_test_sequence_004.h"
|
||||
#include "rt_test_sequence_005.h"
|
||||
#include "rt_test_sequence_006.h"
|
||||
#include "rt_test_sequence_007.h"
|
||||
#include "rt_test_sequence_008.h"
|
||||
#include "rt_test_sequence_009.h"
|
||||
#include "rt_test_sequence_010.h"
|
||||
#include "rt_test_sequence_011.h"
|
||||
#include "rt_test_sequence_012.h"
|
||||
#include "rt_test_sequence_013.h"
|
||||
|
||||
#if !defined(__DOXYGEN__)
|
||||
|
||||
|
@ -42,7 +42,7 @@
|
|||
/* External declarations. */
|
||||
/*===========================================================================*/
|
||||
|
||||
extern const testcase_t * const *test_suite[];
|
||||
extern const testcase_t * const *rt_test_suite[];
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
|
@ -60,7 +60,7 @@ extern "C" {
|
|||
/*
|
||||
* Allowed delay in timeout checks.
|
||||
*/
|
||||
#define ALLOWED_DELAY MS2ST(2)
|
||||
#define ALLOWED_DELAY TIME_MS2I(2)
|
||||
|
||||
/*
|
||||
* Maximum number of test threads.
|
||||
|
@ -99,4 +99,4 @@ systime_t test_wait_tick(void);
|
|||
|
||||
#endif /* !defined(__DOXYGEN__) */
|
||||
|
||||
#endif /* TEST_ROOT_H */
|
||||
#endif /* RT_TEST_ROOT_H */
|
|
@ -16,23 +16,23 @@
|
|||
|
||||
#include "hal.h"
|
||||
#include "ch_test.h"
|
||||
#include "test_root.h"
|
||||
#include "rt_test_root.h"
|
||||
|
||||
/**
|
||||
* @file test_sequence_001.c
|
||||
* @file rt_test_sequence_001.c
|
||||
* @brief Test Sequence 001 code.
|
||||
*
|
||||
* @page test_sequence_001 [1] Information
|
||||
* @page rt_test_sequence_001 [1] Information
|
||||
*
|
||||
* File: @ref test_sequence_001.c
|
||||
* File: @ref rt_test_sequence_001.c
|
||||
*
|
||||
* <h2>Description</h2>
|
||||
* This sequence reports configuration and version information about
|
||||
* the RT kernel.
|
||||
*
|
||||
* <h2>Test Cases</h2>
|
||||
* - @subpage test_001_001
|
||||
* - @subpage test_001_002
|
||||
* - @subpage rt_test_001_001
|
||||
* - @subpage rt_test_001_002
|
||||
* .
|
||||
*/
|
||||
|
||||
|
@ -47,7 +47,7 @@
|
|||
****************************************************************************/
|
||||
|
||||
/**
|
||||
* @page test_001_001 [1.1] Kernel Info
|
||||
* @page rt_test_001_001 [1.1] Kernel Info
|
||||
*
|
||||
* <h2>Description</h2>
|
||||
* The version numbers are reported.
|
||||
|
@ -57,7 +57,7 @@
|
|||
* .
|
||||
*/
|
||||
|
||||
static void test_001_001_execute(void) {
|
||||
static void rt_test_001_001_execute(void) {
|
||||
|
||||
/* [1.1.1] Prints the version string.*/
|
||||
test_set_step(1);
|
||||
|
@ -80,15 +80,15 @@ static void test_001_001_execute(void) {
|
|||
}
|
||||
}
|
||||
|
||||
static const testcase_t test_001_001 = {
|
||||
static const testcase_t rt_test_001_001 = {
|
||||
"Kernel Info",
|
||||
NULL,
|
||||
NULL,
|
||||
test_001_001_execute
|
||||
rt_test_001_001_execute
|
||||
};
|
||||
|
||||
/**
|
||||
* @page test_001_002 [1.2] Kernel Settings
|
||||
* @page rt_test_001_002 [1.2] Kernel Settings
|
||||
*
|
||||
* <h2>Description</h2>
|
||||
* The static kernel settings are reported.
|
||||
|
@ -98,7 +98,7 @@ static const testcase_t test_001_001 = {
|
|||
* .
|
||||
*/
|
||||
|
||||
static void test_001_002_execute(void) {
|
||||
static void rt_test_001_002_execute(void) {
|
||||
|
||||
/* [1.2.1] Prints the configuration options settings.*/
|
||||
test_set_step(1);
|
||||
|
@ -208,11 +208,11 @@ static void test_001_002_execute(void) {
|
|||
}
|
||||
}
|
||||
|
||||
static const testcase_t test_001_002 = {
|
||||
static const testcase_t rt_test_001_002 = {
|
||||
"Kernel Settings",
|
||||
NULL,
|
||||
NULL,
|
||||
test_001_002_execute
|
||||
rt_test_001_002_execute
|
||||
};
|
||||
|
||||
/****************************************************************************
|
||||
|
@ -222,8 +222,8 @@ static const testcase_t test_001_002 = {
|
|||
/**
|
||||
* @brief Information.
|
||||
*/
|
||||
const testcase_t * const test_sequence_001[] = {
|
||||
&test_001_001,
|
||||
&test_001_002,
|
||||
const testcase_t * const rt_test_sequence_001[] = {
|
||||
&rt_test_001_001,
|
||||
&rt_test_001_002,
|
||||
NULL
|
||||
};
|
|
@ -15,13 +15,13 @@
|
|||
*/
|
||||
|
||||
/**
|
||||
* @file test_sequence_001.h
|
||||
* @file rt_test_sequence_001.h
|
||||
* @brief Test Sequence 001 header.
|
||||
*/
|
||||
|
||||
#ifndef TEST_SEQUENCE_001_H
|
||||
#define TEST_SEQUENCE_001_H
|
||||
#ifndef RT_TEST_SEQUENCE_001_H
|
||||
#define RT_TEST_SEQUENCE_001_H
|
||||
|
||||
extern const testcase_t * const test_sequence_001[];
|
||||
extern const testcase_t * const rt_test_sequence_001[];
|
||||
|
||||
#endif /* TEST_SEQUENCE_001_H */
|
||||
#endif /* RT_TEST_SEQUENCE_001_H */
|
|
@ -16,15 +16,15 @@
|
|||
|
||||
#include "hal.h"
|
||||
#include "ch_test.h"
|
||||
#include "test_root.h"
|
||||
#include "rt_test_root.h"
|
||||
|
||||
/**
|
||||
* @file test_sequence_002.c
|
||||
* @file rt_test_sequence_002.c
|
||||
* @brief Test Sequence 002 code.
|
||||
*
|
||||
* @page test_sequence_002 [2] System layer and port interface
|
||||
* @page rt_test_sequence_002 [2] System layer and port interface
|
||||
*
|
||||
* File: @ref test_sequence_002.c
|
||||
* File: @ref rt_test_sequence_002.c
|
||||
*
|
||||
* <h2>Description</h2>
|
||||
* The functionality of the system layer and port interface is tested.
|
||||
|
@ -34,10 +34,10 @@
|
|||
* (CH_DBG_STATE_CHECKER=TRUE).
|
||||
*
|
||||
* <h2>Test Cases</h2>
|
||||
* - @subpage test_002_001
|
||||
* - @subpage test_002_002
|
||||
* - @subpage test_002_003
|
||||
* - @subpage test_002_004
|
||||
* - @subpage rt_test_002_001
|
||||
* - @subpage rt_test_002_002
|
||||
* - @subpage rt_test_002_003
|
||||
* - @subpage rt_test_002_004
|
||||
* .
|
||||
*/
|
||||
|
||||
|
@ -67,7 +67,7 @@ static void vtcb(void *p) {
|
|||
****************************************************************************/
|
||||
|
||||
/**
|
||||
* @page test_002_001 [2.1] System integrity functionality
|
||||
* @page rt_test_002_001 [2.1] System integrity functionality
|
||||
*
|
||||
* <h2>Description</h2>
|
||||
* The system self-test functionality is invoked in order to make an
|
||||
|
@ -81,7 +81,7 @@ static void vtcb(void *p) {
|
|||
* .
|
||||
*/
|
||||
|
||||
static void test_002_001_execute(void) {
|
||||
static void rt_test_002_001_execute(void) {
|
||||
bool result;
|
||||
|
||||
/* [2.1.1] Testing Ready List integrity.*/
|
||||
|
@ -121,15 +121,15 @@ static void test_002_001_execute(void) {
|
|||
}
|
||||
}
|
||||
|
||||
static const testcase_t test_002_001 = {
|
||||
static const testcase_t rt_test_002_001 = {
|
||||
"System integrity functionality",
|
||||
NULL,
|
||||
NULL,
|
||||
test_002_001_execute
|
||||
rt_test_002_001_execute
|
||||
};
|
||||
|
||||
/**
|
||||
* @page test_002_002 [2.2] Critical zones functionality
|
||||
* @page rt_test_002_002 [2.2] Critical zones functionality
|
||||
*
|
||||
* <h2>Description</h2>
|
||||
* The critical zones API is invoked for coverage.
|
||||
|
@ -145,7 +145,7 @@ static const testcase_t test_002_001 = {
|
|||
* .
|
||||
*/
|
||||
|
||||
static void test_002_002_execute(void) {
|
||||
static void rt_test_002_002_execute(void) {
|
||||
syssts_t sts;
|
||||
virtual_timer_t vt;
|
||||
|
||||
|
@ -194,15 +194,15 @@ static void test_002_002_execute(void) {
|
|||
}
|
||||
}
|
||||
|
||||
static const testcase_t test_002_002 = {
|
||||
static const testcase_t rt_test_002_002 = {
|
||||
"Critical zones functionality",
|
||||
NULL,
|
||||
NULL,
|
||||
test_002_002_execute
|
||||
rt_test_002_002_execute
|
||||
};
|
||||
|
||||
/**
|
||||
* @page test_002_003 [2.3] Interrupts handling functionality
|
||||
* @page rt_test_002_003 [2.3] Interrupts handling functionality
|
||||
*
|
||||
* <h2>Description</h2>
|
||||
* The interrupts handling API is invoked for coverage.
|
||||
|
@ -212,7 +212,7 @@ static const testcase_t test_002_002 = {
|
|||
* .
|
||||
*/
|
||||
|
||||
static void test_002_003_execute(void) {
|
||||
static void rt_test_002_003_execute(void) {
|
||||
|
||||
/* [2.3.1] Testing chSysSuspend(), chSysDisable() and
|
||||
chSysEnable().*/
|
||||
|
@ -225,15 +225,15 @@ static void test_002_003_execute(void) {
|
|||
}
|
||||
}
|
||||
|
||||
static const testcase_t test_002_003 = {
|
||||
static const testcase_t rt_test_002_003 = {
|
||||
"Interrupts handling functionality",
|
||||
NULL,
|
||||
NULL,
|
||||
test_002_003_execute
|
||||
rt_test_002_003_execute
|
||||
};
|
||||
|
||||
/**
|
||||
* @page test_002_004 [2.4] System Tick Counter functionality
|
||||
* @page rt_test_002_004 [2.4] System Tick Counter functionality
|
||||
*
|
||||
* <h2>Description</h2>
|
||||
* The functionality of the API @p chVTGetSystemTimeX() is tested.
|
||||
|
@ -244,7 +244,7 @@ static const testcase_t test_002_003 = {
|
|||
* .
|
||||
*/
|
||||
|
||||
static void test_002_004_execute(void) {
|
||||
static void rt_test_002_004_execute(void) {
|
||||
|
||||
/* [2.4.1] A System Tick Counter increment is expected, the test
|
||||
simply hangs if it does not happen.*/
|
||||
|
@ -259,11 +259,11 @@ static void test_002_004_execute(void) {
|
|||
}
|
||||
}
|
||||
|
||||
static const testcase_t test_002_004 = {
|
||||
static const testcase_t rt_test_002_004 = {
|
||||
"System Tick Counter functionality",
|
||||
NULL,
|
||||
NULL,
|
||||
test_002_004_execute
|
||||
rt_test_002_004_execute
|
||||
};
|
||||
|
||||
/****************************************************************************
|
||||
|
@ -273,10 +273,10 @@ static const testcase_t test_002_004 = {
|
|||
/**
|
||||
* @brief System layer and port interface.
|
||||
*/
|
||||
const testcase_t * const test_sequence_002[] = {
|
||||
&test_002_001,
|
||||
&test_002_002,
|
||||
&test_002_003,
|
||||
&test_002_004,
|
||||
const testcase_t * const rt_test_sequence_002[] = {
|
||||
&rt_test_002_001,
|
||||
&rt_test_002_002,
|
||||
&rt_test_002_003,
|
||||
&rt_test_002_004,
|
||||
NULL
|
||||
};
|
|
@ -15,13 +15,13 @@
|
|||
*/
|
||||
|
||||
/**
|
||||
* @file test_sequence_002.h
|
||||
* @file rt_test_sequence_002.h
|
||||
* @brief Test Sequence 002 header.
|
||||
*/
|
||||
|
||||
#ifndef TEST_SEQUENCE_002_H
|
||||
#define TEST_SEQUENCE_002_H
|
||||
#ifndef RT_TEST_SEQUENCE_002_H
|
||||
#define RT_TEST_SEQUENCE_002_H
|
||||
|
||||
extern const testcase_t * const test_sequence_002[];
|
||||
extern const testcase_t * const rt_test_sequence_002[];
|
||||
|
||||
#endif /* TEST_SEQUENCE_002_H */
|
||||
#endif /* RT_TEST_SEQUENCE_002_H */
|
|
@ -16,25 +16,25 @@
|
|||
|
||||
#include "hal.h"
|
||||
#include "ch_test.h"
|
||||
#include "test_root.h"
|
||||
#include "rt_test_root.h"
|
||||
|
||||
/**
|
||||
* @file test_sequence_003.c
|
||||
* @file rt_test_sequence_003.c
|
||||
* @brief Test Sequence 003 code.
|
||||
*
|
||||
* @page test_sequence_003 [3] Threads Functionality
|
||||
* @page rt_test_sequence_003 [3] Threads Functionality
|
||||
*
|
||||
* File: @ref test_sequence_003.c
|
||||
* File: @ref rt_test_sequence_003.c
|
||||
*
|
||||
* <h2>Description</h2>
|
||||
* This sequence tests the ChibiOS/RT functionalities related to
|
||||
* threading.
|
||||
*
|
||||
* <h2>Test Cases</h2>
|
||||
* - @subpage test_003_001
|
||||
* - @subpage test_003_002
|
||||
* - @subpage test_003_003
|
||||
* - @subpage test_003_004
|
||||
* - @subpage rt_test_003_001
|
||||
* - @subpage rt_test_003_002
|
||||
* - @subpage rt_test_003_003
|
||||
* - @subpage rt_test_003_004
|
||||
* .
|
||||
*/
|
||||
|
||||
|
@ -52,7 +52,7 @@ static THD_FUNCTION(thread, p) {
|
|||
****************************************************************************/
|
||||
|
||||
/**
|
||||
* @page test_003_001 [3.1] Thread Sleep functionality
|
||||
* @page rt_test_003_001 [3.1] Thread Sleep functionality
|
||||
*
|
||||
* <h2>Description</h2>
|
||||
* The functionality of @p chThdSleep() and derivatives is tested.
|
||||
|
@ -74,7 +74,7 @@ static THD_FUNCTION(thread, p) {
|
|||
* .
|
||||
*/
|
||||
|
||||
static void test_003_001_execute(void) {
|
||||
static void rt_test_003_001_execute(void) {
|
||||
systime_t time;
|
||||
|
||||
/* [3.1.1] The current system time is read then a sleep is performed
|
||||
|
@ -96,8 +96,8 @@ static void test_003_001_execute(void) {
|
|||
{
|
||||
time = chVTGetSystemTimeX();
|
||||
chThdSleepMicroseconds(100000);
|
||||
test_assert_time_window(time + US2ST(100000),
|
||||
time + US2ST(100000) + CH_CFG_ST_TIMEDELTA + 1,
|
||||
test_assert_time_window(time + TIME_US2I(100000),
|
||||
time + TIME_US2I(100000) + CH_CFG_ST_TIMEDELTA + 1,
|
||||
"out of time window");
|
||||
}
|
||||
|
||||
|
@ -108,8 +108,8 @@ static void test_003_001_execute(void) {
|
|||
{
|
||||
time = chVTGetSystemTimeX();
|
||||
chThdSleepMilliseconds(100);
|
||||
test_assert_time_window(time + MS2ST(100),
|
||||
time + MS2ST(100) + CH_CFG_ST_TIMEDELTA + 1,
|
||||
test_assert_time_window(time + TIME_MS2I(100),
|
||||
time + TIME_MS2I(100) + CH_CFG_ST_TIMEDELTA + 1,
|
||||
"out of time window");
|
||||
}
|
||||
|
||||
|
@ -119,8 +119,8 @@ static void test_003_001_execute(void) {
|
|||
{
|
||||
time = chVTGetSystemTimeX();
|
||||
chThdSleepSeconds(1);
|
||||
test_assert_time_window(time + S2ST(1),
|
||||
time + S2ST(1) + CH_CFG_ST_TIMEDELTA + 1,
|
||||
test_assert_time_window(time + TIME_S2I(1),
|
||||
time + TIME_S2I(1) + CH_CFG_ST_TIMEDELTA + 1,
|
||||
"out of time window");
|
||||
}
|
||||
|
||||
|
@ -136,15 +136,15 @@ static void test_003_001_execute(void) {
|
|||
}
|
||||
}
|
||||
|
||||
static const testcase_t test_003_001 = {
|
||||
static const testcase_t rt_test_003_001 = {
|
||||
"Thread Sleep functionality",
|
||||
NULL,
|
||||
NULL,
|
||||
test_003_001_execute
|
||||
rt_test_003_001_execute
|
||||
};
|
||||
|
||||
/**
|
||||
* @page test_003_002 [3.2] Ready List functionality, threads priority order
|
||||
* @page rt_test_003_002 [3.2] Ready List functionality, threads priority order
|
||||
*
|
||||
* <h2>Description</h2>
|
||||
* Five threads, are enqueued in the ready list and atomically
|
||||
|
@ -161,7 +161,7 @@ static const testcase_t test_003_001 = {
|
|||
* .
|
||||
*/
|
||||
|
||||
static void test_003_002_execute(void) {
|
||||
static void rt_test_003_002_execute(void) {
|
||||
|
||||
/* [3.2.1] Creating 5 threads with increasing priority, execution
|
||||
sequence is tested.*/
|
||||
|
@ -203,15 +203,15 @@ static void test_003_002_execute(void) {
|
|||
}
|
||||
}
|
||||
|
||||
static const testcase_t test_003_002 = {
|
||||
static const testcase_t rt_test_003_002 = {
|
||||
"Ready List functionality, threads priority order",
|
||||
NULL,
|
||||
NULL,
|
||||
test_003_002_execute
|
||||
rt_test_003_002_execute
|
||||
};
|
||||
|
||||
/**
|
||||
* @page test_003_003 [3.3] Priority change test
|
||||
* @page rt_test_003_003 [3.3] Priority change test
|
||||
*
|
||||
* <h2>Description</h2>
|
||||
* A series of priority changes are performed on the current thread in
|
||||
|
@ -225,7 +225,7 @@ static const testcase_t test_003_002 = {
|
|||
* .
|
||||
*/
|
||||
|
||||
static void test_003_003_execute(void) {
|
||||
static void rt_test_003_003_execute(void) {
|
||||
tprio_t prio, p1;
|
||||
|
||||
/* [3.3.1] Thread priority is increased by one then a check is
|
||||
|
@ -248,16 +248,16 @@ static void test_003_003_execute(void) {
|
|||
}
|
||||
}
|
||||
|
||||
static const testcase_t test_003_003 = {
|
||||
static const testcase_t rt_test_003_003 = {
|
||||
"Priority change test",
|
||||
NULL,
|
||||
NULL,
|
||||
test_003_003_execute
|
||||
rt_test_003_003_execute
|
||||
};
|
||||
|
||||
#if (CH_CFG_USE_MUTEXES) || defined(__DOXYGEN__)
|
||||
/**
|
||||
* @page test_003_004 [3.4] Priority change test with Priority Inheritance
|
||||
* @page rt_test_003_004 [3.4] Priority change test with Priority Inheritance
|
||||
*
|
||||
* <h2>Description</h2>
|
||||
* A series of priority changes are performed on the current thread in
|
||||
|
@ -278,7 +278,7 @@ static const testcase_t test_003_003 = {
|
|||
* .
|
||||
*/
|
||||
|
||||
static void test_003_004_execute(void) {
|
||||
static void rt_test_003_004_execute(void) {
|
||||
tprio_t prio, p1;
|
||||
|
||||
/* [3.4.1] Simulating a priority boost situation (prio > realprio).*/
|
||||
|
@ -318,11 +318,11 @@ static void test_003_004_execute(void) {
|
|||
}
|
||||
}
|
||||
|
||||
static const testcase_t test_003_004 = {
|
||||
static const testcase_t rt_test_003_004 = {
|
||||
"Priority change test with Priority Inheritance",
|
||||
NULL,
|
||||
NULL,
|
||||
test_003_004_execute
|
||||
rt_test_003_004_execute
|
||||
};
|
||||
#endif /* CH_CFG_USE_MUTEXES */
|
||||
|
||||
|
@ -333,12 +333,12 @@ static const testcase_t test_003_004 = {
|
|||
/**
|
||||
* @brief Threads Functionality.
|
||||
*/
|
||||
const testcase_t * const test_sequence_003[] = {
|
||||
&test_003_001,
|
||||
&test_003_002,
|
||||
&test_003_003,
|
||||
const testcase_t * const rt_test_sequence_003[] = {
|
||||
&rt_test_003_001,
|
||||
&rt_test_003_002,
|
||||
&rt_test_003_003,
|
||||
#if (CH_CFG_USE_MUTEXES) || defined(__DOXYGEN__)
|
||||
&test_003_004,
|
||||
&rt_test_003_004,
|
||||
#endif
|
||||
NULL
|
||||
};
|
|
@ -15,13 +15,13 @@
|
|||
*/
|
||||
|
||||
/**
|
||||
* @file test_sequence_003.h
|
||||
* @file rt_test_sequence_003.h
|
||||
* @brief Test Sequence 003 header.
|
||||
*/
|
||||
|
||||
#ifndef TEST_SEQUENCE_003_H
|
||||
#define TEST_SEQUENCE_003_H
|
||||
#ifndef RT_TEST_SEQUENCE_003_H
|
||||
#define RT_TEST_SEQUENCE_003_H
|
||||
|
||||
extern const testcase_t * const test_sequence_003[];
|
||||
extern const testcase_t * const rt_test_sequence_003[];
|
||||
|
||||
#endif /* TEST_SEQUENCE_003_H */
|
||||
#endif /* RT_TEST_SEQUENCE_003_H */
|
|
@ -16,22 +16,22 @@
|
|||
|
||||
#include "hal.h"
|
||||
#include "ch_test.h"
|
||||
#include "test_root.h"
|
||||
#include "rt_test_root.h"
|
||||
|
||||
/**
|
||||
* @file test_sequence_004.c
|
||||
* @file rt_test_sequence_004.c
|
||||
* @brief Test Sequence 004 code.
|
||||
*
|
||||
* @page test_sequence_004 [4] Suspend/Resume
|
||||
* @page rt_test_sequence_004 [4] Suspend/Resume
|
||||
*
|
||||
* File: @ref test_sequence_004.c
|
||||
* File: @ref rt_test_sequence_004.c
|
||||
*
|
||||
* <h2>Description</h2>
|
||||
* This sequence tests the ChibiOS/RT functionalities related to
|
||||
* threads suspend/resume.
|
||||
*
|
||||
* <h2>Test Cases</h2>
|
||||
* - @subpage test_004_001
|
||||
* - @subpage rt_test_004_001
|
||||
* .
|
||||
*/
|
||||
|
||||
|
@ -55,7 +55,7 @@ static THD_FUNCTION(thread1, p) {
|
|||
****************************************************************************/
|
||||
|
||||
/**
|
||||
* @page test_004_001 [4.1] Suspend and Resume functionality
|
||||
* @page rt_test_004_001 [4.1] Suspend and Resume functionality
|
||||
*
|
||||
* <h2>Description</h2>
|
||||
* The functionality of chThdSuspendTimeoutS() and chThdResumeI() is
|
||||
|
@ -71,11 +71,11 @@ static THD_FUNCTION(thread1, p) {
|
|||
* .
|
||||
*/
|
||||
|
||||
static void test_004_001_setup(void) {
|
||||
static void rt_test_004_001_setup(void) {
|
||||
tr1 = NULL;
|
||||
}
|
||||
|
||||
static void test_004_001_execute(void) {
|
||||
static void rt_test_004_001_execute(void) {
|
||||
systime_t time;
|
||||
msg_t msg;
|
||||
|
||||
|
@ -100,21 +100,21 @@ static void test_004_001_execute(void) {
|
|||
{
|
||||
chSysLock();
|
||||
time = chVTGetSystemTimeX();
|
||||
msg = chThdSuspendTimeoutS(&tr1, MS2ST(1000));
|
||||
msg = chThdSuspendTimeoutS(&tr1, TIME_MS2I(1000));
|
||||
chSysUnlock();
|
||||
test_assert_time_window(time + MS2ST(1000),
|
||||
time + MS2ST(1000) + CH_CFG_ST_TIMEDELTA + 1,
|
||||
test_assert_time_window(time + TIME_MS2I(1000),
|
||||
time + TIME_MS2I(1000) + CH_CFG_ST_TIMEDELTA + 1,
|
||||
"out of time window");
|
||||
test_assert(NULL == tr1, "not NULL");
|
||||
test_assert(MSG_TIMEOUT == msg, "wrong returned message");
|
||||
}
|
||||
}
|
||||
|
||||
static const testcase_t test_004_001 = {
|
||||
static const testcase_t rt_test_004_001 = {
|
||||
"Suspend and Resume functionality",
|
||||
test_004_001_setup,
|
||||
rt_test_004_001_setup,
|
||||
NULL,
|
||||
test_004_001_execute
|
||||
rt_test_004_001_execute
|
||||
};
|
||||
|
||||
/****************************************************************************
|
||||
|
@ -124,7 +124,7 @@ static const testcase_t test_004_001 = {
|
|||
/**
|
||||
* @brief Suspend/Resume.
|
||||
*/
|
||||
const testcase_t * const test_sequence_004[] = {
|
||||
&test_004_001,
|
||||
const testcase_t * const rt_test_sequence_004[] = {
|
||||
&rt_test_004_001,
|
||||
NULL
|
||||
};
|
|
@ -15,13 +15,13 @@
|
|||
*/
|
||||
|
||||
/**
|
||||
* @file test_sequence_004.h
|
||||
* @file rt_test_sequence_004.h
|
||||
* @brief Test Sequence 004 header.
|
||||
*/
|
||||
|
||||
#ifndef TEST_SEQUENCE_004_H
|
||||
#define TEST_SEQUENCE_004_H
|
||||
#ifndef RT_TEST_SEQUENCE_004_H
|
||||
#define RT_TEST_SEQUENCE_004_H
|
||||
|
||||
extern const testcase_t * const test_sequence_004[];
|
||||
extern const testcase_t * const rt_test_sequence_004[];
|
||||
|
||||
#endif /* TEST_SEQUENCE_004_H */
|
||||
#endif /* RT_TEST_SEQUENCE_004_H */
|
|
@ -16,15 +16,15 @@
|
|||
|
||||
#include "hal.h"
|
||||
#include "ch_test.h"
|
||||
#include "test_root.h"
|
||||
#include "rt_test_root.h"
|
||||
|
||||
/**
|
||||
* @file test_sequence_005.c
|
||||
* @file rt_test_sequence_005.c
|
||||
* @brief Test Sequence 005 code.
|
||||
*
|
||||
* @page test_sequence_005 [5] Counter and Binary Semaphores
|
||||
* @page rt_test_sequence_005 [5] Counter and Binary Semaphores
|
||||
*
|
||||
* File: @ref test_sequence_005.c
|
||||
* File: @ref rt_test_sequence_005.c
|
||||
*
|
||||
* <h2>Description</h2>
|
||||
* This sequence tests the ChibiOS/RT functionalities related to
|
||||
|
@ -37,12 +37,12 @@
|
|||
* .
|
||||
*
|
||||
* <h2>Test Cases</h2>
|
||||
* - @subpage test_005_001
|
||||
* - @subpage test_005_002
|
||||
* - @subpage test_005_003
|
||||
* - @subpage test_005_004
|
||||
* - @subpage test_005_005
|
||||
* - @subpage test_005_006
|
||||
* - @subpage rt_test_005_001
|
||||
* - @subpage rt_test_005_002
|
||||
* - @subpage rt_test_005_003
|
||||
* - @subpage rt_test_005_004
|
||||
* - @subpage rt_test_005_005
|
||||
* - @subpage rt_test_005_006
|
||||
* .
|
||||
*/
|
||||
|
||||
|
@ -89,7 +89,7 @@ static THD_FUNCTION(thread4, p) {
|
|||
****************************************************************************/
|
||||
|
||||
/**
|
||||
* @page test_005_001 [5.1] Semaphore primitives, no state change
|
||||
* @page rt_test_005_001 [5.1] Semaphore primitives, no state change
|
||||
*
|
||||
* <h2>Description</h2>
|
||||
* Wait, Signal and Reset primitives are tested. The testing thread
|
||||
|
@ -105,15 +105,15 @@ static THD_FUNCTION(thread4, p) {
|
|||
* .
|
||||
*/
|
||||
|
||||
static void test_005_001_setup(void) {
|
||||
static void rt_test_005_001_setup(void) {
|
||||
chSemObjectInit(&sem1, 1);
|
||||
}
|
||||
|
||||
static void test_005_001_teardown(void) {
|
||||
static void rt_test_005_001_teardown(void) {
|
||||
chSemReset(&sem1, 0);
|
||||
}
|
||||
|
||||
static void test_005_001_execute(void) {
|
||||
static void rt_test_005_001_execute(void) {
|
||||
|
||||
/* [5.1.1] The function chSemWait() is invoked, after return the
|
||||
counter and the returned message are tested.*/
|
||||
|
@ -143,15 +143,15 @@ static void test_005_001_execute(void) {
|
|||
}
|
||||
}
|
||||
|
||||
static const testcase_t test_005_001 = {
|
||||
static const testcase_t rt_test_005_001 = {
|
||||
"Semaphore primitives, no state change",
|
||||
test_005_001_setup,
|
||||
test_005_001_teardown,
|
||||
test_005_001_execute
|
||||
rt_test_005_001_setup,
|
||||
rt_test_005_001_teardown,
|
||||
rt_test_005_001_execute
|
||||
};
|
||||
|
||||
/**
|
||||
* @page test_005_002 [5.2] Semaphore enqueuing test
|
||||
* @page rt_test_005_002 [5.2] Semaphore enqueuing test
|
||||
*
|
||||
* <h2>Description</h2>
|
||||
* Five threads with randomized priorities are enqueued to a semaphore
|
||||
|
@ -168,11 +168,11 @@ static const testcase_t test_005_001 = {
|
|||
* .
|
||||
*/
|
||||
|
||||
static void test_005_002_setup(void) {
|
||||
static void rt_test_005_002_setup(void) {
|
||||
chSemObjectInit(&sem1, 0);
|
||||
}
|
||||
|
||||
static void test_005_002_execute(void) {
|
||||
static void rt_test_005_002_execute(void) {
|
||||
|
||||
/* [5.2.1] Five threads are created with mixed priority levels (not
|
||||
increasing nor decreasing). Threads enqueue on a semaphore
|
||||
|
@ -204,15 +204,15 @@ static void test_005_002_execute(void) {
|
|||
}
|
||||
}
|
||||
|
||||
static const testcase_t test_005_002 = {
|
||||
static const testcase_t rt_test_005_002 = {
|
||||
"Semaphore enqueuing test",
|
||||
test_005_002_setup,
|
||||
rt_test_005_002_setup,
|
||||
NULL,
|
||||
test_005_002_execute
|
||||
rt_test_005_002_execute
|
||||
};
|
||||
|
||||
/**
|
||||
* @page test_005_003 [5.3] Semaphore timeout test
|
||||
* @page rt_test_005_003 [5.3] Semaphore timeout test
|
||||
*
|
||||
* <h2>Description</h2>
|
||||
* The three possible semaphore waiting modes (do not wait, wait with
|
||||
|
@ -228,11 +228,11 @@ static const testcase_t test_005_002 = {
|
|||
* .
|
||||
*/
|
||||
|
||||
static void test_005_003_setup(void) {
|
||||
static void rt_test_005_003_setup(void) {
|
||||
chSemObjectInit(&sem1, 0);
|
||||
}
|
||||
|
||||
static void test_005_003_execute(void) {
|
||||
static void rt_test_005_003_execute(void) {
|
||||
unsigned i;
|
||||
systime_t target_time;
|
||||
msg_t msg;
|
||||
|
@ -251,7 +251,7 @@ static void test_005_003_execute(void) {
|
|||
{
|
||||
threads[0] = chThdCreateStatic(wa[0], WA_SIZE, chThdGetPriorityX() - 1,
|
||||
thread2, 0);
|
||||
msg = chSemWaitTimeout(&sem1, MS2ST(500));
|
||||
msg = chSemWaitTimeout(&sem1, TIME_MS2I(500));
|
||||
test_wait_threads();
|
||||
test_assert(msg == MSG_OK, "wrong wake-up message");
|
||||
test_assert(queue_isempty(&sem1.queue), "queue not empty");
|
||||
|
@ -261,10 +261,10 @@ static void test_005_003_execute(void) {
|
|||
/* [5.3.3] Testing timeout condition.*/
|
||||
test_set_step(3);
|
||||
{
|
||||
target_time = test_wait_tick() + MS2ST(5 * 50);
|
||||
target_time = test_wait_tick() + TIME_MS2I(5 * 50);
|
||||
for (i = 0; i < 5; i++) {
|
||||
test_emit_token('A' + i);
|
||||
msg = chSemWaitTimeout(&sem1, MS2ST(50));
|
||||
msg = chSemWaitTimeout(&sem1, TIME_MS2I(50));
|
||||
test_assert(msg == MSG_TIMEOUT, "wrong wake-up message");
|
||||
test_assert(queue_isempty(&sem1.queue), "queue not empty");
|
||||
test_assert(sem1.cnt == 0, "counter not zero");
|
||||
|
@ -275,15 +275,15 @@ static void test_005_003_execute(void) {
|
|||
}
|
||||
}
|
||||
|
||||
static const testcase_t test_005_003 = {
|
||||
static const testcase_t rt_test_005_003 = {
|
||||
"Semaphore timeout test",
|
||||
test_005_003_setup,
|
||||
rt_test_005_003_setup,
|
||||
NULL,
|
||||
test_005_003_execute
|
||||
rt_test_005_003_execute
|
||||
};
|
||||
|
||||
/**
|
||||
* @page test_005_004 [5.4] Testing chSemAddCounterI() functionality
|
||||
* @page rt_test_005_004 [5.4] Testing chSemAddCounterI() functionality
|
||||
*
|
||||
* <h2>Description</h2>
|
||||
* The functon is tested by waking up a thread then the semaphore
|
||||
|
@ -296,11 +296,11 @@ static const testcase_t test_005_003 = {
|
|||
* .
|
||||
*/
|
||||
|
||||
static void test_005_004_setup(void) {
|
||||
static void rt_test_005_004_setup(void) {
|
||||
chSemObjectInit(&sem1, 0);
|
||||
}
|
||||
|
||||
static void test_005_004_execute(void) {
|
||||
static void rt_test_005_004_execute(void) {
|
||||
|
||||
/* [5.4.1] A thread is created, it goes to wait on the semaphore.*/
|
||||
test_set_step(1);
|
||||
|
@ -322,15 +322,15 @@ static void test_005_004_execute(void) {
|
|||
}
|
||||
}
|
||||
|
||||
static const testcase_t test_005_004 = {
|
||||
static const testcase_t rt_test_005_004 = {
|
||||
"Testing chSemAddCounterI() functionality",
|
||||
test_005_004_setup,
|
||||
rt_test_005_004_setup,
|
||||
NULL,
|
||||
test_005_004_execute
|
||||
rt_test_005_004_execute
|
||||
};
|
||||
|
||||
/**
|
||||
* @page test_005_005 [5.5] Testing chSemWaitSignal() functionality
|
||||
* @page rt_test_005_005 [5.5] Testing chSemWaitSignal() functionality
|
||||
*
|
||||
* <h2>Description</h2>
|
||||
* This test case explicitly addresses the @p chSemWaitSignal()
|
||||
|
@ -352,15 +352,15 @@ static const testcase_t test_005_004 = {
|
|||
* .
|
||||
*/
|
||||
|
||||
static void test_005_005_setup(void) {
|
||||
static void rt_test_005_005_setup(void) {
|
||||
chSemObjectInit(&sem1, 0);
|
||||
}
|
||||
|
||||
static void test_005_005_teardown(void) {
|
||||
static void rt_test_005_005_teardown(void) {
|
||||
test_wait_threads();
|
||||
}
|
||||
|
||||
static void test_005_005_execute(void) {
|
||||
static void rt_test_005_005_execute(void) {
|
||||
|
||||
/* [5.5.1] An higher priority thread is created that performs
|
||||
non-atomical wait and signal operations on a semaphore.*/
|
||||
|
@ -390,15 +390,15 @@ static void test_005_005_execute(void) {
|
|||
}
|
||||
}
|
||||
|
||||
static const testcase_t test_005_005 = {
|
||||
static const testcase_t rt_test_005_005 = {
|
||||
"Testing chSemWaitSignal() functionality",
|
||||
test_005_005_setup,
|
||||
test_005_005_teardown,
|
||||
test_005_005_execute
|
||||
rt_test_005_005_setup,
|
||||
rt_test_005_005_teardown,
|
||||
rt_test_005_005_execute
|
||||
};
|
||||
|
||||
/**
|
||||
* @page test_005_006 [5.6] Testing Binary Semaphores special case
|
||||
* @page rt_test_005_006 [5.6] Testing Binary Semaphores special case
|
||||
*
|
||||
* <h2>Description</h2>
|
||||
* This test case tests the binary semaphores functionality. The test
|
||||
|
@ -421,11 +421,11 @@ static const testcase_t test_005_005 = {
|
|||
* .
|
||||
*/
|
||||
|
||||
static void test_005_006_teardown(void) {
|
||||
static void rt_test_005_006_teardown(void) {
|
||||
test_wait_threads();
|
||||
}
|
||||
|
||||
static void test_005_006_execute(void) {
|
||||
static void rt_test_005_006_execute(void) {
|
||||
binary_semaphore_t bsem;
|
||||
msg_t msg;
|
||||
|
||||
|
@ -481,11 +481,11 @@ static void test_005_006_execute(void) {
|
|||
}
|
||||
}
|
||||
|
||||
static const testcase_t test_005_006 = {
|
||||
static const testcase_t rt_test_005_006 = {
|
||||
"Testing Binary Semaphores special case",
|
||||
NULL,
|
||||
test_005_006_teardown,
|
||||
test_005_006_execute
|
||||
rt_test_005_006_teardown,
|
||||
rt_test_005_006_execute
|
||||
};
|
||||
|
||||
/****************************************************************************
|
||||
|
@ -495,13 +495,13 @@ static const testcase_t test_005_006 = {
|
|||
/**
|
||||
* @brief Counter and Binary Semaphores.
|
||||
*/
|
||||
const testcase_t * const test_sequence_005[] = {
|
||||
&test_005_001,
|
||||
&test_005_002,
|
||||
&test_005_003,
|
||||
&test_005_004,
|
||||
&test_005_005,
|
||||
&test_005_006,
|
||||
const testcase_t * const rt_test_sequence_005[] = {
|
||||
&rt_test_005_001,
|
||||
&rt_test_005_002,
|
||||
&rt_test_005_003,
|
||||
&rt_test_005_004,
|
||||
&rt_test_005_005,
|
||||
&rt_test_005_006,
|
||||
NULL
|
||||
};
|
||||
|
|
@ -15,13 +15,13 @@
|
|||
*/
|
||||
|
||||
/**
|
||||
* @file test_sequence_005.h
|
||||
* @file rt_test_sequence_005.h
|
||||
* @brief Test Sequence 005 header.
|
||||
*/
|
||||
|
||||
#ifndef TEST_SEQUENCE_005_H
|
||||
#define TEST_SEQUENCE_005_H
|
||||
#ifndef RT_TEST_SEQUENCE_005_H
|
||||
#define RT_TEST_SEQUENCE_005_H
|
||||
|
||||
extern const testcase_t * const test_sequence_005[];
|
||||
extern const testcase_t * const rt_test_sequence_005[];
|
||||
|
||||
#endif /* TEST_SEQUENCE_005_H */
|
||||
#endif /* RT_TEST_SEQUENCE_005_H */
|
|
@ -16,15 +16,15 @@
|
|||
|
||||
#include "hal.h"
|
||||
#include "ch_test.h"
|
||||
#include "test_root.h"
|
||||
#include "rt_test_root.h"
|
||||
|
||||
/**
|
||||
* @file test_sequence_006.c
|
||||
* @file rt_test_sequence_006.c
|
||||
* @brief Test Sequence 006 code.
|
||||
*
|
||||
* @page test_sequence_006 [6] Mutexes, Condition Variables and Priority Inheritance
|
||||
* @page rt_test_sequence_006 [6] Mutexes, Condition Variables and Priority Inheritance
|
||||
*
|
||||
* File: @ref test_sequence_006.c
|
||||
* File: @ref rt_test_sequence_006.c
|
||||
*
|
||||
* <h2>Description</h2>
|
||||
* This sequence tests the ChibiOS/RT functionalities related to
|
||||
|
@ -37,15 +37,15 @@
|
|||
* .
|
||||
*
|
||||
* <h2>Test Cases</h2>
|
||||
* - @subpage test_006_001
|
||||
* - @subpage test_006_002
|
||||
* - @subpage test_006_003
|
||||
* - @subpage test_006_004
|
||||
* - @subpage test_006_005
|
||||
* - @subpage test_006_006
|
||||
* - @subpage test_006_007
|
||||
* - @subpage test_006_008
|
||||
* - @subpage test_006_009
|
||||
* - @subpage rt_test_006_001
|
||||
* - @subpage rt_test_006_002
|
||||
* - @subpage rt_test_006_003
|
||||
* - @subpage rt_test_006_004
|
||||
* - @subpage rt_test_006_005
|
||||
* - @subpage rt_test_006_006
|
||||
* - @subpage rt_test_006_007
|
||||
* - @subpage rt_test_006_008
|
||||
* - @subpage rt_test_006_009
|
||||
* .
|
||||
*/
|
||||
|
||||
|
@ -72,7 +72,7 @@ void test_cpu_pulse(unsigned duration) {
|
|||
systime_t start, end, now;
|
||||
|
||||
start = chThdGetTicksX(chThdGetSelfX());
|
||||
end = start + MS2ST(duration);
|
||||
end = start + TIME_MS2I(duration);
|
||||
do {
|
||||
now = chThdGetTicksX(chThdGetSelfX());
|
||||
#if defined(SIMULATOR)
|
||||
|
@ -234,7 +234,7 @@ static THD_FUNCTION(thread9, p) {
|
|||
****************************************************************************/
|
||||
|
||||
/**
|
||||
* @page test_006_001 [6.1] Priority enqueuing test
|
||||
* @page rt_test_006_001 [6.1] Priority enqueuing test
|
||||
*
|
||||
* <h2>Description</h2>
|
||||
* Five threads, with increasing priority, are enqueued on a locked
|
||||
|
@ -253,11 +253,11 @@ static THD_FUNCTION(thread9, p) {
|
|||
* .
|
||||
*/
|
||||
|
||||
static void test_006_001_setup(void) {
|
||||
static void rt_test_006_001_setup(void) {
|
||||
chMtxObjectInit(&m1);
|
||||
}
|
||||
|
||||
static void test_006_001_execute(void) {
|
||||
static void rt_test_006_001_execute(void) {
|
||||
tprio_t prio;
|
||||
|
||||
/* [6.1.1] Getting the initial priority.*/
|
||||
|
@ -295,16 +295,16 @@ static void test_006_001_execute(void) {
|
|||
}
|
||||
}
|
||||
|
||||
static const testcase_t test_006_001 = {
|
||||
static const testcase_t rt_test_006_001 = {
|
||||
"Priority enqueuing test",
|
||||
test_006_001_setup,
|
||||
rt_test_006_001_setup,
|
||||
NULL,
|
||||
test_006_001_execute
|
||||
rt_test_006_001_execute
|
||||
};
|
||||
|
||||
#if (CH_DBG_THREADS_PROFILING) || defined(__DOXYGEN__)
|
||||
/**
|
||||
* @page test_006_002 [6.2] Priority inheritance, simple case
|
||||
* @page rt_test_006_002 [6.2] Priority inheritance, simple case
|
||||
*
|
||||
* <h2>Description</h2>
|
||||
* Three threads are involved in the classic priority inversion
|
||||
|
@ -330,11 +330,11 @@ static const testcase_t test_006_001 = {
|
|||
* .
|
||||
*/
|
||||
|
||||
static void test_006_002_setup(void) {
|
||||
static void rt_test_006_002_setup(void) {
|
||||
chMtxObjectInit(&m1);
|
||||
}
|
||||
|
||||
static void test_006_002_execute(void) {
|
||||
static void rt_test_006_002_execute(void) {
|
||||
systime_t time;
|
||||
|
||||
/* [6.2.1] Getting the system time for test duration measurement.*/
|
||||
|
@ -359,22 +359,22 @@ static void test_006_002_execute(void) {
|
|||
time windows (100mS...100mS+ALLOWED_DELAY).*/
|
||||
test_set_step(3);
|
||||
{
|
||||
test_assert_time_window(time + MS2ST(100), time + MS2ST(100) + ALLOWED_DELAY,
|
||||
test_assert_time_window(time + TIME_MS2I(100), time + TIME_MS2I(100) + ALLOWED_DELAY,
|
||||
"out of time window");
|
||||
}
|
||||
}
|
||||
|
||||
static const testcase_t test_006_002 = {
|
||||
static const testcase_t rt_test_006_002 = {
|
||||
"Priority inheritance, simple case",
|
||||
test_006_002_setup,
|
||||
rt_test_006_002_setup,
|
||||
NULL,
|
||||
test_006_002_execute
|
||||
rt_test_006_002_execute
|
||||
};
|
||||
#endif /* CH_DBG_THREADS_PROFILING */
|
||||
|
||||
#if (CH_DBG_THREADS_PROFILING) || defined(__DOXYGEN__)
|
||||
/**
|
||||
* @page test_006_003 [6.3] Priority inheritance, complex case
|
||||
* @page rt_test_006_003 [6.3] Priority inheritance, complex case
|
||||
*
|
||||
* <h2>Description</h2>
|
||||
* Five threads are involved in the complex priority inversion
|
||||
|
@ -399,12 +399,12 @@ static const testcase_t test_006_002 = {
|
|||
* .
|
||||
*/
|
||||
|
||||
static void test_006_003_setup(void) {
|
||||
static void rt_test_006_003_setup(void) {
|
||||
chMtxObjectInit(&m1); /* Mutex B.*/
|
||||
chMtxObjectInit(&m2); /* Mutex A.*/
|
||||
}
|
||||
|
||||
static void test_006_003_execute(void) {
|
||||
static void rt_test_006_003_execute(void) {
|
||||
systime_t time;
|
||||
|
||||
/* [6.3.1] Getting the system time for test duration measurement.*/
|
||||
|
@ -431,21 +431,21 @@ static void test_006_003_execute(void) {
|
|||
time windows (110mS...110mS+ALLOWED_DELAY).*/
|
||||
test_set_step(3);
|
||||
{
|
||||
test_assert_time_window(time + MS2ST(110), time + MS2ST(110) + ALLOWED_DELAY,
|
||||
test_assert_time_window(time + TIME_MS2I(110), time + TIME_MS2I(110) + ALLOWED_DELAY,
|
||||
"out of time window");
|
||||
}
|
||||
}
|
||||
|
||||
static const testcase_t test_006_003 = {
|
||||
static const testcase_t rt_test_006_003 = {
|
||||
"Priority inheritance, complex case",
|
||||
test_006_003_setup,
|
||||
rt_test_006_003_setup,
|
||||
NULL,
|
||||
test_006_003_execute
|
||||
rt_test_006_003_execute
|
||||
};
|
||||
#endif /* CH_DBG_THREADS_PROFILING */
|
||||
|
||||
/**
|
||||
* @page test_006_004 [6.4] Priority return verification
|
||||
* @page rt_test_006_004 [6.4] Priority return verification
|
||||
*
|
||||
* <h2>Description</h2>
|
||||
* Two threads are spawned that try to lock the mutexes already locked
|
||||
|
@ -476,16 +476,16 @@ static const testcase_t test_006_003 = {
|
|||
* .
|
||||
*/
|
||||
|
||||
static void test_006_004_setup(void) {
|
||||
static void rt_test_006_004_setup(void) {
|
||||
chMtxObjectInit(&m1);
|
||||
chMtxObjectInit(&m2);
|
||||
}
|
||||
|
||||
static void test_006_004_teardown(void) {
|
||||
static void rt_test_006_004_teardown(void) {
|
||||
test_wait_threads();
|
||||
}
|
||||
|
||||
static void test_006_004_execute(void) {
|
||||
static void rt_test_006_004_execute(void) {
|
||||
tprio_t p, pa, pb;
|
||||
|
||||
/* [6.4.1] Getting current thread priority P(0) and assigning to the
|
||||
|
@ -555,16 +555,16 @@ static void test_006_004_execute(void) {
|
|||
}
|
||||
}
|
||||
|
||||
static const testcase_t test_006_004 = {
|
||||
static const testcase_t rt_test_006_004 = {
|
||||
"Priority return verification",
|
||||
test_006_004_setup,
|
||||
test_006_004_teardown,
|
||||
test_006_004_execute
|
||||
rt_test_006_004_setup,
|
||||
rt_test_006_004_teardown,
|
||||
rt_test_006_004_execute
|
||||
};
|
||||
|
||||
#if (!CH_CFG_USE_MUTEXES_RECURSIVE) || defined(__DOXYGEN__)
|
||||
/**
|
||||
* @page test_006_005 [6.5] Repeated locks, non recursive scenario
|
||||
* @page rt_test_006_005 [6.5] Repeated locks, non recursive scenario
|
||||
*
|
||||
* <h2>Description</h2>
|
||||
* The behavior of multiple mutex locks from the same thread is tested
|
||||
|
@ -590,11 +590,11 @@ static const testcase_t test_006_004 = {
|
|||
* .
|
||||
*/
|
||||
|
||||
static void test_006_005_setup(void) {
|
||||
static void rt_test_006_005_setup(void) {
|
||||
chMtxObjectInit(&m1);
|
||||
}
|
||||
|
||||
static void test_006_005_execute(void) {
|
||||
static void rt_test_006_005_execute(void) {
|
||||
bool b;
|
||||
tprio_t prio;
|
||||
|
||||
|
@ -655,17 +655,17 @@ static void test_006_005_execute(void) {
|
|||
}
|
||||
}
|
||||
|
||||
static const testcase_t test_006_005 = {
|
||||
static const testcase_t rt_test_006_005 = {
|
||||
"Repeated locks, non recursive scenario",
|
||||
test_006_005_setup,
|
||||
rt_test_006_005_setup,
|
||||
NULL,
|
||||
test_006_005_execute
|
||||
rt_test_006_005_execute
|
||||
};
|
||||
#endif /* !CH_CFG_USE_MUTEXES_RECURSIVE */
|
||||
|
||||
#if (CH_CFG_USE_MUTEXES_RECURSIVE) || defined(__DOXYGEN__)
|
||||
/**
|
||||
* @page test_006_006 [6.6] Repeated locks using, recursive scenario
|
||||
* @page rt_test_006_006 [6.6] Repeated locks using, recursive scenario
|
||||
*
|
||||
* <h2>Description</h2>
|
||||
* The behavior of multiple mutex locks from the same thread is tested
|
||||
|
@ -696,11 +696,11 @@ static const testcase_t test_006_005 = {
|
|||
* .
|
||||
*/
|
||||
|
||||
static void test_006_006_setup(void) {
|
||||
static void rt_test_006_006_setup(void) {
|
||||
chMtxObjectInit(&m1);
|
||||
}
|
||||
|
||||
static void test_006_006_execute(void) {
|
||||
static void rt_test_006_006_execute(void) {
|
||||
bool b;
|
||||
tprio_t prio;
|
||||
|
||||
|
@ -792,17 +792,17 @@ static void test_006_006_execute(void) {
|
|||
}
|
||||
}
|
||||
|
||||
static const testcase_t test_006_006 = {
|
||||
static const testcase_t rt_test_006_006 = {
|
||||
"Repeated locks using, recursive scenario",
|
||||
test_006_006_setup,
|
||||
rt_test_006_006_setup,
|
||||
NULL,
|
||||
test_006_006_execute
|
||||
rt_test_006_006_execute
|
||||
};
|
||||
#endif /* CH_CFG_USE_MUTEXES_RECURSIVE */
|
||||
|
||||
#if (CH_CFG_USE_CONDVARS) || defined(__DOXYGEN__)
|
||||
/**
|
||||
* @page test_006_007 [6.7] Condition Variable signal test
|
||||
* @page rt_test_006_007 [6.7] Condition Variable signal test
|
||||
*
|
||||
* <h2>Description</h2>
|
||||
* Five threads take a mutex and then enter a conditional variable
|
||||
|
@ -826,12 +826,12 @@ static const testcase_t test_006_006 = {
|
|||
* .
|
||||
*/
|
||||
|
||||
static void test_006_007_setup(void) {
|
||||
static void rt_test_006_007_setup(void) {
|
||||
chCondObjectInit(&c1);
|
||||
chMtxObjectInit(&m1);
|
||||
}
|
||||
|
||||
static void test_006_007_execute(void) {
|
||||
static void rt_test_006_007_execute(void) {
|
||||
|
||||
/* [6.7.1] Starting the five threads with increasing priority, the
|
||||
threads will queue on the condition variable.*/
|
||||
|
@ -863,17 +863,17 @@ static void test_006_007_execute(void) {
|
|||
}
|
||||
}
|
||||
|
||||
static const testcase_t test_006_007 = {
|
||||
static const testcase_t rt_test_006_007 = {
|
||||
"Condition Variable signal test",
|
||||
test_006_007_setup,
|
||||
rt_test_006_007_setup,
|
||||
NULL,
|
||||
test_006_007_execute
|
||||
rt_test_006_007_execute
|
||||
};
|
||||
#endif /* CH_CFG_USE_CONDVARS */
|
||||
|
||||
#if (CH_CFG_USE_CONDVARS) || defined(__DOXYGEN__)
|
||||
/**
|
||||
* @page test_006_008 [6.8] Condition Variable broadcast test
|
||||
* @page rt_test_006_008 [6.8] Condition Variable broadcast test
|
||||
*
|
||||
* <h2>Description</h2>
|
||||
* Five threads take a mutex and then enter a conditional variable
|
||||
|
@ -895,12 +895,12 @@ static const testcase_t test_006_007 = {
|
|||
* .
|
||||
*/
|
||||
|
||||
static void test_006_008_setup(void) {
|
||||
static void rt_test_006_008_setup(void) {
|
||||
chCondObjectInit(&c1);
|
||||
chMtxObjectInit(&m1);
|
||||
}
|
||||
|
||||
static void test_006_008_execute(void) {
|
||||
static void rt_test_006_008_execute(void) {
|
||||
|
||||
/* [6.8.1] Starting the five threads with increasing priority, the
|
||||
threads will queue on the condition variable.*/
|
||||
|
@ -924,17 +924,17 @@ static void test_006_008_execute(void) {
|
|||
}
|
||||
}
|
||||
|
||||
static const testcase_t test_006_008 = {
|
||||
static const testcase_t rt_test_006_008 = {
|
||||
"Condition Variable broadcast test",
|
||||
test_006_008_setup,
|
||||
rt_test_006_008_setup,
|
||||
NULL,
|
||||
test_006_008_execute
|
||||
rt_test_006_008_execute
|
||||
};
|
||||
#endif /* CH_CFG_USE_CONDVARS */
|
||||
|
||||
#if (CH_CFG_USE_CONDVARS) || defined(__DOXYGEN__)
|
||||
/**
|
||||
* @page test_006_009 [6.9] Condition Variable priority boost test
|
||||
* @page rt_test_006_009 [6.9] Condition Variable priority boost test
|
||||
*
|
||||
* <h2>Description</h2>
|
||||
* This test case verifies the priority boost of a thread waiting on a
|
||||
|
@ -966,13 +966,13 @@ static const testcase_t test_006_008 = {
|
|||
* .
|
||||
*/
|
||||
|
||||
static void test_006_009_setup(void) {
|
||||
static void rt_test_006_009_setup(void) {
|
||||
chCondObjectInit(&c1);
|
||||
chMtxObjectInit(&m1);
|
||||
chMtxObjectInit(&m2);
|
||||
}
|
||||
|
||||
static void test_006_009_execute(void) {
|
||||
static void rt_test_006_009_execute(void) {
|
||||
tprio_t prio;
|
||||
|
||||
/* [6.9.1] Reading current base priority.*/
|
||||
|
@ -1024,11 +1024,11 @@ static void test_006_009_execute(void) {
|
|||
}
|
||||
}
|
||||
|
||||
static const testcase_t test_006_009 = {
|
||||
static const testcase_t rt_test_006_009 = {
|
||||
"Condition Variable priority boost test",
|
||||
test_006_009_setup,
|
||||
rt_test_006_009_setup,
|
||||
NULL,
|
||||
test_006_009_execute
|
||||
rt_test_006_009_execute
|
||||
};
|
||||
#endif /* CH_CFG_USE_CONDVARS */
|
||||
|
||||
|
@ -1039,29 +1039,29 @@ static const testcase_t test_006_009 = {
|
|||
/**
|
||||
* @brief Mutexes, Condition Variables and Priority Inheritance.
|
||||
*/
|
||||
const testcase_t * const test_sequence_006[] = {
|
||||
&test_006_001,
|
||||
const testcase_t * const rt_test_sequence_006[] = {
|
||||
&rt_test_006_001,
|
||||
#if (CH_DBG_THREADS_PROFILING) || defined(__DOXYGEN__)
|
||||
&test_006_002,
|
||||
&rt_test_006_002,
|
||||
#endif
|
||||
#if (CH_DBG_THREADS_PROFILING) || defined(__DOXYGEN__)
|
||||
&test_006_003,
|
||||
&rt_test_006_003,
|
||||
#endif
|
||||
&test_006_004,
|
||||
&rt_test_006_004,
|
||||
#if (!CH_CFG_USE_MUTEXES_RECURSIVE) || defined(__DOXYGEN__)
|
||||
&test_006_005,
|
||||
&rt_test_006_005,
|
||||
#endif
|
||||
#if (CH_CFG_USE_MUTEXES_RECURSIVE) || defined(__DOXYGEN__)
|
||||
&test_006_006,
|
||||
&rt_test_006_006,
|
||||
#endif
|
||||
#if (CH_CFG_USE_CONDVARS) || defined(__DOXYGEN__)
|
||||
&test_006_007,
|
||||
&rt_test_006_007,
|
||||
#endif
|
||||
#if (CH_CFG_USE_CONDVARS) || defined(__DOXYGEN__)
|
||||
&test_006_008,
|
||||
&rt_test_006_008,
|
||||
#endif
|
||||
#if (CH_CFG_USE_CONDVARS) || defined(__DOXYGEN__)
|
||||
&test_006_009,
|
||||
&rt_test_006_009,
|
||||
#endif
|
||||
NULL
|
||||
};
|
|
@ -15,13 +15,13 @@
|
|||
*/
|
||||
|
||||
/**
|
||||
* @file test_sequence_006.h
|
||||
* @file rt_test_sequence_006.h
|
||||
* @brief Test Sequence 006 header.
|
||||
*/
|
||||
|
||||
#ifndef TEST_SEQUENCE_006_H
|
||||
#define TEST_SEQUENCE_006_H
|
||||
#ifndef RT_TEST_SEQUENCE_006_H
|
||||
#define RT_TEST_SEQUENCE_006_H
|
||||
|
||||
extern const testcase_t * const test_sequence_006[];
|
||||
extern const testcase_t * const rt_test_sequence_006[];
|
||||
|
||||
#endif /* TEST_SEQUENCE_006_H */
|
||||
#endif /* RT_TEST_SEQUENCE_006_H */
|
|
@ -16,15 +16,15 @@
|
|||
|
||||
#include "hal.h"
|
||||
#include "ch_test.h"
|
||||
#include "test_root.h"
|
||||
#include "rt_test_root.h"
|
||||
|
||||
/**
|
||||
* @file test_sequence_007.c
|
||||
* @file rt_test_sequence_007.c
|
||||
* @brief Test Sequence 007 code.
|
||||
*
|
||||
* @page test_sequence_007 [7] Synchronous Messages
|
||||
* @page rt_test_sequence_007 [7] Synchronous Messages
|
||||
*
|
||||
* File: @ref test_sequence_007.c
|
||||
* File: @ref rt_test_sequence_007.c
|
||||
*
|
||||
* <h2>Description</h2>
|
||||
* This module implements the test sequence for the Synchronous
|
||||
|
@ -37,7 +37,7 @@
|
|||
* .
|
||||
*
|
||||
* <h2>Test Cases</h2>
|
||||
* - @subpage test_007_001
|
||||
* - @subpage rt_test_007_001
|
||||
* .
|
||||
*/
|
||||
|
||||
|
@ -60,7 +60,7 @@ static THD_FUNCTION(msg_thread1, p) {
|
|||
****************************************************************************/
|
||||
|
||||
/**
|
||||
* @page test_007_001 [7.1] Messages Server loop
|
||||
* @page rt_test_007_001 [7.1] Messages Server loop
|
||||
*
|
||||
* <h2>Description</h2>
|
||||
* A messenger thread is spawned that sends four messages back to the
|
||||
|
@ -73,7 +73,7 @@ static THD_FUNCTION(msg_thread1, p) {
|
|||
* .
|
||||
*/
|
||||
|
||||
static void test_007_001_execute(void) {
|
||||
static void rt_test_007_001_execute(void) {
|
||||
thread_t *tp;
|
||||
msg_t msg;
|
||||
|
||||
|
@ -101,11 +101,11 @@ static void test_007_001_execute(void) {
|
|||
}
|
||||
}
|
||||
|
||||
static const testcase_t test_007_001 = {
|
||||
static const testcase_t rt_test_007_001 = {
|
||||
"Messages Server loop",
|
||||
NULL,
|
||||
NULL,
|
||||
test_007_001_execute
|
||||
rt_test_007_001_execute
|
||||
};
|
||||
|
||||
/****************************************************************************
|
||||
|
@ -115,8 +115,8 @@ static const testcase_t test_007_001 = {
|
|||
/**
|
||||
* @brief Synchronous Messages.
|
||||
*/
|
||||
const testcase_t * const test_sequence_007[] = {
|
||||
&test_007_001,
|
||||
const testcase_t * const rt_test_sequence_007[] = {
|
||||
&rt_test_007_001,
|
||||
NULL
|
||||
};
|
||||
|
|
@ -15,13 +15,13 @@
|
|||
*/
|
||||
|
||||
/**
|
||||
* @file test_sequence_007.h
|
||||
* @file rt_test_sequence_007.h
|
||||
* @brief Test Sequence 007 header.
|
||||
*/
|
||||
|
||||
#ifndef TEST_SEQUENCE_007_H
|
||||
#define TEST_SEQUENCE_007_H
|
||||
#ifndef RT_TEST_SEQUENCE_007_H
|
||||
#define RT_TEST_SEQUENCE_007_H
|
||||
|
||||
extern const testcase_t * const test_sequence_007[];
|
||||
extern const testcase_t * const rt_test_sequence_007[];
|
||||
|
||||
#endif /* TEST_SEQUENCE_007_H */
|
||||
#endif /* RT_TEST_SEQUENCE_007_H */
|
|
@ -16,15 +16,15 @@
|
|||
|
||||
#include "hal.h"
|
||||
#include "ch_test.h"
|
||||
#include "test_root.h"
|
||||
#include "rt_test_root.h"
|
||||
|
||||
/**
|
||||
* @file test_sequence_008.c
|
||||
* @file rt_test_sequence_008.c
|
||||
* @brief Test Sequence 008 code.
|
||||
*
|
||||
* @page test_sequence_008 [8] Event Sources and Event Flags
|
||||
* @page rt_test_sequence_008 [8] Event Sources and Event Flags
|
||||
*
|
||||
* File: @ref test_sequence_008.c
|
||||
* File: @ref rt_test_sequence_008.c
|
||||
*
|
||||
* <h2>Description</h2>
|
||||
* This module implements the test sequence for the Events subsystem.
|
||||
|
@ -36,13 +36,13 @@
|
|||
* .
|
||||
*
|
||||
* <h2>Test Cases</h2>
|
||||
* - @subpage test_008_001
|
||||
* - @subpage test_008_002
|
||||
* - @subpage test_008_003
|
||||
* - @subpage test_008_004
|
||||
* - @subpage test_008_005
|
||||
* - @subpage test_008_006
|
||||
* - @subpage test_008_007
|
||||
* - @subpage rt_test_008_001
|
||||
* - @subpage rt_test_008_002
|
||||
* - @subpage rt_test_008_003
|
||||
* - @subpage rt_test_008_004
|
||||
* - @subpage rt_test_008_005
|
||||
* - @subpage rt_test_008_006
|
||||
* - @subpage rt_test_008_007
|
||||
* .
|
||||
*/
|
||||
|
||||
|
@ -79,7 +79,7 @@ static THD_FUNCTION(evt_thread7, p) {
|
|||
****************************************************************************/
|
||||
|
||||
/**
|
||||
* @page test_008_001 [8.1] Events registration
|
||||
* @page rt_test_008_001 [8.1] Events registration
|
||||
*
|
||||
* <h2>Description</h2>
|
||||
* Two event listeners are registered on an event source and then
|
||||
|
@ -99,7 +99,7 @@ static THD_FUNCTION(evt_thread7, p) {
|
|||
* .
|
||||
*/
|
||||
|
||||
static void test_008_001_execute(void) {
|
||||
static void rt_test_008_001_execute(void) {
|
||||
event_listener_t el1, el2;
|
||||
|
||||
/* [8.1.1] An Event Source is initialized.*/
|
||||
|
@ -134,15 +134,15 @@ static void test_008_001_execute(void) {
|
|||
}
|
||||
}
|
||||
|
||||
static const testcase_t test_008_001 = {
|
||||
static const testcase_t rt_test_008_001 = {
|
||||
"Events registration",
|
||||
NULL,
|
||||
NULL,
|
||||
test_008_001_execute
|
||||
rt_test_008_001_execute
|
||||
};
|
||||
|
||||
/**
|
||||
* @page test_008_002 [8.2] Event Flags dispatching
|
||||
* @page rt_test_008_002 [8.2] Event Flags dispatching
|
||||
*
|
||||
* <h2>Description</h2>
|
||||
* The test dispatches three event flags and verifies that the
|
||||
|
@ -154,11 +154,11 @@ static const testcase_t test_008_001 = {
|
|||
* .
|
||||
*/
|
||||
|
||||
static void test_008_002_setup(void) {
|
||||
static void rt_test_008_002_setup(void) {
|
||||
chEvtGetAndClearEvents(ALL_EVENTS);
|
||||
}
|
||||
|
||||
static void test_008_002_execute(void) {
|
||||
static void rt_test_008_002_execute(void) {
|
||||
|
||||
/* [8.2.1] Three evenf flag bits are raised then chEvtDispatch() is
|
||||
invoked, the sequence of handlers calls is tested.*/
|
||||
|
@ -169,15 +169,15 @@ static void test_008_002_execute(void) {
|
|||
}
|
||||
}
|
||||
|
||||
static const testcase_t test_008_002 = {
|
||||
static const testcase_t rt_test_008_002 = {
|
||||
"Event Flags dispatching",
|
||||
test_008_002_setup,
|
||||
rt_test_008_002_setup,
|
||||
NULL,
|
||||
test_008_002_execute
|
||||
rt_test_008_002_execute
|
||||
};
|
||||
|
||||
/**
|
||||
* @page test_008_003 [8.3] Events Flags wait using chEvtWaitOne()
|
||||
* @page rt_test_008_003 [8.3] Events Flags wait using chEvtWaitOne()
|
||||
*
|
||||
* <h2>Description</h2>
|
||||
* Functionality of chEvtWaitOne() is tested under various scenarios.
|
||||
|
@ -194,11 +194,11 @@ static const testcase_t test_008_002 = {
|
|||
* .
|
||||
*/
|
||||
|
||||
static void test_008_003_setup(void) {
|
||||
static void rt_test_008_003_setup(void) {
|
||||
chEvtGetAndClearEvents(ALL_EVENTS);
|
||||
}
|
||||
|
||||
static void test_008_003_execute(void) {
|
||||
static void rt_test_008_003_execute(void) {
|
||||
eventmask_t m;
|
||||
systime_t target_time;
|
||||
|
||||
|
@ -226,7 +226,7 @@ static void test_008_003_execute(void) {
|
|||
thread will set an event flag after 50mS.*/
|
||||
test_set_step(3);
|
||||
{
|
||||
target_time = test_wait_tick() + MS2ST(50);
|
||||
target_time = test_wait_tick() + TIME_MS2I(50);
|
||||
threads[0] = chThdCreateStatic(wa[0], WA_SIZE, chThdGetPriorityX() - 1,
|
||||
evt_thread3, chThdGetSelfX());
|
||||
}
|
||||
|
@ -246,15 +246,15 @@ static void test_008_003_execute(void) {
|
|||
}
|
||||
}
|
||||
|
||||
static const testcase_t test_008_003 = {
|
||||
static const testcase_t rt_test_008_003 = {
|
||||
"Events Flags wait using chEvtWaitOne()",
|
||||
test_008_003_setup,
|
||||
rt_test_008_003_setup,
|
||||
NULL,
|
||||
test_008_003_execute
|
||||
rt_test_008_003_execute
|
||||
};
|
||||
|
||||
/**
|
||||
* @page test_008_004 [8.4] Events Flags wait using chEvtWaitAny()
|
||||
* @page rt_test_008_004 [8.4] Events Flags wait using chEvtWaitAny()
|
||||
*
|
||||
* <h2>Description</h2>
|
||||
* Functionality of chEvtWaitAny() is tested under various scenarios.
|
||||
|
@ -271,11 +271,11 @@ static const testcase_t test_008_003 = {
|
|||
* .
|
||||
*/
|
||||
|
||||
static void test_008_004_setup(void) {
|
||||
static void rt_test_008_004_setup(void) {
|
||||
chEvtGetAndClearEvents(ALL_EVENTS);
|
||||
}
|
||||
|
||||
static void test_008_004_execute(void) {
|
||||
static void rt_test_008_004_execute(void) {
|
||||
eventmask_t m;
|
||||
systime_t target_time;
|
||||
|
||||
|
@ -299,7 +299,7 @@ static void test_008_004_execute(void) {
|
|||
thread will set an event flag after 50mS.*/
|
||||
test_set_step(3);
|
||||
{
|
||||
target_time = test_wait_tick() + MS2ST(50);
|
||||
target_time = test_wait_tick() + TIME_MS2I(50);
|
||||
threads[0] = chThdCreateStatic(wa[0], WA_SIZE, chThdGetPriorityX() - 1,
|
||||
evt_thread3, chThdGetSelfX());
|
||||
}
|
||||
|
@ -319,15 +319,15 @@ static void test_008_004_execute(void) {
|
|||
}
|
||||
}
|
||||
|
||||
static const testcase_t test_008_004 = {
|
||||
static const testcase_t rt_test_008_004 = {
|
||||
"Events Flags wait using chEvtWaitAny()",
|
||||
test_008_004_setup,
|
||||
rt_test_008_004_setup,
|
||||
NULL,
|
||||
test_008_004_execute
|
||||
rt_test_008_004_execute
|
||||
};
|
||||
|
||||
/**
|
||||
* @page test_008_005 [8.5] Events Flags wait using chEvtWaitAll()
|
||||
* @page rt_test_008_005 [8.5] Events Flags wait using chEvtWaitAll()
|
||||
*
|
||||
* <h2>Description</h2>
|
||||
* Functionality of chEvtWaitAll() is tested under various scenarios.
|
||||
|
@ -345,11 +345,11 @@ static const testcase_t test_008_004 = {
|
|||
* .
|
||||
*/
|
||||
|
||||
static void test_008_005_setup(void) {
|
||||
static void rt_test_008_005_setup(void) {
|
||||
chEvtGetAndClearEvents(ALL_EVENTS);
|
||||
}
|
||||
|
||||
static void test_008_005_execute(void) {
|
||||
static void rt_test_008_005_execute(void) {
|
||||
eventmask_t m;
|
||||
systime_t target_time;
|
||||
|
||||
|
@ -379,7 +379,7 @@ static void test_008_005_execute(void) {
|
|||
thread will set another event flag after 50mS.*/
|
||||
test_set_step(4);
|
||||
{
|
||||
target_time = test_wait_tick() + MS2ST(50);
|
||||
target_time = test_wait_tick() + TIME_MS2I(50);
|
||||
threads[0] = chThdCreateStatic(wa[0], WA_SIZE, chThdGetPriorityX() - 1,
|
||||
evt_thread3, chThdGetSelfX());
|
||||
}
|
||||
|
@ -399,16 +399,16 @@ static void test_008_005_execute(void) {
|
|||
}
|
||||
}
|
||||
|
||||
static const testcase_t test_008_005 = {
|
||||
static const testcase_t rt_test_008_005 = {
|
||||
"Events Flags wait using chEvtWaitAll()",
|
||||
test_008_005_setup,
|
||||
rt_test_008_005_setup,
|
||||
NULL,
|
||||
test_008_005_execute
|
||||
rt_test_008_005_execute
|
||||
};
|
||||
|
||||
#if (CH_CFG_USE_EVENTS_TIMEOUT) || defined(__DOXYGEN__)
|
||||
/**
|
||||
* @page test_008_006 [8.6] Events Flags wait timeouts
|
||||
* @page rt_test_008_006 [8.6] Events Flags wait timeouts
|
||||
*
|
||||
* <h2>Description</h2>
|
||||
* Timeout functionality is tested for chEvtWaitOneTimeout(),
|
||||
|
@ -428,11 +428,11 @@ static const testcase_t test_008_005 = {
|
|||
* .
|
||||
*/
|
||||
|
||||
static void test_008_006_setup(void) {
|
||||
static void rt_test_008_006_setup(void) {
|
||||
chEvtGetAndClearEvents(ALL_EVENTS);
|
||||
}
|
||||
|
||||
static void test_008_006_execute(void) {
|
||||
static void rt_test_008_006_execute(void) {
|
||||
eventmask_t m;
|
||||
|
||||
/* [8.6.1] The functions are invoked first with TIME_IMMEDIATE
|
||||
|
@ -451,25 +451,25 @@ static void test_008_006_execute(void) {
|
|||
timeout condition is tested.*/
|
||||
test_set_step(2);
|
||||
{
|
||||
m = chEvtWaitOneTimeout(ALL_EVENTS, MS2ST(50));
|
||||
m = chEvtWaitOneTimeout(ALL_EVENTS, TIME_MS2I(50));
|
||||
test_assert(m == 0, "spurious event");
|
||||
m = chEvtWaitAnyTimeout(ALL_EVENTS, MS2ST(50));
|
||||
m = chEvtWaitAnyTimeout(ALL_EVENTS, TIME_MS2I(50));
|
||||
test_assert(m == 0, "spurious event");
|
||||
m = chEvtWaitAllTimeout(ALL_EVENTS, MS2ST(50));
|
||||
m = chEvtWaitAllTimeout(ALL_EVENTS, TIME_MS2I(50));
|
||||
test_assert(m == 0, "spurious event");
|
||||
}
|
||||
}
|
||||
|
||||
static const testcase_t test_008_006 = {
|
||||
static const testcase_t rt_test_008_006 = {
|
||||
"Events Flags wait timeouts",
|
||||
test_008_006_setup,
|
||||
rt_test_008_006_setup,
|
||||
NULL,
|
||||
test_008_006_execute
|
||||
rt_test_008_006_execute
|
||||
};
|
||||
#endif /* CH_CFG_USE_EVENTS_TIMEOUT */
|
||||
|
||||
/**
|
||||
* @page test_008_007 [8.7] Broadcasting using chEvtBroadcast()
|
||||
* @page rt_test_008_007 [8.7] Broadcasting using chEvtBroadcast()
|
||||
*
|
||||
* <h2>Description</h2>
|
||||
* Functionality of chEvtBroadcast() is tested.
|
||||
|
@ -487,13 +487,13 @@ static const testcase_t test_008_006 = {
|
|||
* .
|
||||
*/
|
||||
|
||||
static void test_008_007_setup(void) {
|
||||
static void rt_test_008_007_setup(void) {
|
||||
chEvtGetAndClearEvents(ALL_EVENTS);
|
||||
chEvtObjectInit(&es1);
|
||||
chEvtObjectInit(&es2);
|
||||
}
|
||||
|
||||
static void test_008_007_execute(void) {
|
||||
static void rt_test_008_007_execute(void) {
|
||||
eventmask_t m;
|
||||
event_listener_t el1, el2;
|
||||
systime_t target_time;
|
||||
|
@ -511,7 +511,7 @@ static void test_008_007_execute(void) {
|
|||
other after 50mS.*/
|
||||
test_set_step(2);
|
||||
{
|
||||
target_time = test_wait_tick() + MS2ST(50);
|
||||
target_time = test_wait_tick() + TIME_MS2I(50);
|
||||
threads[0] = chThdCreateStatic(wa[0], WA_SIZE, chThdGetPriorityX() - 1,
|
||||
evt_thread7, "A");
|
||||
}
|
||||
|
@ -539,11 +539,11 @@ static void test_008_007_execute(void) {
|
|||
}
|
||||
}
|
||||
|
||||
static const testcase_t test_008_007 = {
|
||||
static const testcase_t rt_test_008_007 = {
|
||||
"Broadcasting using chEvtBroadcast()",
|
||||
test_008_007_setup,
|
||||
rt_test_008_007_setup,
|
||||
NULL,
|
||||
test_008_007_execute
|
||||
rt_test_008_007_execute
|
||||
};
|
||||
|
||||
/****************************************************************************
|
||||
|
@ -553,16 +553,16 @@ static const testcase_t test_008_007 = {
|
|||
/**
|
||||
* @brief Event Sources and Event Flags.
|
||||
*/
|
||||
const testcase_t * const test_sequence_008[] = {
|
||||
&test_008_001,
|
||||
&test_008_002,
|
||||
&test_008_003,
|
||||
&test_008_004,
|
||||
&test_008_005,
|
||||
const testcase_t * const rt_test_sequence_008[] = {
|
||||
&rt_test_008_001,
|
||||
&rt_test_008_002,
|
||||
&rt_test_008_003,
|
||||
&rt_test_008_004,
|
||||
&rt_test_008_005,
|
||||
#if (CH_CFG_USE_EVENTS_TIMEOUT) || defined(__DOXYGEN__)
|
||||
&test_008_006,
|
||||
&rt_test_008_006,
|
||||
#endif
|
||||
&test_008_007,
|
||||
&rt_test_008_007,
|
||||
NULL
|
||||
};
|
||||
|
|
@ -15,13 +15,13 @@
|
|||
*/
|
||||
|
||||
/**
|
||||
* @file test_sequence_008.h
|
||||
* @file rt_test_sequence_008.h
|
||||
* @brief Test Sequence 008 header.
|
||||
*/
|
||||
|
||||
#ifndef TEST_SEQUENCE_008_H
|
||||
#define TEST_SEQUENCE_008_H
|
||||
#ifndef RT_TEST_SEQUENCE_008_H
|
||||
#define RT_TEST_SEQUENCE_008_H
|
||||
|
||||
extern const testcase_t * const test_sequence_008[];
|
||||
extern const testcase_t * const rt_test_sequence_008[];
|
||||
|
||||
#endif /* TEST_SEQUENCE_008_H */
|
||||
#endif /* RT_TEST_SEQUENCE_008_H */
|
|
@ -16,15 +16,15 @@
|
|||
|
||||
#include "hal.h"
|
||||
#include "ch_test.h"
|
||||
#include "test_root.h"
|
||||
#include "rt_test_root.h"
|
||||
|
||||
/**
|
||||
* @file test_sequence_009.c
|
||||
* @file rt_test_sequence_009.c
|
||||
* @brief Test Sequence 009 code.
|
||||
*
|
||||
* @page test_sequence_009 [9] Mailboxes
|
||||
* @page rt_test_sequence_009 [9] Mailboxes
|
||||
*
|
||||
* File: @ref test_sequence_009.c
|
||||
* File: @ref rt_test_sequence_009.c
|
||||
*
|
||||
* <h2>Description</h2>
|
||||
* This sequence tests the ChibiOS/RT functionalities related to
|
||||
|
@ -37,9 +37,9 @@
|
|||
* .
|
||||
*
|
||||
* <h2>Test Cases</h2>
|
||||
* - @subpage test_009_001
|
||||
* - @subpage test_009_002
|
||||
* - @subpage test_009_003
|
||||
* - @subpage rt_test_009_001
|
||||
* - @subpage rt_test_009_002
|
||||
* - @subpage rt_test_009_003
|
||||
* .
|
||||
*/
|
||||
|
||||
|
@ -59,7 +59,7 @@ static MAILBOX_DECL(mb1, mb_buffer, MB_SIZE);
|
|||
****************************************************************************/
|
||||
|
||||
/**
|
||||
* @page test_009_001 [9.1] Mailbox normal API, non-blocking tests
|
||||
* @page rt_test_009_001 [9.1] Mailbox normal API, non-blocking tests
|
||||
*
|
||||
* <h2>Description</h2>
|
||||
* The mailbox normal API is tested without triggering blocking
|
||||
|
@ -84,15 +84,15 @@ static MAILBOX_DECL(mb1, mb_buffer, MB_SIZE);
|
|||
* .
|
||||
*/
|
||||
|
||||
static void test_009_001_setup(void) {
|
||||
static void rt_test_009_001_setup(void) {
|
||||
chMBObjectInit(&mb1, mb_buffer, MB_SIZE);
|
||||
}
|
||||
|
||||
static void test_009_001_teardown(void) {
|
||||
static void rt_test_009_001_teardown(void) {
|
||||
chMBReset(&mb1);
|
||||
}
|
||||
|
||||
static void test_009_001_execute(void) {
|
||||
static void rt_test_009_001_execute(void) {
|
||||
msg_t msg1, msg2;
|
||||
unsigned i;
|
||||
|
||||
|
@ -180,15 +180,15 @@ static void test_009_001_execute(void) {
|
|||
}
|
||||
}
|
||||
|
||||
static const testcase_t test_009_001 = {
|
||||
static const testcase_t rt_test_009_001 = {
|
||||
"Mailbox normal API, non-blocking tests",
|
||||
test_009_001_setup,
|
||||
test_009_001_teardown,
|
||||
test_009_001_execute
|
||||
rt_test_009_001_setup,
|
||||
rt_test_009_001_teardown,
|
||||
rt_test_009_001_execute
|
||||
};
|
||||
|
||||
/**
|
||||
* @page test_009_002 [9.2] Mailbox I-Class API, non-blocking tests
|
||||
* @page rt_test_009_002 [9.2] Mailbox I-Class API, non-blocking tests
|
||||
*
|
||||
* <h2>Description</h2>
|
||||
* The mailbox I-Class API is tested without triggering blocking
|
||||
|
@ -211,15 +211,15 @@ static const testcase_t test_009_001 = {
|
|||
* .
|
||||
*/
|
||||
|
||||
static void test_009_002_setup(void) {
|
||||
static void rt_test_009_002_setup(void) {
|
||||
chMBObjectInit(&mb1, mb_buffer, MB_SIZE);
|
||||
}
|
||||
|
||||
static void test_009_002_teardown(void) {
|
||||
static void rt_test_009_002_teardown(void) {
|
||||
chMBReset(&mb1);
|
||||
}
|
||||
|
||||
static void test_009_002_execute(void) {
|
||||
static void rt_test_009_002_execute(void) {
|
||||
msg_t msg1, msg2;
|
||||
unsigned i;
|
||||
|
||||
|
@ -303,15 +303,15 @@ static void test_009_002_execute(void) {
|
|||
}
|
||||
}
|
||||
|
||||
static const testcase_t test_009_002 = {
|
||||
static const testcase_t rt_test_009_002 = {
|
||||
"Mailbox I-Class API, non-blocking tests",
|
||||
test_009_002_setup,
|
||||
test_009_002_teardown,
|
||||
test_009_002_execute
|
||||
rt_test_009_002_setup,
|
||||
rt_test_009_002_teardown,
|
||||
rt_test_009_002_execute
|
||||
};
|
||||
|
||||
/**
|
||||
* @page test_009_003 [9.3] Mailbox timeouts
|
||||
* @page rt_test_009_003 [9.3] Mailbox timeouts
|
||||
*
|
||||
* <h2>Description</h2>
|
||||
* The mailbox API is tested for timeouts.
|
||||
|
@ -326,15 +326,15 @@ static const testcase_t test_009_002 = {
|
|||
* .
|
||||
*/
|
||||
|
||||
static void test_009_003_setup(void) {
|
||||
static void rt_test_009_003_setup(void) {
|
||||
chMBObjectInit(&mb1, mb_buffer, MB_SIZE);
|
||||
}
|
||||
|
||||
static void test_009_003_teardown(void) {
|
||||
static void rt_test_009_003_teardown(void) {
|
||||
chMBReset(&mb1);
|
||||
}
|
||||
|
||||
static void test_009_003_execute(void) {
|
||||
static void rt_test_009_003_execute(void) {
|
||||
msg_t msg1, msg2;
|
||||
unsigned i;
|
||||
|
||||
|
@ -385,11 +385,11 @@ static void test_009_003_execute(void) {
|
|||
}
|
||||
}
|
||||
|
||||
static const testcase_t test_009_003 = {
|
||||
static const testcase_t rt_test_009_003 = {
|
||||
"Mailbox timeouts",
|
||||
test_009_003_setup,
|
||||
test_009_003_teardown,
|
||||
test_009_003_execute
|
||||
rt_test_009_003_setup,
|
||||
rt_test_009_003_teardown,
|
||||
rt_test_009_003_execute
|
||||
};
|
||||
|
||||
/****************************************************************************
|
||||
|
@ -399,10 +399,10 @@ static const testcase_t test_009_003 = {
|
|||
/**
|
||||
* @brief Mailboxes.
|
||||
*/
|
||||
const testcase_t * const test_sequence_009[] = {
|
||||
&test_009_001,
|
||||
&test_009_002,
|
||||
&test_009_003,
|
||||
const testcase_t * const rt_test_sequence_009[] = {
|
||||
&rt_test_009_001,
|
||||
&rt_test_009_002,
|
||||
&rt_test_009_003,
|
||||
NULL
|
||||
};
|
||||
|
|
@ -15,13 +15,13 @@
|
|||
*/
|
||||
|
||||
/**
|
||||
* @file test_sequence_009.h
|
||||
* @file rt_test_sequence_009.h
|
||||
* @brief Test Sequence 009 header.
|
||||
*/
|
||||
|
||||
#ifndef TEST_SEQUENCE_009_H
|
||||
#define TEST_SEQUENCE_009_H
|
||||
#ifndef RT_TEST_SEQUENCE_009_H
|
||||
#define RT_TEST_SEQUENCE_009_H
|
||||
|
||||
extern const testcase_t * const test_sequence_009[];
|
||||
extern const testcase_t * const rt_test_sequence_009[];
|
||||
|
||||
#endif /* TEST_SEQUENCE_009_H */
|
||||
#endif /* RT_TEST_SEQUENCE_009_H */
|
|
@ -16,15 +16,15 @@
|
|||
|
||||
#include "hal.h"
|
||||
#include "ch_test.h"
|
||||
#include "test_root.h"
|
||||
#include "rt_test_root.h"
|
||||
|
||||
/**
|
||||
* @file test_sequence_010.c
|
||||
* @file rt_test_sequence_010.c
|
||||
* @brief Test Sequence 010 code.
|
||||
*
|
||||
* @page test_sequence_010 [10] Memory Pools
|
||||
* @page rt_test_sequence_010 [10] Memory Pools
|
||||
*
|
||||
* File: @ref test_sequence_010.c
|
||||
* File: @ref rt_test_sequence_010.c
|
||||
*
|
||||
* <h2>Description</h2>
|
||||
* This sequence tests the ChibiOS/RT functionalities related to memory
|
||||
|
@ -37,9 +37,9 @@
|
|||
* .
|
||||
*
|
||||
* <h2>Test Cases</h2>
|
||||
* - @subpage test_010_001
|
||||
* - @subpage test_010_002
|
||||
* - @subpage test_010_003
|
||||
* - @subpage rt_test_010_001
|
||||
* - @subpage rt_test_010_002
|
||||
* - @subpage rt_test_010_003
|
||||
* .
|
||||
*/
|
||||
|
||||
|
@ -71,7 +71,7 @@ static void *null_provider(size_t size, unsigned align) {
|
|||
****************************************************************************/
|
||||
|
||||
/**
|
||||
* @page test_010_001 [10.1] Loading and emptying a memory pool
|
||||
* @page rt_test_010_001 [10.1] Loading and emptying a memory pool
|
||||
*
|
||||
* <h2>Description</h2>
|
||||
* The memory pool functionality is tested by loading and emptying it,
|
||||
|
@ -89,11 +89,11 @@ static void *null_provider(size_t size, unsigned align) {
|
|||
* .
|
||||
*/
|
||||
|
||||
static void test_010_001_setup(void) {
|
||||
static void rt_test_010_001_setup(void) {
|
||||
chPoolObjectInit(&mp1, sizeof (uint32_t), NULL);
|
||||
}
|
||||
|
||||
static void test_010_001_execute(void) {
|
||||
static void rt_test_010_001_execute(void) {
|
||||
unsigned i;
|
||||
|
||||
/* [10.1.1] Adding the objects to the pool using chPoolLoadArray().*/
|
||||
|
@ -144,16 +144,16 @@ static void test_010_001_execute(void) {
|
|||
}
|
||||
}
|
||||
|
||||
static const testcase_t test_010_001 = {
|
||||
static const testcase_t rt_test_010_001 = {
|
||||
"Loading and emptying a memory pool",
|
||||
test_010_001_setup,
|
||||
rt_test_010_001_setup,
|
||||
NULL,
|
||||
test_010_001_execute
|
||||
rt_test_010_001_execute
|
||||
};
|
||||
|
||||
#if (CH_CFG_USE_SEMAPHORES) || defined(__DOXYGEN__)
|
||||
/**
|
||||
* @page test_010_002 [10.2] Loading and emptying a guarded memory pool without waiting
|
||||
* @page rt_test_010_002 [10.2] Loading and emptying a guarded memory pool without waiting
|
||||
*
|
||||
* <h2>Description</h2>
|
||||
* The memory pool functionality is tested by loading and emptying it,
|
||||
|
@ -177,11 +177,11 @@ static const testcase_t test_010_001 = {
|
|||
* .
|
||||
*/
|
||||
|
||||
static void test_010_002_setup(void) {
|
||||
static void rt_test_010_002_setup(void) {
|
||||
chGuardedPoolObjectInit(&gmp1, sizeof (uint32_t));
|
||||
}
|
||||
|
||||
static void test_010_002_execute(void) {
|
||||
static void rt_test_010_002_execute(void) {
|
||||
unsigned i;
|
||||
|
||||
/* [10.2.1] Adding the objects to the pool using
|
||||
|
@ -227,17 +227,17 @@ static void test_010_002_execute(void) {
|
|||
}
|
||||
}
|
||||
|
||||
static const testcase_t test_010_002 = {
|
||||
static const testcase_t rt_test_010_002 = {
|
||||
"Loading and emptying a guarded memory pool without waiting",
|
||||
test_010_002_setup,
|
||||
rt_test_010_002_setup,
|
||||
NULL,
|
||||
test_010_002_execute
|
||||
rt_test_010_002_execute
|
||||
};
|
||||
#endif /* CH_CFG_USE_SEMAPHORES */
|
||||
|
||||
#if (CH_CFG_USE_SEMAPHORES) || defined(__DOXYGEN__)
|
||||
/**
|
||||
* @page test_010_003 [10.3] Guarded Memory Pools timeout
|
||||
* @page rt_test_010_003 [10.3] Guarded Memory Pools timeout
|
||||
*
|
||||
* <h2>Description</h2>
|
||||
* The timeout features for the Guarded Memory Pools is tested.
|
||||
|
@ -254,25 +254,25 @@ static const testcase_t test_010_002 = {
|
|||
* .
|
||||
*/
|
||||
|
||||
static void test_010_003_setup(void) {
|
||||
static void rt_test_010_003_setup(void) {
|
||||
chGuardedPoolObjectInit(&gmp1, sizeof (uint32_t));
|
||||
}
|
||||
|
||||
static void test_010_003_execute(void) {
|
||||
static void rt_test_010_003_execute(void) {
|
||||
|
||||
/* [10.3.1] Trying to allocate with 100mS timeout, must fail because
|
||||
the pool is empty.*/
|
||||
test_set_step(1);
|
||||
{
|
||||
test_assert(chGuardedPoolAllocTimeout(&gmp1, MS2ST(100)) == NULL, "list not empty");
|
||||
test_assert(chGuardedPoolAllocTimeout(&gmp1, TIME_MS2I(100)) == NULL, "list not empty");
|
||||
}
|
||||
}
|
||||
|
||||
static const testcase_t test_010_003 = {
|
||||
static const testcase_t rt_test_010_003 = {
|
||||
"Guarded Memory Pools timeout",
|
||||
test_010_003_setup,
|
||||
rt_test_010_003_setup,
|
||||
NULL,
|
||||
test_010_003_execute
|
||||
rt_test_010_003_execute
|
||||
};
|
||||
#endif /* CH_CFG_USE_SEMAPHORES */
|
||||
|
||||
|
@ -283,13 +283,13 @@ static const testcase_t test_010_003 = {
|
|||
/**
|
||||
* @brief Memory Pools.
|
||||
*/
|
||||
const testcase_t * const test_sequence_010[] = {
|
||||
&test_010_001,
|
||||
const testcase_t * const rt_test_sequence_010[] = {
|
||||
&rt_test_010_001,
|
||||
#if (CH_CFG_USE_SEMAPHORES) || defined(__DOXYGEN__)
|
||||
&test_010_002,
|
||||
&rt_test_010_002,
|
||||
#endif
|
||||
#if (CH_CFG_USE_SEMAPHORES) || defined(__DOXYGEN__)
|
||||
&test_010_003,
|
||||
&rt_test_010_003,
|
||||
#endif
|
||||
NULL
|
||||
};
|
|
@ -15,13 +15,13 @@
|
|||
*/
|
||||
|
||||
/**
|
||||
* @file test_sequence_010.h
|
||||
* @file rt_test_sequence_010.h
|
||||
* @brief Test Sequence 010 header.
|
||||
*/
|
||||
|
||||
#ifndef TEST_SEQUENCE_010_H
|
||||
#define TEST_SEQUENCE_010_H
|
||||
#ifndef RT_TEST_SEQUENCE_010_H
|
||||
#define RT_TEST_SEQUENCE_010_H
|
||||
|
||||
extern const testcase_t * const test_sequence_010[];
|
||||
extern const testcase_t * const rt_test_sequence_010[];
|
||||
|
||||
#endif /* TEST_SEQUENCE_010_H */
|
||||
#endif /* RT_TEST_SEQUENCE_010_H */
|
|
@ -16,15 +16,15 @@
|
|||
|
||||
#include "hal.h"
|
||||
#include "ch_test.h"
|
||||
#include "test_root.h"
|
||||
#include "rt_test_root.h"
|
||||
|
||||
/**
|
||||
* @file test_sequence_011.c
|
||||
* @file rt_test_sequence_011.c
|
||||
* @brief Test Sequence 011 code.
|
||||
*
|
||||
* @page test_sequence_011 [11] Memory Heaps
|
||||
* @page rt_test_sequence_011 [11] Memory Heaps
|
||||
*
|
||||
* File: @ref test_sequence_011.c
|
||||
* File: @ref rt_test_sequence_011.c
|
||||
*
|
||||
* <h2>Description</h2>
|
||||
* This sequence tests the ChibiOS/RT functionalities related to memory
|
||||
|
@ -37,8 +37,8 @@
|
|||
* .
|
||||
*
|
||||
* <h2>Test Cases</h2>
|
||||
* - @subpage test_011_001
|
||||
* - @subpage test_011_002
|
||||
* - @subpage rt_test_011_001
|
||||
* - @subpage rt_test_011_002
|
||||
* .
|
||||
*/
|
||||
|
||||
|
@ -58,7 +58,7 @@ memory_heap_t test_heap;
|
|||
****************************************************************************/
|
||||
|
||||
/**
|
||||
* @page test_011_001 [11.1] Allocation and fragmentation
|
||||
* @page rt_test_011_001 [11.1] Allocation and fragmentation
|
||||
*
|
||||
* <h2>Description</h2>
|
||||
* Series of allocations/deallocations are performed in carefully
|
||||
|
@ -87,11 +87,11 @@ memory_heap_t test_heap;
|
|||
* .
|
||||
*/
|
||||
|
||||
static void test_011_001_setup(void) {
|
||||
static void rt_test_011_001_setup(void) {
|
||||
chHeapObjectInit(&test_heap, test_buffer, sizeof(test_buffer));
|
||||
}
|
||||
|
||||
static void test_011_001_execute(void) {
|
||||
static void rt_test_011_001_execute(void) {
|
||||
void *p1, *p2, *p3;
|
||||
size_t n, sz;
|
||||
|
||||
|
@ -206,15 +206,15 @@ static void test_011_001_execute(void) {
|
|||
}
|
||||
}
|
||||
|
||||
static const testcase_t test_011_001 = {
|
||||
static const testcase_t rt_test_011_001 = {
|
||||
"Allocation and fragmentation",
|
||||
test_011_001_setup,
|
||||
rt_test_011_001_setup,
|
||||
NULL,
|
||||
test_011_001_execute
|
||||
rt_test_011_001_execute
|
||||
};
|
||||
|
||||
/**
|
||||
* @page test_011_002 [11.2] Default Heap
|
||||
* @page rt_test_011_002 [11.2] Default Heap
|
||||
*
|
||||
* <h2>Description</h2>
|
||||
* The default heap is pre-allocated in the system. We test base
|
||||
|
@ -227,7 +227,7 @@ static const testcase_t test_011_001 = {
|
|||
* .
|
||||
*/
|
||||
|
||||
static void test_011_002_execute(void) {
|
||||
static void rt_test_011_002_execute(void) {
|
||||
void *p1;
|
||||
size_t total_size, largest_size;
|
||||
|
||||
|
@ -249,11 +249,11 @@ static void test_011_002_execute(void) {
|
|||
}
|
||||
}
|
||||
|
||||
static const testcase_t test_011_002 = {
|
||||
static const testcase_t rt_test_011_002 = {
|
||||
"Default Heap",
|
||||
NULL,
|
||||
NULL,
|
||||
test_011_002_execute
|
||||
rt_test_011_002_execute
|
||||
};
|
||||
|
||||
/****************************************************************************
|
||||
|
@ -263,9 +263,9 @@ static const testcase_t test_011_002 = {
|
|||
/**
|
||||
* @brief Memory Heaps.
|
||||
*/
|
||||
const testcase_t * const test_sequence_011[] = {
|
||||
&test_011_001,
|
||||
&test_011_002,
|
||||
const testcase_t * const rt_test_sequence_011[] = {
|
||||
&rt_test_011_001,
|
||||
&rt_test_011_002,
|
||||
NULL
|
||||
};
|
||||
|
|
@ -15,13 +15,13 @@
|
|||
*/
|
||||
|
||||
/**
|
||||
* @file test_sequence_011.h
|
||||
* @file rt_test_sequence_011.h
|
||||
* @brief Test Sequence 011 header.
|
||||
*/
|
||||
|
||||
#ifndef TEST_SEQUENCE_011_H
|
||||
#define TEST_SEQUENCE_011_H
|
||||
#ifndef RT_TEST_SEQUENCE_011_H
|
||||
#define RT_TEST_SEQUENCE_011_H
|
||||
|
||||
extern const testcase_t * const test_sequence_011[];
|
||||
extern const testcase_t * const rt_test_sequence_011[];
|
||||
|
||||
#endif /* TEST_SEQUENCE_011_H */
|
||||
#endif /* RT_TEST_SEQUENCE_011_H */
|
|
@ -16,15 +16,15 @@
|
|||
|
||||
#include "hal.h"
|
||||
#include "ch_test.h"
|
||||
#include "test_root.h"
|
||||
#include "rt_test_root.h"
|
||||
|
||||
/**
|
||||
* @file test_sequence_012.c
|
||||
* @file rt_test_sequence_012.c
|
||||
* @brief Test Sequence 012 code.
|
||||
*
|
||||
* @page test_sequence_012 [12] Dynamic threads
|
||||
* @page rt_test_sequence_012 [12] Dynamic threads
|
||||
*
|
||||
* File: @ref test_sequence_012.c
|
||||
* File: @ref rt_test_sequence_012.c
|
||||
*
|
||||
* <h2>Description</h2>
|
||||
* This module implements the test sequence for the dynamic thread
|
||||
|
@ -37,8 +37,8 @@
|
|||
* .
|
||||
*
|
||||
* <h2>Test Cases</h2>
|
||||
* - @subpage test_012_001
|
||||
* - @subpage test_012_002
|
||||
* - @subpage rt_test_012_001
|
||||
* - @subpage rt_test_012_002
|
||||
* .
|
||||
*/
|
||||
|
||||
|
@ -66,7 +66,7 @@ static THD_FUNCTION(dyn_thread1, p) {
|
|||
|
||||
#if (CH_CFG_USE_HEAP) || defined(__DOXYGEN__)
|
||||
/**
|
||||
* @page test_012_001 [12.1] Threads creation from Memory Heap
|
||||
* @page rt_test_012_001 [12.1] Threads creation from Memory Heap
|
||||
*
|
||||
* <h2>Description</h2>
|
||||
* Two threads are started by allocating the memory from the Memory
|
||||
|
@ -92,11 +92,11 @@ static THD_FUNCTION(dyn_thread1, p) {
|
|||
* .
|
||||
*/
|
||||
|
||||
static void test_012_001_setup(void) {
|
||||
static void rt_test_012_001_setup(void) {
|
||||
chHeapObjectInit(&heap1, test_buffer, sizeof test_buffer);
|
||||
}
|
||||
|
||||
static void test_012_001_execute(void) {
|
||||
static void rt_test_012_001_execute(void) {
|
||||
size_t n1, total1, largest1;
|
||||
size_t n2, total2, largest2;
|
||||
tprio_t prio;
|
||||
|
@ -162,17 +162,17 @@ static void test_012_001_execute(void) {
|
|||
}
|
||||
}
|
||||
|
||||
static const testcase_t test_012_001 = {
|
||||
static const testcase_t rt_test_012_001 = {
|
||||
"Threads creation from Memory Heap",
|
||||
test_012_001_setup,
|
||||
rt_test_012_001_setup,
|
||||
NULL,
|
||||
test_012_001_execute
|
||||
rt_test_012_001_execute
|
||||
};
|
||||
#endif /* CH_CFG_USE_HEAP */
|
||||
|
||||
#if (CH_CFG_USE_MEMPOOLS) || defined(__DOXYGEN__)
|
||||
/**
|
||||
* @page test_012_002 [12.2] Threads creation from Memory Pool
|
||||
* @page rt_test_012_002 [12.2] Threads creation from Memory Pool
|
||||
*
|
||||
* <h2>Description</h2>
|
||||
* Five thread creation are attempted from a pool containing only four
|
||||
|
@ -196,11 +196,11 @@ static const testcase_t test_012_001 = {
|
|||
* .
|
||||
*/
|
||||
|
||||
static void test_012_002_setup(void) {
|
||||
static void rt_test_012_002_setup(void) {
|
||||
chPoolObjectInit(&mp1, THD_WORKING_AREA_SIZE(THREADS_STACK_SIZE), NULL);
|
||||
}
|
||||
|
||||
static void test_012_002_execute(void) {
|
||||
static void rt_test_012_002_execute(void) {
|
||||
unsigned i;
|
||||
tprio_t prio;
|
||||
|
||||
|
@ -256,11 +256,11 @@ static void test_012_002_execute(void) {
|
|||
}
|
||||
}
|
||||
|
||||
static const testcase_t test_012_002 = {
|
||||
static const testcase_t rt_test_012_002 = {
|
||||
"Threads creation from Memory Pool",
|
||||
test_012_002_setup,
|
||||
rt_test_012_002_setup,
|
||||
NULL,
|
||||
test_012_002_execute
|
||||
rt_test_012_002_execute
|
||||
};
|
||||
#endif /* CH_CFG_USE_MEMPOOLS */
|
||||
|
||||
|
@ -271,12 +271,12 @@ static const testcase_t test_012_002 = {
|
|||
/**
|
||||
* @brief Dynamic threads.
|
||||
*/
|
||||
const testcase_t * const test_sequence_012[] = {
|
||||
const testcase_t * const rt_test_sequence_012[] = {
|
||||
#if (CH_CFG_USE_HEAP) || defined(__DOXYGEN__)
|
||||
&test_012_001,
|
||||
&rt_test_012_001,
|
||||
#endif
|
||||
#if (CH_CFG_USE_MEMPOOLS) || defined(__DOXYGEN__)
|
||||
&test_012_002,
|
||||
&rt_test_012_002,
|
||||
#endif
|
||||
NULL
|
||||
};
|
|
@ -15,13 +15,13 @@
|
|||
*/
|
||||
|
||||
/**
|
||||
* @file test_sequence_012.h
|
||||
* @file rt_test_sequence_012.h
|
||||
* @brief Test Sequence 012 header.
|
||||
*/
|
||||
|
||||
#ifndef TEST_SEQUENCE_012_H
|
||||
#define TEST_SEQUENCE_012_H
|
||||
#ifndef RT_TEST_SEQUENCE_012_H
|
||||
#define RT_TEST_SEQUENCE_012_H
|
||||
|
||||
extern const testcase_t * const test_sequence_012[];
|
||||
extern const testcase_t * const rt_test_sequence_012[];
|
||||
|
||||
#endif /* TEST_SEQUENCE_012_H */
|
||||
#endif /* RT_TEST_SEQUENCE_012_H */
|
|
@ -16,15 +16,15 @@
|
|||
|
||||
#include "hal.h"
|
||||
#include "ch_test.h"
|
||||
#include "test_root.h"
|
||||
#include "rt_test_root.h"
|
||||
|
||||
/**
|
||||
* @file test_sequence_013.c
|
||||
* @file rt_test_sequence_013.c
|
||||
* @brief Test Sequence 013 code.
|
||||
*
|
||||
* @page test_sequence_013 [13] Benchmarks
|
||||
* @page rt_test_sequence_013 [13] Benchmarks
|
||||
*
|
||||
* File: @ref test_sequence_013.c
|
||||
* File: @ref rt_test_sequence_013.c
|
||||
*
|
||||
* <h2>Description</h2>
|
||||
* This module implements a series of system benchmarks. The benchmarks
|
||||
|
@ -35,18 +35,18 @@
|
|||
* regressions between successive ChibiOS/RT releases.
|
||||
*
|
||||
* <h2>Test Cases</h2>
|
||||
* - @subpage test_013_001
|
||||
* - @subpage test_013_002
|
||||
* - @subpage test_013_003
|
||||
* - @subpage test_013_004
|
||||
* - @subpage test_013_005
|
||||
* - @subpage test_013_006
|
||||
* - @subpage test_013_007
|
||||
* - @subpage test_013_008
|
||||
* - @subpage test_013_009
|
||||
* - @subpage test_013_010
|
||||
* - @subpage test_013_011
|
||||
* - @subpage test_013_012
|
||||
* - @subpage rt_test_013_001
|
||||
* - @subpage rt_test_013_002
|
||||
* - @subpage rt_test_013_003
|
||||
* - @subpage rt_test_013_004
|
||||
* - @subpage rt_test_013_005
|
||||
* - @subpage rt_test_013_006
|
||||
* - @subpage rt_test_013_007
|
||||
* - @subpage rt_test_013_008
|
||||
* - @subpage rt_test_013_009
|
||||
* - @subpage rt_test_013_010
|
||||
* - @subpage rt_test_013_011
|
||||
* - @subpage rt_test_013_012
|
||||
* .
|
||||
*/
|
||||
|
||||
|
@ -81,7 +81,7 @@ NOINLINE static unsigned int msg_loop_test(thread_t *tp) {
|
|||
|
||||
uint32_t n = 0;
|
||||
start = test_wait_tick();
|
||||
end = start + MS2ST(1000);
|
||||
end = start + TIME_MS2I(1000);
|
||||
do {
|
||||
(void)chMsgSend(tp, 1);
|
||||
n++;
|
||||
|
@ -141,7 +141,7 @@ static THD_FUNCTION(bmk_thread8, p) {
|
|||
|
||||
#if (CH_CFG_USE_MESSAGES) || defined(__DOXYGEN__)
|
||||
/**
|
||||
* @page test_013_001 [13.1] Messages performance #1
|
||||
* @page rt_test_013_001 [13.1] Messages performance #1
|
||||
*
|
||||
* <h2>Description</h2>
|
||||
* A message server thread is created with a lower priority than the
|
||||
|
@ -163,7 +163,7 @@ static THD_FUNCTION(bmk_thread8, p) {
|
|||
* .
|
||||
*/
|
||||
|
||||
static void test_013_001_execute(void) {
|
||||
static void rt_test_013_001_execute(void) {
|
||||
uint32_t n;
|
||||
|
||||
/* [13.1.1] The messenger thread is started at a lower priority than
|
||||
|
@ -192,17 +192,17 @@ static void test_013_001_execute(void) {
|
|||
}
|
||||
}
|
||||
|
||||
static const testcase_t test_013_001 = {
|
||||
static const testcase_t rt_test_013_001 = {
|
||||
"Messages performance #1",
|
||||
NULL,
|
||||
NULL,
|
||||
test_013_001_execute
|
||||
rt_test_013_001_execute
|
||||
};
|
||||
#endif /* CH_CFG_USE_MESSAGES */
|
||||
|
||||
#if (CH_CFG_USE_MESSAGES) || defined(__DOXYGEN__)
|
||||
/**
|
||||
* @page test_013_002 [13.2] Messages performance #2
|
||||
* @page rt_test_013_002 [13.2] Messages performance #2
|
||||
*
|
||||
* <h2>Description</h2>
|
||||
* A message server thread is created with an higher priority than the
|
||||
|
@ -224,7 +224,7 @@ static const testcase_t test_013_001 = {
|
|||
* .
|
||||
*/
|
||||
|
||||
static void test_013_002_execute(void) {
|
||||
static void rt_test_013_002_execute(void) {
|
||||
uint32_t n;
|
||||
|
||||
/* [13.2.1] The messenger thread is started at an higher priority
|
||||
|
@ -253,17 +253,17 @@ static void test_013_002_execute(void) {
|
|||
}
|
||||
}
|
||||
|
||||
static const testcase_t test_013_002 = {
|
||||
static const testcase_t rt_test_013_002 = {
|
||||
"Messages performance #2",
|
||||
NULL,
|
||||
NULL,
|
||||
test_013_002_execute
|
||||
rt_test_013_002_execute
|
||||
};
|
||||
#endif /* CH_CFG_USE_MESSAGES */
|
||||
|
||||
#if (CH_CFG_USE_MESSAGES) || defined(__DOXYGEN__)
|
||||
/**
|
||||
* @page test_013_003 [13.3] Messages performance #3
|
||||
* @page rt_test_013_003 [13.3] Messages performance #3
|
||||
*
|
||||
* <h2>Description</h2>
|
||||
* A message server thread is created with an higher priority than the
|
||||
|
@ -288,7 +288,7 @@ static const testcase_t test_013_002 = {
|
|||
* .
|
||||
*/
|
||||
|
||||
static void test_013_003_execute(void) {
|
||||
static void rt_test_013_003_execute(void) {
|
||||
uint32_t n;
|
||||
|
||||
/* [13.3.1] The messenger thread is started at an higher priority
|
||||
|
@ -327,16 +327,16 @@ static void test_013_003_execute(void) {
|
|||
}
|
||||
}
|
||||
|
||||
static const testcase_t test_013_003 = {
|
||||
static const testcase_t rt_test_013_003 = {
|
||||
"Messages performance #3",
|
||||
NULL,
|
||||
NULL,
|
||||
test_013_003_execute
|
||||
rt_test_013_003_execute
|
||||
};
|
||||
#endif /* CH_CFG_USE_MESSAGES */
|
||||
|
||||
/**
|
||||
* @page test_013_004 [13.4] Context Switch performance
|
||||
* @page rt_test_013_004 [13.4] Context Switch performance
|
||||
*
|
||||
* <h2>Description</h2>
|
||||
* A thread is created that just performs a @p chSchGoSleepS() into a
|
||||
|
@ -354,7 +354,7 @@ static const testcase_t test_013_003 = {
|
|||
* .
|
||||
*/
|
||||
|
||||
static void test_013_004_execute(void) {
|
||||
static void rt_test_013_004_execute(void) {
|
||||
thread_t *tp;
|
||||
uint32_t n;
|
||||
|
||||
|
@ -373,7 +373,7 @@ static void test_013_004_execute(void) {
|
|||
|
||||
n = 0;
|
||||
start = test_wait_tick();
|
||||
end = start + MS2ST(1000);
|
||||
end = start + TIME_MS2I(1000);
|
||||
do {
|
||||
chSysLock();
|
||||
chSchWakeupS(tp, MSG_OK);
|
||||
|
@ -406,15 +406,15 @@ static void test_013_004_execute(void) {
|
|||
}
|
||||
}
|
||||
|
||||
static const testcase_t test_013_004 = {
|
||||
static const testcase_t rt_test_013_004 = {
|
||||
"Context Switch performance",
|
||||
NULL,
|
||||
NULL,
|
||||
test_013_004_execute
|
||||
rt_test_013_004_execute
|
||||
};
|
||||
|
||||
/**
|
||||
* @page test_013_005 [13.5] Threads performance, full cycle
|
||||
* @page rt_test_013_005 [13.5] Threads performance, full cycle
|
||||
*
|
||||
* <h2>Description</h2>
|
||||
* Threads are continuously created and terminated into a loop. A full
|
||||
|
@ -431,7 +431,7 @@ static const testcase_t test_013_004 = {
|
|||
* .
|
||||
*/
|
||||
|
||||
static void test_013_005_execute(void) {
|
||||
static void rt_test_013_005_execute(void) {
|
||||
uint32_t n;
|
||||
tprio_t prio = chThdGetPriorityX() - 1;
|
||||
systime_t start, end;
|
||||
|
@ -443,7 +443,7 @@ static void test_013_005_execute(void) {
|
|||
{
|
||||
n = 0;
|
||||
start = test_wait_tick();
|
||||
end = start + MS2ST(1000);
|
||||
end = start + TIME_MS2I(1000);
|
||||
do {
|
||||
chThdWait(chThdCreateStatic(wa[0], WA_SIZE, prio, bmk_thread3, NULL));
|
||||
n++;
|
||||
|
@ -462,15 +462,15 @@ static void test_013_005_execute(void) {
|
|||
}
|
||||
}
|
||||
|
||||
static const testcase_t test_013_005 = {
|
||||
static const testcase_t rt_test_013_005 = {
|
||||
"Threads performance, full cycle",
|
||||
NULL,
|
||||
NULL,
|
||||
test_013_005_execute
|
||||
rt_test_013_005_execute
|
||||
};
|
||||
|
||||
/**
|
||||
* @page test_013_006 [13.6] Threads performance, create/exit only
|
||||
* @page rt_test_013_006 [13.6] Threads performance, create/exit only
|
||||
*
|
||||
* <h2>Description</h2>
|
||||
* Threads are continuously created and terminated into a loop. A
|
||||
|
@ -488,7 +488,7 @@ static const testcase_t test_013_005 = {
|
|||
* .
|
||||
*/
|
||||
|
||||
static void test_013_006_execute(void) {
|
||||
static void rt_test_013_006_execute(void) {
|
||||
uint32_t n;
|
||||
tprio_t prio = chThdGetPriorityX() + 1;
|
||||
systime_t start, end;
|
||||
|
@ -500,7 +500,7 @@ static void test_013_006_execute(void) {
|
|||
{
|
||||
n = 0;
|
||||
start = test_wait_tick();
|
||||
end = start + MS2ST(1000);
|
||||
end = start + TIME_MS2I(1000);
|
||||
do {
|
||||
#if CH_CFG_USE_REGISTRY
|
||||
chThdRelease(chThdCreateStatic(wa[0], WA_SIZE, prio, bmk_thread3, NULL));
|
||||
|
@ -523,16 +523,16 @@ static void test_013_006_execute(void) {
|
|||
}
|
||||
}
|
||||
|
||||
static const testcase_t test_013_006 = {
|
||||
static const testcase_t rt_test_013_006 = {
|
||||
"Threads performance, create/exit only",
|
||||
NULL,
|
||||
NULL,
|
||||
test_013_006_execute
|
||||
rt_test_013_006_execute
|
||||
};
|
||||
|
||||
#if (CH_CFG_USE_SEMAPHORES) || defined(__DOXYGEN__)
|
||||
/**
|
||||
* @page test_013_007 [13.7] Mass reschedule performance
|
||||
* @page rt_test_013_007 [13.7] Mass reschedule performance
|
||||
*
|
||||
* <h2>Description</h2>
|
||||
* Five threads are created and atomically rescheduled by resetting the
|
||||
|
@ -556,11 +556,11 @@ static const testcase_t test_013_006 = {
|
|||
* .
|
||||
*/
|
||||
|
||||
static void test_013_007_setup(void) {
|
||||
static void rt_test_013_007_setup(void) {
|
||||
chSemObjectInit(&sem1, 0);
|
||||
}
|
||||
|
||||
static void test_013_007_execute(void) {
|
||||
static void rt_test_013_007_execute(void) {
|
||||
uint32_t n;
|
||||
|
||||
/* [13.7.1] Five threads are created at higher priority that
|
||||
|
@ -582,7 +582,7 @@ static void test_013_007_execute(void) {
|
|||
|
||||
n = 0;
|
||||
start = test_wait_tick();
|
||||
end = start + MS2ST(1000);
|
||||
end = start + TIME_MS2I(1000);
|
||||
do {
|
||||
chSemReset(&sem1, 0);
|
||||
n++;
|
||||
|
@ -611,16 +611,16 @@ static void test_013_007_execute(void) {
|
|||
}
|
||||
}
|
||||
|
||||
static const testcase_t test_013_007 = {
|
||||
static const testcase_t rt_test_013_007 = {
|
||||
"Mass reschedule performance",
|
||||
test_013_007_setup,
|
||||
rt_test_013_007_setup,
|
||||
NULL,
|
||||
test_013_007_execute
|
||||
rt_test_013_007_execute
|
||||
};
|
||||
#endif /* CH_CFG_USE_SEMAPHORES */
|
||||
|
||||
/**
|
||||
* @page test_013_008 [13.8] Round-Robin voluntary reschedule
|
||||
* @page rt_test_013_008 [13.8] Round-Robin voluntary reschedule
|
||||
*
|
||||
* <h2>Description</h2>
|
||||
* Five threads are created at equal priority, each thread just
|
||||
|
@ -637,7 +637,7 @@ static const testcase_t test_013_007 = {
|
|||
* .
|
||||
*/
|
||||
|
||||
static void test_013_008_execute(void) {
|
||||
static void rt_test_013_008_execute(void) {
|
||||
uint32_t n;
|
||||
|
||||
/* [13.8.1] The five threads are created at lower priority. The
|
||||
|
@ -671,15 +671,15 @@ static void test_013_008_execute(void) {
|
|||
}
|
||||
}
|
||||
|
||||
static const testcase_t test_013_008 = {
|
||||
static const testcase_t rt_test_013_008 = {
|
||||
"Round-Robin voluntary reschedule",
|
||||
NULL,
|
||||
NULL,
|
||||
test_013_008_execute
|
||||
rt_test_013_008_execute
|
||||
};
|
||||
|
||||
/**
|
||||
* @page test_013_009 [13.9] Virtual Timers set/reset performance
|
||||
* @page rt_test_013_009 [13.9] Virtual Timers set/reset performance
|
||||
*
|
||||
* <h2>Description</h2>
|
||||
* A virtual timer is set and immediately reset into a continuous
|
||||
|
@ -694,7 +694,7 @@ static const testcase_t test_013_008 = {
|
|||
* .
|
||||
*/
|
||||
|
||||
static void test_013_009_execute(void) {
|
||||
static void rt_test_013_009_execute(void) {
|
||||
static virtual_timer_t vt1, vt2;
|
||||
uint32_t n;
|
||||
|
||||
|
@ -707,7 +707,7 @@ static void test_013_009_execute(void) {
|
|||
|
||||
n = 0;
|
||||
start = test_wait_tick();
|
||||
end = start + MS2ST(1000);
|
||||
end = start + TIME_MS2I(1000);
|
||||
do {
|
||||
chSysLock();
|
||||
chVTDoSetI(&vt1, 1, tmo, NULL);
|
||||
|
@ -731,16 +731,16 @@ static void test_013_009_execute(void) {
|
|||
}
|
||||
}
|
||||
|
||||
static const testcase_t test_013_009 = {
|
||||
static const testcase_t rt_test_013_009 = {
|
||||
"Virtual Timers set/reset performance",
|
||||
NULL,
|
||||
NULL,
|
||||
test_013_009_execute
|
||||
rt_test_013_009_execute
|
||||
};
|
||||
|
||||
#if (CH_CFG_USE_SEMAPHORES) || defined(__DOXYGEN__)
|
||||
/**
|
||||
* @page test_013_010 [13.10] Semaphores wait/signal performance
|
||||
* @page rt_test_013_010 [13.10] Semaphores wait/signal performance
|
||||
*
|
||||
* <h2>Description</h2>
|
||||
* A counting semaphore is taken/released into a continuous loop, no
|
||||
|
@ -761,11 +761,11 @@ static const testcase_t test_013_009 = {
|
|||
* .
|
||||
*/
|
||||
|
||||
static void test_013_010_setup(void) {
|
||||
static void rt_test_013_010_setup(void) {
|
||||
chSemObjectInit(&sem1, 1);
|
||||
}
|
||||
|
||||
static void test_013_010_execute(void) {
|
||||
static void rt_test_013_010_execute(void) {
|
||||
uint32_t n;
|
||||
|
||||
/* [13.10.1] A semaphore is teken and released. The operation is
|
||||
|
@ -776,7 +776,7 @@ static void test_013_010_execute(void) {
|
|||
|
||||
n = 0;
|
||||
start = test_wait_tick();
|
||||
end = start + MS2ST(1000);
|
||||
end = start + TIME_MS2I(1000);
|
||||
do {
|
||||
chSemWait(&sem1);
|
||||
chSemSignal(&sem1);
|
||||
|
@ -802,17 +802,17 @@ static void test_013_010_execute(void) {
|
|||
}
|
||||
}
|
||||
|
||||
static const testcase_t test_013_010 = {
|
||||
static const testcase_t rt_test_013_010 = {
|
||||
"Semaphores wait/signal performance",
|
||||
test_013_010_setup,
|
||||
rt_test_013_010_setup,
|
||||
NULL,
|
||||
test_013_010_execute
|
||||
rt_test_013_010_execute
|
||||
};
|
||||
#endif /* CH_CFG_USE_SEMAPHORES */
|
||||
|
||||
#if (CH_CFG_USE_MUTEXES) || defined(__DOXYGEN__)
|
||||
/**
|
||||
* @page test_013_011 [13.11] Mutexes lock/unlock performance
|
||||
* @page rt_test_013_011 [13.11] Mutexes lock/unlock performance
|
||||
*
|
||||
* <h2>Description</h2>
|
||||
* A mutex is locked/unlocked into a continuous loop, no Context Switch
|
||||
|
@ -833,11 +833,11 @@ static const testcase_t test_013_010 = {
|
|||
* .
|
||||
*/
|
||||
|
||||
static void test_013_011_setup(void) {
|
||||
static void rt_test_013_011_setup(void) {
|
||||
chMtxObjectInit(&mtx1);
|
||||
}
|
||||
|
||||
static void test_013_011_execute(void) {
|
||||
static void rt_test_013_011_execute(void) {
|
||||
uint32_t n;
|
||||
|
||||
/* [13.11.1] A mutex is locked and unlocked. The operation is
|
||||
|
@ -848,7 +848,7 @@ static void test_013_011_execute(void) {
|
|||
|
||||
n = 0;
|
||||
start = test_wait_tick();
|
||||
end = start + MS2ST(1000);
|
||||
end = start + TIME_MS2I(1000);
|
||||
do {
|
||||
chMtxLock(&mtx1);
|
||||
chMtxUnlock(&mtx1);
|
||||
|
@ -874,16 +874,16 @@ static void test_013_011_execute(void) {
|
|||
}
|
||||
}
|
||||
|
||||
static const testcase_t test_013_011 = {
|
||||
static const testcase_t rt_test_013_011 = {
|
||||
"Mutexes lock/unlock performance",
|
||||
test_013_011_setup,
|
||||
rt_test_013_011_setup,
|
||||
NULL,
|
||||
test_013_011_execute
|
||||
rt_test_013_011_execute
|
||||
};
|
||||
#endif /* CH_CFG_USE_MUTEXES */
|
||||
|
||||
/**
|
||||
* @page test_013_012 [13.12] RAM Footprint
|
||||
* @page rt_test_013_012 [13.12] RAM Footprint
|
||||
*
|
||||
* <h2>Description</h2>
|
||||
* The memory size of the various kernel objects is printed.
|
||||
|
@ -901,7 +901,7 @@ static const testcase_t test_013_011 = {
|
|||
* .
|
||||
*/
|
||||
|
||||
static void test_013_012_execute(void) {
|
||||
static void rt_test_013_012_execute(void) {
|
||||
|
||||
/* [13.12.1] The size of the system area is printed.*/
|
||||
test_set_step(1);
|
||||
|
@ -988,11 +988,11 @@ static void test_013_012_execute(void) {
|
|||
}
|
||||
}
|
||||
|
||||
static const testcase_t test_013_012 = {
|
||||
static const testcase_t rt_test_013_012 = {
|
||||
"RAM Footprint",
|
||||
NULL,
|
||||
NULL,
|
||||
test_013_012_execute
|
||||
rt_test_013_012_execute
|
||||
};
|
||||
|
||||
/****************************************************************************
|
||||
|
@ -1002,30 +1002,30 @@ static const testcase_t test_013_012 = {
|
|||
/**
|
||||
* @brief Benchmarks.
|
||||
*/
|
||||
const testcase_t * const test_sequence_013[] = {
|
||||
const testcase_t * const rt_test_sequence_013[] = {
|
||||
#if (CH_CFG_USE_MESSAGES) || defined(__DOXYGEN__)
|
||||
&test_013_001,
|
||||
&rt_test_013_001,
|
||||
#endif
|
||||
#if (CH_CFG_USE_MESSAGES) || defined(__DOXYGEN__)
|
||||
&test_013_002,
|
||||
&rt_test_013_002,
|
||||
#endif
|
||||
#if (CH_CFG_USE_MESSAGES) || defined(__DOXYGEN__)
|
||||
&test_013_003,
|
||||
&rt_test_013_003,
|
||||
#endif
|
||||
&test_013_004,
|
||||
&test_013_005,
|
||||
&test_013_006,
|
||||
&rt_test_013_004,
|
||||
&rt_test_013_005,
|
||||
&rt_test_013_006,
|
||||
#if (CH_CFG_USE_SEMAPHORES) || defined(__DOXYGEN__)
|
||||
&test_013_007,
|
||||
&rt_test_013_007,
|
||||
#endif
|
||||
&test_013_008,
|
||||
&test_013_009,
|
||||
&rt_test_013_008,
|
||||
&rt_test_013_009,
|
||||
#if (CH_CFG_USE_SEMAPHORES) || defined(__DOXYGEN__)
|
||||
&test_013_010,
|
||||
&rt_test_013_010,
|
||||
#endif
|
||||
#if (CH_CFG_USE_MUTEXES) || defined(__DOXYGEN__)
|
||||
&test_013_011,
|
||||
&rt_test_013_011,
|
||||
#endif
|
||||
&test_013_012,
|
||||
&rt_test_013_012,
|
||||
NULL
|
||||
};
|
|
@ -15,13 +15,13 @@
|
|||
*/
|
||||
|
||||
/**
|
||||
* @file test_sequence_013.h
|
||||
* @file rt_test_sequence_013.h
|
||||
* @brief Test Sequence 013 header.
|
||||
*/
|
||||
|
||||
#ifndef TEST_SEQUENCE_013_H
|
||||
#define TEST_SEQUENCE_013_H
|
||||
#ifndef RT_TEST_SEQUENCE_013_H
|
||||
#define RT_TEST_SEQUENCE_013_H
|
||||
|
||||
extern const testcase_t * const test_sequence_013[];
|
||||
extern const testcase_t * const rt_test_sequence_013[];
|
||||
|
||||
#endif /* TEST_SEQUENCE_013_H */
|
||||
#endif /* RT_TEST_SEQUENCE_013_H */
|
|
@ -1,19 +1,19 @@
|
|||
# List of all the ChibiOS/RT test files.
|
||||
TESTSRC = ${CHIBIOS}/test/lib/ch_test.c \
|
||||
${CHIBIOS}/test/rt/source/test/test_root.c \
|
||||
${CHIBIOS}/test/rt/source/test/test_sequence_001.c \
|
||||
${CHIBIOS}/test/rt/source/test/test_sequence_002.c \
|
||||
${CHIBIOS}/test/rt/source/test/test_sequence_003.c \
|
||||
${CHIBIOS}/test/rt/source/test/test_sequence_004.c \
|
||||
${CHIBIOS}/test/rt/source/test/test_sequence_005.c \
|
||||
${CHIBIOS}/test/rt/source/test/test_sequence_006.c \
|
||||
${CHIBIOS}/test/rt/source/test/test_sequence_007.c \
|
||||
${CHIBIOS}/test/rt/source/test/test_sequence_008.c \
|
||||
${CHIBIOS}/test/rt/source/test/test_sequence_009.c \
|
||||
${CHIBIOS}/test/rt/source/test/test_sequence_010.c \
|
||||
${CHIBIOS}/test/rt/source/test/test_sequence_011.c \
|
||||
${CHIBIOS}/test/rt/source/test/test_sequence_012.c \
|
||||
${CHIBIOS}/test/rt/source/test/test_sequence_013.c
|
||||
${CHIBIOS}/test/rt/source/test/rt_test_root.c \
|
||||
${CHIBIOS}/test/rt/source/test/rt_test_sequence_001.c \
|
||||
${CHIBIOS}/test/rt/source/test/rt_test_sequence_002.c \
|
||||
${CHIBIOS}/test/rt/source/test/rt_test_sequence_003.c \
|
||||
${CHIBIOS}/test/rt/source/test/rt_test_sequence_004.c \
|
||||
${CHIBIOS}/test/rt/source/test/rt_test_sequence_005.c \
|
||||
${CHIBIOS}/test/rt/source/test/rt_test_sequence_006.c \
|
||||
${CHIBIOS}/test/rt/source/test/rt_test_sequence_007.c \
|
||||
${CHIBIOS}/test/rt/source/test/rt_test_sequence_008.c \
|
||||
${CHIBIOS}/test/rt/source/test/rt_test_sequence_009.c \
|
||||
${CHIBIOS}/test/rt/source/test/rt_test_sequence_010.c \
|
||||
${CHIBIOS}/test/rt/source/test/rt_test_sequence_011.c \
|
||||
${CHIBIOS}/test/rt/source/test/rt_test_sequence_012.c \
|
||||
${CHIBIOS}/test/rt/source/test/rt_test_sequence_013.c
|
||||
|
||||
# Required include directories
|
||||
TESTINC = ${CHIBIOS}/test/lib \
|
||||
|
|
Loading…
Reference in New Issue