#include #include #include #include #include #include #include #include #include #include #define RECV_MAX (1024 * 16) static int ce_pgid; void receiver (void* arg) { (void)arg; char recv[RECV_MAX]; int n; for (;;) { memset (recv, 0, sizeof (recv)); n = stream_read (ce_pgid, STREAM_OUT, (void*)recv, RECV_MAX - 1); if (n > 0) terminal_print (recv, n); else sched (); } } void app_main (void) { debug_printf ("Init process is running. Starting user shell...\n"); int ce_pid = exec ("sys", "/ce"); ce_pgid = get_procgroup (ce_pid); process_spawn (&receiver, NULL); for (;;) { int ch = kb_read_key (); if (ch == 0) continue; stream_write (ce_pgid, STREAM_IN, &ch, 1); } }