diff options
author | Konrad Kuchciak <k.kuchciak@samsung.com> | 2017-09-13 16:00:24 +0200 |
---|---|---|
committer | Konrad Kuchciak <k.kuchciak@samsung.com> | 2017-09-15 09:34:08 +0200 |
commit | 0a811a044e0cf6df29e7f62ccc98d8c91a1ae9f1 (patch) | |
tree | d30108d6a5d0daa7dcd458a68a81b91336149526 | |
parent | c09733ce2a257c889a8814d3f9fddf3cdfe85c69 (diff) | |
download | faultd-0a811a044e0cf6df29e7f62ccc98d8c91a1ae9f1.tar.gz faultd-0a811a044e0cf6df29e7f62ccc98d8c91a1ae9f1.tar.bz2 faultd-0a811a044e0cf6df29e7f62ccc98d8c91a1ae9f1.zip |
Add possibility to log to /dev/kmsg
Change-Id: I531f80e6506f1379b3542abc57801c453daad500
Signed-off-by: Konrad Kuchciak <k.kuchciak@samsung.com>
-rw-r--r-- | src/util/log.c | 33 | ||||
-rw-r--r-- | src/util/log.h | 1 |
2 files changed, 34 insertions, 0 deletions
diff --git a/src/util/log.c b/src/util/log.c index ffe2dac..2317d9e 100644 --- a/src/util/log.c +++ b/src/util/log.c @@ -97,3 +97,36 @@ int log_internal(int level, fflush(stderr); return -error; } + +int log_kmsg(const char *format, ...) +{ + FILE *fd = NULL; + char *buffer = NULL; + va_list ap; + int ret; + + va_start(ap, format); + ret = vasprintf(&buffer, format, ap); + va_end(ap); + + if (ret < 0) { + ret = errno; + goto cleanup; + } + + fd = fopen("/dev/kmsg", "w"); + if (!fd) { + ret = errno; + goto cleanup; + } + + fprintf(fd, "faultd: %s\n", buffer); + fclose(fd); + ret = 0; + +cleanup: + if (buffer) + free(buffer); + + return ret; +} diff --git a/src/util/log.h b/src/util/log.h index 3537514..5c89a57 100644 --- a/src/util/log.h +++ b/src/util/log.h @@ -29,4 +29,5 @@ int log_get_max_level(void); void log_set_max_level(int level); int log_internal(int level, int error, const char *file, int __line, const char *func, const char *format, ...) __attribute__ ((format (printf, 6, 7))); int log_parse_level_name(const char *name); +int log_kmsg(const char *format, ...); #endif /* _FAUTLD_LOG_H */ |