aboutsummaryrefslogtreecommitdiff
path: root/kernel/ctrl.c
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2012-06-17 00:05:14 +0000
committerDimitri Sokolyuk <demon@dim13.org>2012-06-17 00:05:14 +0000
commit6ab8517dcba93d56e8d3015d5f4db48de36b2d7a (patch)
treeb8131ae43840142498bb1a9ece69341e9693faa2 /kernel/ctrl.c
parent3ac81216f8c552f9fbc234c625f3140b40981ab6 (diff)
fix nasty bug in task initialization: enable interrupts per default
new function sysrq() switch from interrupt to task driven console
Diffstat (limited to 'kernel/ctrl.c')
-rw-r--r--kernel/ctrl.c35
1 files changed, 28 insertions, 7 deletions
diff --git a/kernel/ctrl.c b/kernel/ctrl.c
index da1d70d..1cca657 100644
--- a/kernel/ctrl.c
+++ b/kernel/ctrl.c
@@ -25,24 +25,45 @@ void
ctrl(void *arg)
{
int c;
+ uint8_t *p;
+ uint8_t n, i, k;
for (;;) {
printf("> ");
fflush(stdout);
- c = getc(stdin);
- printf("\n");
-
- switch (c) {
+ switch ((c = getchar())) {
+ case 'R':
+ case 'r':
case '-':
reboot();
break;
+ case 'D':
+ case 'd':
+ for (p = (uint8_t *)0; p <= (uint8_t *)RAMEND; p++)
+ putchar(*p);
+ break;
+ case 'N':
case 'n':
- printf("now: %ld\n", now());
+ printf("%8lx\n", now());
+ break;
+ case 'S':
+ case 's':
+ n = sysrq(nTask, 0);
+ for (i = 0; i < n; i++) {
+ k = sysrq(Prio, i);
+ printf("%d (%d) ", i, k);
+ }
+ printf("\n");
+ break;
+ case -2:
+ puts("EOF");
+ break;
+ case -1:
+ puts("ERR");
break;
default:
+ puts("?");
break;
}
-
- yield();
}
}