diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2014-10-02 08:54:41 +0200 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2014-10-02 08:54:41 +0200 |
commit | 9fd083eae152a15caa45a7e944f294f435ae0689 (patch) | |
tree | 79586c93a3e69e772b06694be7da545d45fec671 /commands | |
parent | 61bf20dcc60c106282fc0352e65713f46c3fa710 (diff) | |
parent | 930ce6e142354268d11ec9fe5cf6f4fc66a8f1f0 (diff) | |
download | barebox-9fd083eae152a15caa45a7e944f294f435ae0689.tar.gz barebox-9fd083eae152a15caa45a7e944f294f435ae0689.tar.xz |
Merge branch 'for-next/dmesg'
Diffstat (limited to 'commands')
-rw-r--r-- | commands/Kconfig | 7 | ||||
-rw-r--r-- | commands/Makefile | 1 | ||||
-rw-r--r-- | commands/dmesg.c | 100 |
3 files changed, 108 insertions, 0 deletions
diff --git a/commands/Kconfig b/commands/Kconfig index 3a49bafd27..f0cd8b2ae4 100644 --- a/commands/Kconfig +++ b/commands/Kconfig @@ -84,6 +84,13 @@ config CMD_DEVINFO If called with a device path being the argument, devinfo shows more default information about this device and its parameters. +config CMD_DMESG + tristate + prompt "dmesg" + select LOGBUF + help + Print or control the log message buffer. + config CMD_DRVINFO tristate default y diff --git a/commands/Makefile b/commands/Makefile index 52b6137c01..608ff5eb40 100644 --- a/commands/Makefile +++ b/commands/Makefile @@ -81,6 +81,7 @@ obj-$(CONFIG_CMD_IOMEM) += iomemport.o obj-$(CONFIG_CMD_LINUX_EXEC) += linux_exec.o obj-$(CONFIG_CMD_AUTOMOUNT) += automount.o obj-$(CONFIG_CMD_GLOBAL) += global.o +obj-$(CONFIG_CMD_DMESG) += dmesg.o obj-$(CONFIG_CMD_BASENAME) += basename.o obj-$(CONFIG_CMD_DIRNAME) += dirname.o obj-$(CONFIG_CMD_READLINK) += readlink.o diff --git a/commands/dmesg.c b/commands/dmesg.c new file mode 100644 index 0000000000..b2bb334e24 --- /dev/null +++ b/commands/dmesg.c @@ -0,0 +1,100 @@ +/* + * dmesg.c - barebox logbuffer handling + * + * Copyright (c) 2014 Sascha Hauer <s.hauer@pengutronix.de>, Pengutronix + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + */ +#include <common.h> +#include <malloc.h> +#include <command.h> +#include <globalvar.h> +#include <environment.h> +#include <getopt.h> +#include <clock.h> + +static int do_dmesg(int argc, char *argv[]) +{ + int opt, i; + int delete_buf = 0, emit = 0; + unsigned flags = 0; + + while ((opt = getopt(argc, argv, "ctde")) > 0) { + switch (opt) { + case 'c': + delete_buf = 1; + break; + case 't': + flags |= BAREBOX_LOG_PRINT_TIME; + break; + case 'd': + flags |= BAREBOX_LOG_DIFF_TIME; + break; + case 'e': + emit = 1; + break; + default: + return COMMAND_ERROR_USAGE; + } + } + + if (emit) { + char *buf; + int len = 0; + + for (i = optind; i < argc; i++) + len += strlen(argv[i]) + 1; + + buf = malloc(len + 2); + if (!buf) + return -ENOMEM; + + len = 0; + + for (i = optind; i < argc; i++) + len += sprintf(buf + len, "%s ", argv[i]); + + *(buf + len) = '\n'; + *(buf + len + 1) = 0; + + pr_info(buf); + + free(buf); + + return 0; + } + + log_print(flags); + + if (delete_buf) + log_clean(10); + + return 0; +} + +BAREBOX_CMD_HELP_START(dmesg) +BAREBOX_CMD_HELP_TEXT("Options:") +BAREBOX_CMD_HELP_OPT ("-c", "Delete messages after printing them") +BAREBOX_CMD_HELP_OPT ("-d", "Show a time delta to the last message") +BAREBOX_CMD_HELP_OPT ("-e <msg>", "Emit a log message") +BAREBOX_CMD_HELP_OPT ("-t", "Show timestamp informations") +BAREBOX_CMD_HELP_END + +BAREBOX_CMD_START(dmesg) + .cmd = do_dmesg, + BAREBOX_CMD_DESC("Print or control log messages") + BAREBOX_CMD_OPTS("[-cdet]") + BAREBOX_CMD_GROUP(CMD_GRP_INFO) + BAREBOX_CMD_HELP(cmd_dmesg_help) +BAREBOX_CMD_END |