diff --git a/kaleid/kernel/ke/log.c b/kaleid/kernel/ke/log.c index b8d99ba..c57fe00 100644 --- a/kaleid/kernel/ke/log.c +++ b/kaleid/kernel/ke/log.c @@ -47,10 +47,11 @@ error_t KernLog(const char *fmt, ...) // void DebugLog(const char *fmt, ...) { + ulong ticks = KeGetTicks(); va_list ap; va_start(ap, fmt); - BPrintOnBuf(BStdDbg, "[%d]\t", KeGetTicks()); + BPrintOnBuf(BStdDbg, "[%d]\t", ticks); BPrintOnBufV(BStdDbg, fmt, ap); va_end(ap); } diff --git a/kaleid/kernel/sh/shcmds.c b/kaleid/kernel/sh/shcmds.c index 9991a4e..43faa9e 100644 --- a/kaleid/kernel/sh/shcmds.c +++ b/kaleid/kernel/sh/shcmds.c @@ -102,6 +102,30 @@ error_t CmdDate(int argc, char **argv, char *cmdline) return EOK; } +error_t CmdDmesg(int argc, char **argv, char *cmdline) +{ + char *ptr; + size_t N = 0; + + if (argc == 1) N = 999; + else if (argc == 2) N = atoi(argv[1]); + else { + KernLog("dmesg: no more than one argument\n"); + return EINVAL; + } + + BLockBuf(BStdDbg); + + ptr = (char *)lmax((ulong)BStdDbg->buf, + (ulong)(BStdDbg->wp - BStdDbg->lastLF - (BStdDbg->lineLen * N))); + + KernLog(ptr); + + BUnlockBuf(BStdDbg); + + return EOK; +} + error_t CmdHelp(int argc, char **argv, char *cmdline) { uint i, count = 0; @@ -182,19 +206,20 @@ error_t CmdVersion(int argc, char **argv, char *cmdline) Command_t shcmdtable[] = { - { "beep", CmdBeep, "Make a beep" }, - { "cls", CmdClear, "Clears standard output" }, - { "color", CmdColor, "Change shell text color" }, - { "date", CmdDate, "Print date" }, - { "exit", CmdQuit, "Initiate shutdown" }, - { "help", CmdHelp, "Show this message" }, - { "march", CmdStarWars, "Play the Imperial March" }, - { "mmap", CmdMemMap, "Show memory map" }, - { "musage", CmdMemUsage, "Show memory statistics" }, - { "quit", CmdQuit, "Alias for 'exit'" }, - { "sleep", CmdSleep, "Sleep x ms" }, - { "time", CmdTime, "Print time" }, - { "test", CmdTest, "Launch the x test" }, - { "ver", CmdVersion, "Version and legal infos" }, + { "beep", CmdBeep, "Make a beep" }, + { "cls", CmdClear, "Clears standard output" }, + { "color", CmdColor, "Change shell text color" }, + { "date", CmdDate, "Print date" }, + { "dmesg", CmdDmesg, "Print N lines of debug log" }, + { "exit", CmdQuit, "Initiate shutdown" }, + { "help", CmdHelp, "Show this message" }, + { "march", CmdStarWars, "Play the Imperial March" }, + { "mmap", CmdMemMap, "Show memory map" }, + { "musage", CmdMemUsage, "Show memory statistics" }, + { "quit", CmdQuit, "Alias for 'exit'" }, + { "sleep", CmdSleep, "Sleep N ms" }, + { "time", CmdTime, "Print time" }, + { "test", CmdTest, "Launch a test" }, + { "ver", CmdVersion, "Version and legal infos" }, { NULL, NULL, NULL } };