diff options
author | patacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3> | 2007-03-17 23:22:05 +0000 |
---|---|---|
committer | patacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3> | 2007-03-17 23:22:05 +0000 |
commit | 33b49f60be637f06f385d2ede26846a636621396 (patch) | |
tree | be0406aafc9fdfe726b9071b94e7486aa3d3c7c0 | |
parent | 8d6908334ae667db589d437973106e3f81a342c6 (diff) | |
download | px4-nuttx-33b49f60be637f06f385d2ede26846a636621396.tar.gz px4-nuttx-33b49f60be637f06f385d2ede26846a636621396.tar.bz2 px4-nuttx-33b49f60be637f06f385d2ede26846a636621396.zip |
Verified roundrobin test
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@87 42af7a65-404d-4744-a932-0658087f49c3
-rw-r--r-- | nuttx/ChangeLog | 5 | ||||
-rw-r--r-- | nuttx/examples/ostest/main.c | 2 | ||||
-rw-r--r-- | nuttx/examples/ostest/roundrobin.c | 24 |
3 files changed, 25 insertions, 6 deletions
diff --git a/nuttx/ChangeLog b/nuttx/ChangeLog index d2b64ea0d..925b4c798 100644 --- a/nuttx/ChangeLog +++ b/nuttx/ChangeLog @@ -39,12 +39,13 @@ * Added 'ls' command to nsh * Added C5471 watchdog driver * Added support for the Neuros OSD / DM320 - * Fixed another bug where free() is called from IDEL task. + * Fixed another bug where free() is called from IDLE task. Can't do this; the caller must be able to wait for access to memory. * Separated C5471 serial driver; a shareable part is in drivers/. ; the C5471 specific part is in arch/C5471. serial.h defines the interface. - * Fixed mq_receive() -- bad memcpy() + * Fixed mq_receive() and mq_send() -- bad memcpy() + * Added a test for roundrobin scheduler. diff --git a/nuttx/examples/ostest/main.c b/nuttx/examples/ostest/main.c index 7afba05c9..8b7096972 100644 --- a/nuttx/examples/ostest/main.c +++ b/nuttx/examples/ostest/main.c @@ -164,13 +164,11 @@ static int user_main(int argc, char *argv[]) sighand_test(); #endif -#if 0 /* Does not work yet */ #if !defined(CONFIG_DISABLE_PTHREAD) && CONFIG_RR_INTERVAL > 0 /* Verify round robin scheduling */ rr_test(); #endif -#endif printf("user_main: Exitting\n"); return 0; diff --git a/nuttx/examples/ostest/roundrobin.c b/nuttx/examples/ostest/roundrobin.c index d8217e451..c8b8f0d29 100644 --- a/nuttx/examples/ostest/roundrobin.c +++ b/nuttx/examples/ostest/roundrobin.c @@ -47,7 +47,11 @@ * Definitions ********************************************************************************/ -#define CONFIG_NINTEGERS 32768 +/* This number may need to be tuned for different processor speeds */ + +/* #define CONFIG_NINTEGERS 32768 Takes forever on 60Mhz ARM7 */ + +#define CONFIG_NINTEGERS 2048 /******************************************************************************** * Private Data @@ -121,10 +125,16 @@ static void *sieve1(void *parameter) int i; printf("sieve1 started\n"); + fflush(stdout); + for (i = 0; i < 1000; i++) { dosieve(prime1); } + + printf("sieve1 finished\n"); + fflush(stdout); + pthread_exit(NULL); } @@ -137,10 +147,16 @@ static void *sieve2(void *parameter) int i; printf("sieve2 started\n"); + fflush(stdout); + for (i = 0; i < 1000; i++) { dosieve(prime2); } + + printf("sieve2 finished\n"); + fflush(stdout); + pthread_exit(NULL); } @@ -203,7 +219,11 @@ void rr_test(void) printf("rr_test: Error in thread 2 creation, status=%d\n", status); } - printf("rr_test: Waiting for sieves to complete\n"); + printf("rr_test: Waiting for sieves to complete -- this should take awhile\n"); + printf("rr_test: If RR scheduling is working, they should complete at\n"); + printf("rr_test: then same time\n"); + fflush(stdout); + pthread_join(sieve2_thread, &result); pthread_join(sieve1_thread, &result); printf("rr_test: Done\n"); |