aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2012-11-03 15:41:54 +0000
committerDimitri Sokolyuk <demon@dim13.org>2012-11-03 15:41:54 +0000
commit0738c5a55346a870b0d79b20a402fe627b111d2e (patch)
tree028480b77aa6b60ce6aae1cd1a0680ca942f6a91
parent6ecd5db7fa3647f6a2ed707cf0d36ebc27eba795 (diff)
RQ display
-rw-r--r--kernel/adc.c2
-rw-r--r--kernel/clock.c11
-rw-r--r--kernel/kernel.c14
-rw-r--r--kernel/kernel.h2
4 files changed, 28 insertions, 1 deletions
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