From 0738c5a55346a870b0d79b20a402fe627b111d2e Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Sat, 3 Nov 2012 15:41:54 +0000 Subject: RQ display --- kernel/adc.c | 2 ++ kernel/clock.c | 11 +++++++++++ kernel/kernel.c | 14 +++++++++++++- kernel/kernel.h | 2 ++ 4 files changed, 28 insertions(+), 1 deletion(-) diff --git a/kernel/adc.c b/kernel/adc.c index cad7d21..26c002f 100644 --- a/kernel/adc.c +++ b/kernel/adc.c @@ -42,9 +42,11 @@ adc(void *arg) signal(Adc); } +#if 0 wait(Display); fprintf(stderr, "\n%8lx%8x", now(), a->value[0]); signal(Display); +#endif sleep(0, 100000); } diff --git a/kernel/clock.c b/kernel/clock.c index 0e49b6f..0114192 100644 --- a/kernel/clock.c +++ b/kernel/clock.c @@ -28,6 +28,8 @@ clock(void *arg) { uint8_t d, h, m, s, ds; + uint8_t id[16], n, *p; + d = h = m = s = ds = 0; for (;;) { @@ -37,9 +39,18 @@ clock(void *arg) if (m == 60) { m = 0; ++h; } if (h == 24) { h = 0; ++d; } +#if 0 wait(Display); fprintf(stderr, "\r%4d:%.2d:%.2d:%.2d.%1d ", d, h, m, s, ds); signal(Display); +#endif + + fprintf(stderr, "\r%4d:%.2d:%.2d:%.2d.%1d\n", d, h, m, s, ds); + n = sizeof(id) / sizeof(id[0]); + p = id; + fetchrq(p, n); + while (n-- > 0) + fprintf(stderr, "%c", *p++ ? '*' : ' '); sleep(0, 100000); } diff --git a/kernel/kernel.c b/kernel/kernel.c index 2dda71d..7d307f5 100644 --- a/kernel/kernel.c +++ b/kernel/kernel.c @@ -92,7 +92,7 @@ ISR(TIMER1_COMPB_vect, ISR_NAKED) { pusha(); - /* reschedule current task if it've used its time slice */ + /* reschedule current task if it had used all its time slice */ if (kern.cur == TAILQ_FIRST(&kern.rq)) { TAILQ_REMOVE(&kern.rq, kern.cur, r_link); TAILQ_INSERT_TAIL(&kern.rq, kern.cur, r_link); @@ -286,3 +286,15 @@ reboot(void) { kern.reboot = 1; } + +void +fetchrq(uint8_t *data, uint8_t len) +{ + struct task *tp; + + memset(data, 0, len); + TAILQ_FOREACH(tp, &kern.rq, r_link) { + if (tp->id < len) + data[tp->id] = 1; + } +} diff --git a/kernel/kernel.h b/kernel/kernel.h index 381ef1c..336254e 100644 --- a/kernel/kernel.h +++ b/kernel/kernel.h @@ -92,6 +92,8 @@ uint8_t sysrq(uint8_t req, uint8_t id); void reboot(void); void idle(void); +void fetchrq(uint8_t *, uint8_t); + /* __END_DECLS */ #endif -- cgit v1.2.3