static int xmon_write(const char *ptr, int nb) { int rv = 0; const char *p = ptr, *q; const char msg[] = "[Hit a key (a:all, q:truncate, any:next page)]"; if (nb <= 0) return rv; if (paginating && paginate_skipping) return nb; if (paginate_lpp) { while (paginating && (q = strchr(p, '\n'))) { rv += udbg_write(p, q - p + 1); p = q + 1; paginate_pos++; if (paginate_pos >= paginate_lpp) { udbg_write(msg, strlen(msg)); switch (xmon_readchar()) { case 'a': paginating = false; break; case 'q': paginate_skipping = true; break; default: /* nothing */ break; } paginate_pos = 0; udbg_write("\r\n", 2); if (paginate_skipping) return nb; } } } return rv + udbg_write(p, nb - (p - ptr)); }
/* * Early boot console based on udbg */ static void udbg_console_write(struct console *con, const char *s, unsigned int n) { udbg_write(s, n); }
static int xmon_write(const void *ptr, int nb) { return udbg_write(ptr, nb); }
int xmon_write(void *handle, void *ptr, int nb) { return udbg_write(ptr, nb); }