aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorgdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4>2007-11-29 09:16:53 +0000
committergdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4>2007-11-29 09:16:53 +0000
commitf20b97abe74cfbb1f28ef70043cf718fbebf4fa4 (patch)
tree818f5beab307c6cb813f4f9721950667bd6df0cf
parent6f0569444dafdae8b367a54a07a4bfaf3675f545 (diff)
downloadChibiOS-f20b97abe74cfbb1f28ef70043cf718fbebf4fa4.tar.gz
ChibiOS-f20b97abe74cfbb1f28ef70043cf718fbebf4fa4.tar.bz2
ChibiOS-f20b97abe74cfbb1f28ef70043cf718fbebf4fa4.zip
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@118 35acf78f-673a-0410-8e92-d51de3d6d3f4
-rw-r--r--readme.txt26
-rw-r--r--test/test.c31
2 files changed, 44 insertions, 13 deletions
diff --git a/readme.txt b/readme.txt
index 7399f6948..60770c779 100644
--- a/readme.txt
+++ b/readme.txt
@@ -23,17 +23,17 @@
Current ports under ./demos:
-Win32-MinGW - ChibiOS/RT simulator and demo into a WIN32 process,
- MinGW version.
-Win32-MSVS - ChibiOS/RT simulator and demo into a WIN32 process,
- Visual Studio 7 or any later version should work.
-ARM7-LPC214x-GCC - ChibiOS/RT port for ARM7 LPC2148, the demo targets the
- Olimex LPC-P2148 board. This port can be easily
- modified for any processor into the LPC2000 family or
- other boards. The demo can be compiled using YAGARTO
- or any other GCC-based ARM toolchain. Full demo.
-ARM7-LPC214x-GCC-min - Minimal demo for LPC214X.
-AVR-AT90CANx-GCC - Port on AVR AT90CAN128, not complete yet.
+Win32-MinGW - ChibiOS/RT simulator and demo into a WIN32 process,
+ MinGW version.
+Win32-MSVS - ChibiOS/RT simulator and demo into a WIN32 process,
+ Visual Studio 7 or any later version should work.
+ARM7-LPC214x-GCC - ChibiOS/RT port for ARM7 LPC2148, the demo targets
+ the Olimex LPC-P2148 board. This port can be easily
+ modified for any processor into the LPC2000 family or
+ other boards. The demo can be compiled using YAGARTO
+ or any other GCC-based ARM toolchain. Full demo.
+ARM7-LPC214x-GCC-min - Minimal demo for LPC214X.
+AVR-AT90CANx-GCC - Port on AVR AT90CAN128, not complete yet.
*****************************************************************************
*** Releases ***
@@ -44,6 +44,10 @@ AVR-AT90CANx-GCC - Port on AVR AT90CAN128, not complete yet.
chEvtWaitTimeout() code if it is enabled.
- Size optimization in the semaphores code, now the chSemWaitTimeout() just
invokes the chSemWaitTimeoutS() inside its system mutex zone.
+- Added a threads create/exit/wait benchmark to the test suite, the system
+ is capable of 81712 threads started/terminated per second on the reference
+ LPC2148 board. The figure is inclusive of two context switch operations
+ for each thread.
- Minor improvement in the LPC214x serial driver, unneeded events were
generated in some rare cases.
- Fixed a chSysInit() documentation error.
diff --git a/test/test.c b/test/test.c
index 412e46866..7ea1bb89c 100644
--- a/test/test.c
+++ b/test/test.c
@@ -19,7 +19,9 @@
#include <ch.h>
+#if defined(WIN32)
void ChkIntSources(void);
+#endif
#if defined(WIN32) && defined(_DEBUG)
static WorkingArea(wsT1, 512);
@@ -122,6 +124,11 @@ t_msg Thread6(void *p) {
return 0;
}
+t_msg Thread7(void *p) {
+
+ return (unsigned int)p + 1;
+}
+
/**
* Tester thread, this thread must be created with priority \p NORMALPRIO.
*/
@@ -254,9 +261,29 @@ t_msg TestThread(void *p) {
chThdWait(t1);
print("Messages throughput = ");
printn(i);
- print(" msg/S, ");
+ print(" msgs/S, ");
printn(i << 1);
- println(" ctxsw/S");
+ println(" ctxsws/S");
+
+ println("*** Kernel Benchmark, threads creation/termination:");
+ time = chSysGetTime() + 1;
+ while (chSysGetTime() < time) {
+#if defined(WIN32)
+ ChkIntSources();
+#endif
+ }
+ time += 1000;
+ i = 0;
+ while (chSysGetTime() < time) {
+ t1 = chThdCreate(chThdGetPriority()-1, 0, wsT1, sizeof(wsT1), Thread7, (void *)i);
+ i = chThdWait(t1);
+#if defined(WIN32)
+ ChkIntSources();
+#endif
+ }
+ print("Threads throughput = ");
+ printn(i);
+ print(" threads/S");
println("\r\nTest complete");
return 0;