summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2007-03-17 23:22:05 +0000
committerpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2007-03-17 23:22:05 +0000
commit33b49f60be637f06f385d2ede26846a636621396 (patch)
treebe0406aafc9fdfe726b9071b94e7486aa3d3c7c0
parent8d6908334ae667db589d437973106e3f81a342c6 (diff)
downloadpx4-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/ChangeLog5
-rw-r--r--nuttx/examples/ostest/main.c2
-rw-r--r--nuttx/examples/ostest/roundrobin.c24
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");