int poll_string(char *string) { char *cur = string; while(*cur) cur++; char c; while(poll_char(&c)) { if(c == '\b') { if(cur != string) { cur--; vga_printf("\b \b"); } *cur = 0; } else if(c == '\n') { vga_printf("\n"); return 1; } else { *cur = c; cur++; *cur = 0; vga_printf("%c", c); } } return 0; }
void main() { init_alloc(); vga_printf("&main = %08p\n", &main); int i; for(i = 10; i >= 0; i--) vga_printf("'%#0*x' %.*s '%*d' %.*s '%.*s' %.*s '%d'\n", i, 0xdead, 10 - i, "", i, -123, 10 - i, "", i, "moo", 10 - i, "", i << i); vga_printf("%d %d %lld %lld %u %llu\n", INT_MIN, INT_MAX, LLONG_MIN, LLONG_MAX, UINT_MAX, ULLONG_MAX); vga_set_color(0xC, 0x0); vga_printf("HALT"); }
// // These functions all implement internal functions for G++ // extern "C" void __cxa_pure_virtual() { // This should never happen... vga_printf("Purely virtual function called\n"); asm("cli"); while(1); }
static void timer_callback(registers_t regs) { (void)regs; if (tick == 4294967295) tick = 0; else tick++; vga_printf("Tick: %d\n", tick); }
void print_queue(unsigned int max) { kassert(max < MAX_PID); int i; for (i = 0; i < max; i++) { vga_printf("index %u\n", i); vga_printf("\tpd = %d\n", tasks[i].pd); vga_printf("\tquantum = %u\n", tasks[i].quantum); if (tasks[i].prev != NULL) { vga_printf("\tprev_pid = %d\n", tasks[i].prev->pd); } else { vga_printf("\tprev_pid = NULL\n"); } if (tasks[i].next != NULL) { vga_printf("\tnext_pid = %d\n", tasks[i].next->pd); } else { vga_printf("\tnext_pid = NULL\n"); } breakpoint(); } if (actual != NULL) { vga_printf("actual_pid = %d\t", actual->pd); } else { vga_printf("actual_pid = NULL\t"); } if (first != NULL) { vga_printf("first_pid = %d\t", first->pd); } else { vga_printf("first_pid = NULL\t"); } if (last != NULL) { vga_printf("last_pid = %d\n", last->pd); } else { vga_printf("last_pid = NULL\n"); } breakpoint(); }