static int bsp_in_char( void ){ int tmp; ofw_read( &tmp, 1 ); /* blocks */ if( tmp != 0 ) { return tmp>>24; } return -1; }
int sun4v_console_poll_read(int minor){ int a; ofw_read(&a,1); if(a!=0){ return a>>24; } return -1; }
menu_entry_t *execute_menu() { menu_entry_t *menu = NULL; if (menu_entries_cnt == 1) { menu = menu_entries[0]; } else if (menu_entries_cnt > 1) { int i; int selected = default_option; char chr; printf("\r\nAvailable boot configurations:\r\n"); for (i=0; i < menu_entries_cnt; i++) { printf("%c. %s\r\n", (i+1) < 10 ? i+'1':i+'A', menu_entries[i]->m_title); } printf("Boot? >"); while (ofw_read(stdin, &chr, 1) < 0) { ofw_interpret("10 ms"); } if (chr >= '1' && chr <= '9') chr-='0'; else if (chr >= 'A' && chr <= 'Z') chr = chr - 'A' + 10; printf("\r\n"); if (1) { if (chr >= 1 && chr <= menu_entries_cnt) { D(bug("[BOOT] correct key\r\n")); selected = chr-1; } else return NULL; } menu = menu_entries[selected]; D(bug("[BOOT] Selected configuration: \"%s\"\r\n", menu->m_title)); } return menu; }