Add possibility to log to /dev/kmsg 40/149940/4
authorKonrad Kuchciak <k.kuchciak@samsung.com>
Wed, 13 Sep 2017 14:00:24 +0000 (16:00 +0200)
committerKonrad Kuchciak <k.kuchciak@samsung.com>
Fri, 15 Sep 2017 07:34:08 +0000 (09:34 +0200)
Change-Id: I531f80e6506f1379b3542abc57801c453daad500
Signed-off-by: Konrad Kuchciak <k.kuchciak@samsung.com>
src/util/log.c
src/util/log.h

index ffe2dac34706a22da70f0c2d70d5aba7f4dfe4b9..2317d9ebb5be215cfea718047cc4d94413f0fd44 100644 (file)
@@ -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;
+}
index 35375142da3d438219b2ddd15e3aa79618f53962..5c89a5705050984d14ae305adf91025b5b957941 100644 (file)
@@ -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 */