static status_t master_read(void *_cookie, off_t offset, void *buffer, size_t *_length) { master_cookie *cookie = (master_cookie *)_cookie; TRACE(("master_read: cookie %p, offset %Ld, buffer %p, length %lu\n", _cookie, offset, buffer, *_length)); status_t result = tty_input_read(cookie, buffer, _length); TRACE(("master_read done: cookie %p, result: %lx, length %lu\n", _cookie, result, *_length)); return result; }
char *grab_input() { static char buffer[512]; int i = 0; memset(buffer, 0, 512); while(1) { char cs[] = { 0 }; tty_input_read(shell_tty->selfdevice, cs, 1, 0); if (!cs[0]) { schedule_noirq(); continue; } if (cs[0] == '\n') break; buffer[i++] = cs[0]; __printk_emit(cs[0]); } __printk_emit('\n'); return buffer; }