static void logbuff_putc (const char c) { char buf[2]; buf[0] = c; buf[1] = '\0'; logbuff_printk (buf); }
/* * Subroutine: do_log * * Description: Handler for 'log' command.. * * Inputs: argv[1] contains the subcommand * * Return: None * */ int do_log (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) { char *s; unsigned long i, start, size; if (strcmp(argv[1],"append") == 0) { /* Log concatenation of all arguments separated by spaces */ for (i=2; i<argc; i++) { logbuff_printk (argv[i]); logbuff_putc ((i<argc-1) ? ' ' : '\n'); } return 0; } switch (argc) { case 2: if (strcmp(argv[1],"show") == 0) { if (log_version == 2) { start = log->v2.start; size = log->v2.end - log->v2.start; } else { start = log->v1.start; size = log->v1.size; } for (i=0; i < (size&LOGBUFF_MASK); i++) { s = lbuf+((start+i)&LOGBUFF_MASK); putc (*s); } return 0; } else if (strcmp(argv[1],"reset") == 0) { logbuff_reset (); return 0; } else if (strcmp(argv[1],"info") == 0) { printf ("Logbuffer at %08lx\n", (unsigned long)lbuf); if (log_version == 2) { printf ("log_start = %08lx\n", log->v2.start); printf ("log_end = %08lx\n", log->v2.end); printf ("logged_chars = %08lx\n", log->v2.chars); } else { printf ("log_start = %08lx\n", log->v1.start); printf ("log_size = %08lx\n", log->v1.size); printf ("logged_chars = %08lx\n", log->v1.chars); } return 0; } printf ("Usage:\n%s\n", cmdtp->usage); return 1; default: printf ("Usage:\n%s\n", cmdtp->usage); return 1; } }
void logbuff_log(char *msg) { if ((gd->flags & GD_FLG_LOGINIT)) { logbuff_printk (msg); } else { /* Can happen only for pre-relocated errors as logging */ /* at that stage should be disabled */ puts (msg); } }
void logbuff_log(char *msg) { DECLARE_GLOBAL_DATA_PTR; if ((gd->post_log_word & LOGBUFF_INITIALIZED)) { logbuff_printk (msg); } else { /* Can happen only for pre-relocated errors as logging */ /* at that stage should be disabled */ puts (msg); } }
static void logbuff_puts (const char *s) { logbuff_printk (s); }