aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/sys/schedule.c1
-rw-r--r--src/tests/test.c12
2 files changed, 8 insertions, 5 deletions
diff --git a/src/sys/schedule.c b/src/sys/schedule.c
index 287091c..9540d3d 100644
--- a/src/sys/schedule.c
+++ b/src/sys/schedule.c
@@ -202,6 +202,7 @@ void yield(void)
// thus any threads of the same priority can be run first
unsigned char priority = rthread->priority;
struct ThreadQueue* trq = &scheduler.ready[priority];
+ trq->read.entry->thread = 0;
trq->read.entry = trq->read.entry->next;
trq->write.entry->thread = rthread;
trq->write.entry = trq->write.entry->next;
diff --git a/src/tests/test.c b/src/tests/test.c
index 7f18627..503e689 100644
--- a/src/tests/test.c
+++ b/src/tests/test.c
@@ -26,11 +26,13 @@ void test_entry(void)
DRAW64(17, y+5, dt%64);
// atest
- add_thread(atest, 0, 0);
- sys0_64(SYS_TIME, &ti);
- sys0(SYS_YIELD);
- sys0_64(SYS_TIME, &tf);
- dt = tf - ti;
+ //add_thread(atest, 0, 0);
+ for(int i = 0; i < 64; i++) {
+ sys0_64(SYS_TIME, &ti);
+ sys0(SYS_YIELD);
+ sys0_64(SYS_TIME, &tf);
+ dt += tf - ti;
+ }
DRAW64(34, y+5, dt/64);
DRAW64(34+17, y+5, dt%64);
add_thread(btest, 0, 4);