Merge "base: kernel logging get pre-opened /dev/kmsg from environment"
am: 7ff06150c1
Change-Id: I4a2e66fc0ad8b117a0b48e300293ad87d0dde30a
This commit is contained in:
commit
86c931c5f3
|
@ -54,6 +54,7 @@
|
|||
#endif
|
||||
|
||||
#include <android-base/macros.h>
|
||||
#include <android-base/parseint.h>
|
||||
#include <android-base/strings.h>
|
||||
#include <android-base/threads.h>
|
||||
|
||||
|
@ -82,6 +83,23 @@ const char* getprogname() {
|
|||
return progname;
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(__linux__)
|
||||
int OpenKmsg() {
|
||||
#if defined(__ANDROID__)
|
||||
// pick up 'file w /dev/kmsg' environment from daemon's init rc file
|
||||
const auto val = getenv("ANDROID_FILE__dev_kmsg");
|
||||
if (val != nullptr) {
|
||||
int fd;
|
||||
if (android::base::ParseInt(val, &fd, 0)) {
|
||||
auto flags = fcntl(fd, F_GETFL);
|
||||
if ((flags != -1) && ((flags & O_ACCMODE) == O_WRONLY)) return fd;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
return TEMP_FAILURE_RETRY(open("/dev/kmsg", O_WRONLY | O_CLOEXEC));
|
||||
}
|
||||
#endif
|
||||
} // namespace
|
||||
|
||||
namespace android {
|
||||
|
@ -150,7 +168,7 @@ void KernelLogger(android::base::LogId, android::base::LogSeverity severity,
|
|||
static_assert(arraysize(kLogSeverityToKernelLogLevel) == android::base::FATAL + 1,
|
||||
"Mismatch in size of kLogSeverityToKernelLogLevel and values in LogSeverity");
|
||||
|
||||
static int klog_fd = TEMP_FAILURE_RETRY(open("/dev/kmsg", O_WRONLY | O_CLOEXEC));
|
||||
static int klog_fd = OpenKmsg();
|
||||
if (klog_fd == -1) return;
|
||||
|
||||
int level = kLogSeverityToKernelLogLevel[severity];
|
||||
|
|
Loading…
Reference in New Issue