From f20b97abe74cfbb1f28ef70043cf718fbebf4fa4 Mon Sep 17 00:00:00 2001 From: gdisirio Date: Thu, 29 Nov 2007 09:16:53 +0000 Subject: [PATCH] git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@118 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- readme.txt | 26 +++++++++++++++----------- test/test.c | 31 +++++++++++++++++++++++++++++-- 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 +#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;