int vcons_cnlookc(dev_t dev, int *cp) { int64_t ch; if (hv_cons_getchar(&ch) == H_EOK) { #ifdef DDB if (ch == -1 && db_console) Debugger(); #endif *cp = ch; return (1); } return (0); }
static int hvcn_cncheckc(struct consdev *cp) { unsigned char ch; int l; if ((l = hv_cons_getchar(&ch)) == H_EOK) { #if defined(KDB) if (l == H_BREAK || l == H_HUP) kdb_enter(KDB_WHY_BREAK, "Break sequence on console"); if (kdb_alt_break(ch, &alt_break_state)) kdb_enter(KDB_WHY_BREAK, "Break sequence on console"); #endif return (ch); } return (-1); }
static int hvcn_cngetc(struct consdev *cp) { unsigned char ch; int l; ch = '\0'; while ((l = hv_cons_getchar(&ch)) != H_EOK) { #if defined(KDB) int kdb_brk; if (l == H_BREAK || l == H_HUP) kdb_enter(KDB_WHY_BREAK, "Break sequence on console"); if ((kdb_brk = kdb_alt_break(ch, &alt_break_state)) != 0) { switch (kdb_brk) { case KDB_REQ_DEBUGGER: kdb_enter(KDB_WHY_BREAK, "Break sequence on console"); break; case KDB_REQ_PANIC: kdb_panic("Panic sequence on console"); break; case KDB_REQ_REBOOT: kdb_reboot(); break; } } #endif if (l != -2 && l != 0) { return (-1); } } return (ch); }