diff options
author | gdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4> | 2009-05-07 15:24:47 +0000 |
---|---|---|
committer | gdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4> | 2009-05-07 15:24:47 +0000 |
commit | aea323e12179301b00e7766fc97dc3d3b51576d9 (patch) | |
tree | 4d6bf9467a957ee7ac26dc33fa69779b76fb8727 | |
parent | fcd92814ce79c541fdaf3a6ef1ecfd497d75c7fd (diff) | |
download | ChibiOS-aea323e12179301b00e7766fc97dc3d3b51576d9.tar.gz ChibiOS-aea323e12179301b00e7766fc97dc3d3b51576d9.tar.bz2 ChibiOS-aea323e12179301b00e7766fc97dc3d3b51576d9.zip |
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@949 35acf78f-673a-0410-8e92-d51de3d6d3f4
-rw-r--r-- | docs/Doxyfile | 12 | ||||
-rw-r--r-- | docs/src/articles.dox | 2 | ||||
-rw-r--r-- | docs/src/atomic.dox | 2 | ||||
-rw-r--r-- | docs/src/concepts.dox | 2 | ||||
-rw-r--r-- | docs/src/design.dox | 2 | ||||
-rw-r--r-- | docs/src/goals.dox | 2 | ||||
-rw-r--r-- | docs/src/interrupts.dox | 2 | ||||
-rw-r--r-- | docs/src/jitter.dox | 2 | ||||
-rw-r--r-- | docs/src/licfaq.dox | 2 | ||||
-rw-r--r-- | docs/src/main.dox | 21 | ||||
-rw-r--r-- | docs/src/mutualexcl.dox | 2 | ||||
-rw-r--r-- | docs/src/portguide.dox | 2 | ||||
-rw-r--r-- | docs/src/saveram.dox | 2 | ||||
-rw-r--r-- | docs/src/stacks.dox | 2 | ||||
-rw-r--r-- | docs/src/timing.dox | 2 | ||||
-rw-r--r-- | src/templates/chconf.h | 1 | ||||
-rw-r--r-- | test/test.c | 2 | ||||
-rw-r--r-- | test/test.mk | 3 | ||||
-rw-r--r-- | test/testqueues.c | 49 | ||||
-rw-r--r-- | test/testserial.c | 65 | ||||
-rw-r--r-- | test/testserial.h | 25 | ||||
-rw-r--r-- | test/testthd.c | 71 |
22 files changed, 239 insertions, 36 deletions
diff --git a/docs/Doxyfile b/docs/Doxyfile index d6c461d6c..a7ee51445 100644 --- a/docs/Doxyfile +++ b/docs/Doxyfile @@ -573,10 +573,11 @@ WARN_LOGFILE = # directories like "/usr/src/myproject". Separate the files or directories # with spaces. -INPUT = ../src/include \ +INPUT = ../docs/src \ + ../src/include \ ../src/templates \ ../src \ - ../docs/src \ + ../test \ ../src/lib \ ../ports/ARM7 \ ../ports/ARM7/crt0.s \ @@ -637,7 +638,7 @@ FILE_PATTERNS = *.c \ # should be searched for input files as well. Possible values are YES and NO. # If left blank NO is used. -RECURSIVE = YES +RECURSIVE = NO # The EXCLUDE tag can be used to specify files and/or directories that should # excluded from the INPUT source files. This way you can easily exclude a @@ -1298,17 +1299,12 @@ PREDEFINED = __DOXYGEN__ \ CH_USE_CONDVARS_TIMEOUT=1 \ CH_USE_EVENTS=1 \ CH_USE_EVENTS_TIMEOUT=1 \ - CH_USE_EXIT_EVENT=1 \ CH_USE_QUEUES=1 \ - CH_USE_QUEUES_TIMEOUT=1 \ - CH_USE_QUEUES_HALFDUPLEX=1 \ CH_USE_SERIAL_FULLDUPLEX=1 \ - CH_USE_SERIAL_HALFDUPLEX=1 \ CH_USE_HEAP=1 \ CH_USE_MEMPOOLS=1 \ CH_USE_MESSAGES=1 \ CH_USE_MAILBOXES=1 \ - CH_USE_MESSAGES_EVENT=1 \ CH_USE_DYNAMIC=1 \ CH_DBG_ENABLE_ASSERTS=1 \ CH_DBG_ENABLE_CHECKS=1 \ diff --git a/docs/src/articles.dox b/docs/src/articles.dox index 66268f9d7..e9849782c 100644 --- a/docs/src/articles.dox +++ b/docs/src/articles.dox @@ -19,7 +19,6 @@ /**
* @page articles Articles
- * @{
* ChibiOS/RT Articles and Code Examples:
* - @subpage article_stacks
* - @subpage article_mutual_exclusion
@@ -32,4 +31,3 @@ * - @subpage article_design
* .
*/
-/** @} */
diff --git a/docs/src/atomic.dox b/docs/src/atomic.dox index 5fb0bc628..5e2fb58cd 100644 --- a/docs/src/atomic.dox +++ b/docs/src/atomic.dox @@ -19,7 +19,6 @@ /**
* @page article_atomic Invoking multiple primitives as a single atomic operation
- * @{
* It is often necessary to invoke multiple operations involving a
* reschedulation as a single atomic operation.<br>
* ChibiOS/RT already implements APIs that perform complex operations, as
@@ -56,4 +55,3 @@ * API. An extra @p chSchRescheduleS() can be present at the very end of the
* block, it only reschedules if a reschedulation is still required.
*/
-/** @} */
diff --git a/docs/src/concepts.dox b/docs/src/concepts.dox index ed37ed349..8a7418b53 100644 --- a/docs/src/concepts.dox +++ b/docs/src/concepts.dox @@ -19,7 +19,6 @@ /**
* @page concepts Concepts and Architecture
- * @{
* @brief ChibiOS/RT Concepts and Architecture
* - @ref naming
* - @ref api_suffixes
@@ -261,4 +260,3 @@ * extra layers, this is just not part of the kernel architecture but part of
* the overall system design.
*/
-/** @} */
diff --git a/docs/src/design.dox b/docs/src/design.dox index 4b6780a7a..bc88edf6f 100644 --- a/docs/src/design.dox +++ b/docs/src/design.dox @@ -19,7 +19,6 @@ /**
* @page article_design Designing an embedded application
- * @{
* ChibiOS/RT offers a variety of mechanisms and primitives, often it is
* better to focus on a single approach for the system design and use only
* part of the available subsystems.<br>
@@ -109,4 +108,3 @@ * it. The OS is a toolbox that offers a lot of tools but you don't have
* to use them all necessarily.
*/
-/** @} */
diff --git a/docs/src/goals.dox b/docs/src/goals.dox index 46c092086..e7a26fb3f 100644 --- a/docs/src/goals.dox +++ b/docs/src/goals.dox @@ -19,7 +19,6 @@ /**
* @page goals Project Goals
- * @{
* <h2>Another RTOS?</h2>
* The first question to be answered is: there was really the need for YET
* ANOTHER RTOS?<br>
@@ -87,4 +86,3 @@ * code is released as well, all the included demos are capable of executing
* the test suite and the OS benchmarks.
*/
-/** @} */
diff --git a/docs/src/interrupts.dox b/docs/src/interrupts.dox index d2dfb70b5..95bd6c281 100644 --- a/docs/src/interrupts.dox +++ b/docs/src/interrupts.dox @@ -19,7 +19,6 @@ /**
* @page article_interrupts Writing interrupt handlers under ChibiOS/RT
- * @{
* Since version 1.1.0 ChibiOS/RT offers a cross-platform method for writing
* interrupt handlers. Port-related and compiler-related details are
* encapsulated within standard system macros.<br>
@@ -50,5 +49,4 @@ CH_IRQ_HANDLER(myIRQ) { * please read about it in the ARM7 port section: @ref ARM7_IH
* .
*/
-/** @} */
\ No newline at end of file diff --git a/docs/src/jitter.dox b/docs/src/jitter.dox index 747a07a7e..5f4e7ff5e 100644 --- a/docs/src/jitter.dox +++ b/docs/src/jitter.dox @@ -19,7 +19,6 @@ /**
* @page article_jitter Response Time and Jitter
- * @{
* Response time jitter is one of the most sneaky source of problems when
* designing a real time system. When using a RTOS like ChibiOS/RT one must
* be aware of what the jitter is and how it can affect the performance of the
@@ -134,4 +133,3 @@ * subsystem can improve the overall response time and reduce jitter but it is
* not a magic wand, a proper system design comes first.
*/
-/** @} */
diff --git a/docs/src/licfaq.dox b/docs/src/licfaq.dox index f3bf3c3a1..58e99a2bb 100644 --- a/docs/src/licfaq.dox +++ b/docs/src/licfaq.dox @@ -19,7 +19,6 @@ /**
* @page lic_faq License and F.A.Q.
- * @{
* ChibiOS/RT is a <a href="http://www.gnu.org/licenses" target="_top">
* GPL3</a>-licensed product but it offers a linking exception in its stable
* releases.<br>
@@ -89,5 +88,4 @@ Program code and other code used in conjunction with the Program except the Non-GPL Code covered by this exception.
*
*/
-/** @} */
\ No newline at end of file diff --git a/docs/src/main.dox b/docs/src/main.dox index 2e76e0a75..bf6eecd54 100644 --- a/docs/src/main.dox +++ b/docs/src/main.dox @@ -65,6 +65,27 @@ */
/**
+ * @page TEST_SUITE Tests Description
+ * <h2>Descriptions</h2>
+ * Most of the ChibiOS/RT demos link a set of software modules (test suite) in
+ * order to verify the proper working of the kernel, the port and the demo
+ * itself.<br>
+ * Each Test Module performs a series of tests on a specified subbsystem or
+ * subsystems and can report a failure/success status and/or a performance
+ * index as the test suite output.<br>
+ * The test suite is usually activated in the demo applications by pressing a
+ * button on the target board, see the readme into the various demos
+ * directories. The test suite output is usually sent through a serial port and
+ * can be examined by using a terminal emulator program.
+ *
+ * <h2>Test Modules</h2>
+ * - @subpage test_threads
+ * - @subpage test_queues
+ * - @subpage test_serial
+ * .
+ */
+
+/**
* @defgroup Ports Ports
* This section describes the technical details for the various supported
* ChibiOS/RT ports.
diff --git a/docs/src/mutualexcl.dox b/docs/src/mutualexcl.dox index ae6f57c0a..69eb65dc8 100644 --- a/docs/src/mutualexcl.dox +++ b/docs/src/mutualexcl.dox @@ -19,7 +19,6 @@ /**
* @page article_mutual_exclusion Mutual Exclusion guide
- * @{
* The most common problem when writing multithreaded code is the
* synchronization on the shared resources/services.<br>
* ChibiOS/RT offers a rich variety of mechanisms that apparently solve the
@@ -209,4 +208,3 @@ * - Requires a dedicated thread as server.
* .
*/
-/** @} */
diff --git a/docs/src/portguide.dox b/docs/src/portguide.dox index 57216885d..14a3c2eca 100644 --- a/docs/src/portguide.dox +++ b/docs/src/portguide.dox @@ -19,7 +19,6 @@ /**
* @page article_portguide Porting ChibiOS/RT for Dummies
- * @{
* Porting the operating system on a new platform is one of the most common
* tasks. The difficulty can range from easy to very difficult depending
* on several factors.<br>
@@ -111,4 +110,3 @@ * the OS template files, the hardest part is decide the correct and efficient
* way to implement the context switching.
*/
-/** @} */
diff --git a/docs/src/saveram.dox b/docs/src/saveram.dox index 7a1f6f662..6682fe0fe 100644 --- a/docs/src/saveram.dox +++ b/docs/src/saveram.dox @@ -19,7 +19,6 @@ /**
* @page article_saveram Saving RAM by declaring thread functions "noreturn"
- * @{
* One of the problems, when writing embedded multi-threaded applications,
* is that the thread functions do save the registers in the function
* entry code even if the system does not require it, exiting such
@@ -80,4 +79,3 @@ main() { * need to save registers. The code will be a bit less readable and less
* portable on other compilers however.
*/
-/** @} */
diff --git a/docs/src/stacks.dox b/docs/src/stacks.dox index a27c2e1b9..6035e1277 100644 --- a/docs/src/stacks.dox +++ b/docs/src/stacks.dox @@ -19,7 +19,6 @@ /**
* @page article_stacks Stacks and stack sizes
- * @{
* In a RTOS like ChibiOS/RT there are several dedicated stacks, each stack
* has a dedicated RAM space that must have a correctly sized assigned area.
* <h2>The stacks</h2>
@@ -104,4 +103,3 @@ * end of your development cycle.
* .
*/
-/** @} */
diff --git a/docs/src/timing.dox b/docs/src/timing.dox index 9e013c412..a09db8575 100644 --- a/docs/src/timing.dox +++ b/docs/src/timing.dox @@ -19,7 +19,6 @@ /**
* @page article_timing Reliable timings using Threads
- * @{
* One common task is to have threads do something at regular, scheduled,
* intervals.
* An obvious solution is to write something like this:
@@ -58,4 +57,3 @@ msg_t my_thread(void *param) { * deadline time and the error will not accumulate over time regardless of
* the execution time and delays inserted by other threads.
*/
-/** @} */
diff --git a/src/templates/chconf.h b/src/templates/chconf.h index 9909a60d3..a7b840bf1 100644 --- a/src/templates/chconf.h +++ b/src/templates/chconf.h @@ -228,6 +228,7 @@ * If specified then the Asynchronous Messages (Mailboxes) APIs are included
* in the kernel.
* @note The default is @p TRUE.
+ * @note Requires @p CH_USE_SEMAPHORES.
*/
#if !defined(CH_USE_MAILBOXES) || defined(__DOXYGEN__)
#define CH_USE_MAILBOXES TRUE
diff --git a/test/test.c b/test/test.c index 3ca3d8a8a..02e56788a 100644 --- a/test/test.c +++ b/test/test.c @@ -30,6 +30,7 @@ #include "testpools.h"
#include "testdyn.h"
#include "testqueues.h"
+#include "testserial.h"
#include "testbmk.h"
/*
@@ -46,6 +47,7 @@ static const struct testcase **patterns[] = { patternpools,
patterndyn,
patternqueues,
+ patternserial,
patternbmk,
NULL
};
diff --git a/test/test.mk b/test/test.mk index 2a3e1a4f9..f80237f8a 100644 --- a/test/test.mk +++ b/test/test.mk @@ -4,7 +4,8 @@ TESTSRC = ../../test/test.c ../../test/testthd.c \ ../../test/testmsg.c ../../test/testmbox.c \
../../test/testevt.c ../../test/testheap.c \
../../test/testpools.c ../../test/testdyn.c \
- ../../test/testqueues.c ../../test/testbmk.c
+ ../../test/testqueues.c ../../test/testserial.c \
+ ../../test/testbmk.c
# Required include directories
TESTINC = ../../test
diff --git a/test/testqueues.c b/test/testqueues.c index e3faf71f0..2781b3479 100644 --- a/test/testqueues.c +++ b/test/testqueues.c @@ -21,10 +21,51 @@ #include "test.h"
+/**
+ * @page test_queues I/O Queues test
+ *
+ * <h2>Description</h2>
+ * This module implements the test sequence for the @ref IOQueues subsystem.
+ * The tests are performed by inserting and removing data from queues and by
+ * checking both the queues status and the correct sequence of the extracted
+ * data.
+ *
+ * <h2>Objective</h2>
+ * Objective of the test module is to cover 100% of the @ref IOQueues code
+ * as a necessary step in order to assess its readyness.<br>
+ * Note that the @ref IOQueues subsystem depends on the @ref Semaphores
+ * subsystem that has to met its testing objectives as well.
+ *
+ * <h2>Preconditions</h2>
+ * The module requires the following kernel options:
+ * - @p CH_USE_QUEUES (and dependent options)
+ * .
+ * In case of the required options are not enabled some or all tests may be
+ * skipped.
+ *
+ * <h2>Waivers</h2>
+ * None.
+ *
+ * <h2>Test Cases</h2>
+ * - @subpage test_queues_001
+ * - @subpage test_queues_002
+ * .
+ * @file testqueues.c
+ * @file testqueues.h
+ */
+
#if CH_USE_QUEUES
#define TEST_QUEUES_SIZE 4
+/**
+ * @page test_queues_001 Input Queues functionality and APIs
+ *
+ * <h2>Description</h2>
+ * This test case tests sysnchronos and asynchronous operations on an
+ * @p InputQueue object including timeouts. The queue state must remain
+ * consistent through the whole test.
+ */
static void notify(void) {}
static char *queues1_gettest(void) {
@@ -81,6 +122,14 @@ const struct testcase testqueues1 = { queues1_execute
};
+/**
+ * @page test_queues_002 Output Queues functionality and APIs
+ *
+ * <h2>Description</h2>
+ * This test case tests sysnchronos and asynchronous operations on an
+ * @p OutputQueue object including timeouts. The queue state must remain
+ * consistent through the whole test.
+ */
static char *queues2_gettest(void) {
return "Queues, output queues";
diff --git a/test/testserial.c b/test/testserial.c new file mode 100644 index 000000000..a10529493 --- /dev/null +++ b/test/testserial.c @@ -0,0 +1,65 @@ +/* + ChibiOS/RT - Copyright (C) 2006-2007 Giovanni Di Sirio. + + This file is part of ChibiOS/RT. + + ChibiOS/RT is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS/RT is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ + +#include <ch.h> + +#include "test.h" + +/** + * @page test_serial Serial Driver test + * + * <h2>Description</h2> + * This module implements the test sequence for the @ref Serial subsystem. + * The tests are performed on a loopback software serial driver where a + * dedicated thread echoes back in the input queue the data read from the + * output queue at a fixed rate. + * + * <h2>Objective</h2> + * Objective of the test module is to cover 100% of the @ref Serial code + * as a necessary step in order to assess its readyness.<br> + * Note that the @ref Serial subsystem depends on the @ref Semaphores and + * @ref Events subsystems that have to met their testing objectives as well. + * + * <h2>Preconditions</h2> + * The module requires the following kernel options: + * - @p CH_USE_SERIAL_FULLDUPLEX (and dependent options) + * . + * In case of the required options are not enabled some or all tests may be + * skipped. + * + * <h2>Waivers</h2> + * None. + * + * @file testserial.c + * @file testserial.h + */ + +#if CH_USE_SERIAL_FULLDUPLEX + +#endif /* CH_USE_SERIAL_FULLDUPLEX */ + +/* + * Test sequence for queues pattern. + */ +const struct testcase * const patternserial[] = { +#if CH_USE_SERIAL_FULLDUPLEX + &testserial1, +#endif + NULL +}; diff --git a/test/testserial.h b/test/testserial.h new file mode 100644 index 000000000..3e68dd9c7 --- /dev/null +++ b/test/testserial.h @@ -0,0 +1,25 @@ +/* + ChibiOS/RT - Copyright (C) 2006-2007 Giovanni Di Sirio. + + This file is part of ChibiOS/RT. + + ChibiOS/RT is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS/RT is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ + +#ifndef _TESTSERIAL_H_ +#define _TESTSERIAL_H_ + +extern const struct testcase *patternserial[]; + +#endif /* _TESTSERIAL_H_ */ diff --git a/test/testthd.c b/test/testthd.c index e4e15be52..e44531868 100644 --- a/test/testthd.c +++ b/test/testthd.c @@ -21,6 +21,47 @@ #include "test.h"
+/**
+ * @page test_threads Threads and Scheduler test
+ *
+ * <h2>Description</h2>
+ * This module implements the test sequence for the @ref Scheduler,
+ * @ref Threads and @ref Time subsystems.<br>
+ * Note that the tests on those subsystems are formally required but most of
+ * their functionality is already demostrated because the test suite itself
+ * depends on them, anyway doublecheck is good.
+ *
+ * <h2>Objective</h2>
+ * Objective of the test module is to cover 100% of the subsystems code
+ * as a necessary step in order to assess their readyness.<br>
+ *
+ * <h2>Preconditions</h2>
+ * None.
+ *
+ * <h2>Waivers</h2>
+ * - The @p chThdExit() API is not code 100% covered because it cannot return.
+ * It must work this way by design.
+ * .
+ * <h2>Test Cases</h2>
+ * - @subpage test_threads_001
+ * - @subpage test_threads_002
+ * - @subpage test_threads_003
+ * - @subpage test_threads_004
+ * .
+ * @file testthd.c
+ * @file testthd.h
+ */
+
+/**
+ * @page test_threads_001 Ready List functionality #1
+ *
+ * <h2>Description</h2>
+ * Five threads, with increasing priority, are enqueued in the ready list
+ * and atomically executed.<br>
+ * The test expects the threads to perform their operations in increasing
+ * priority order redardless of the initial order.
+ */
+
static msg_t thread(void *p) {
test_emit_token(*(char *)p);
@@ -50,6 +91,16 @@ const struct testcase testthd1 = { thd1_execute
};
+/**
+ * @page test_threads_002 Ready List functionality #2
+ *
+ * <h2>Description</h2>
+ * Five threads, with pseudo-random priority, are enqueued in the ready list
+ * and atomically executed.<br>
+ * The test expects the threads to perform their operations in increasing
+ * priority order redardless of the initial order.
+ */
+
static char *thd2_gettest(void) {
return "Threads, enqueuing test #2";
@@ -73,6 +124,16 @@ const struct testcase testthd2 = { thd2_execute
};
+/**
+ * @page test_threads_003 Threads priority change test
+ *
+ * <h2>Description</h2>
+ * A series of priority changes are performed on the current thread in order
+ * to verify that the priority change happens as expected.<br>
+ * If the @p CH_USE_MUTEXES option is enabled then the priority changes are
+ * also tested under priority inheritance boosted priority state.
+ */
+
static char *thd3_gettest(void) {
return "Threads, priority change";
@@ -133,6 +194,14 @@ const struct testcase testthd3 = { thd3_execute
};
+/**
+ * @page test_threads_004 Threads delays test
+ *
+ * <h2>Description</h2>
+ * Delay APIs and associated macros are tested, the invoking thread is verified
+ * to wake up at the exact expected time.
+ */
+
static char *thd4_gettest(void) {
return "Threads, delays";
@@ -172,7 +241,7 @@ const struct testcase testthd4 = { };
/*
- * Test sequence for ready list pattern.
+ * Test sequence for threads patterns.
*/
const struct testcase * const patternthd[] = {
&testthd1,
|