diff options
author | Mark Salyzyn <salyzyn@google.com> | 2015-03-12 12:25:35 -0700 |
---|---|---|
committer | Mark Salyzyn <salyzyn@google.com> | 2015-03-12 20:38:53 +0000 |
commit | ccbadc6be015553357a4c50de48dea46cb1adcba (patch) | |
tree | 7ae919d1a1a46afbfccf5b87ce14f50c2087a85b | |
parent | 48d06069a8a6be3a968694dad65ce4c11b7bef22 (diff) | |
download | system_core-ccbadc6be015553357a4c50de48dea46cb1adcba.zip system_core-ccbadc6be015553357a4c50de48dea46cb1adcba.tar.gz system_core-ccbadc6be015553357a4c50de48dea46cb1adcba.tar.bz2 |
logd: report reinit
Bug: 19681572
Change-Id: I343b9d108f064f87df79512a0fdf1b35513c3136
-rw-r--r-- | logd/LogAudit.cpp | 8 | ||||
-rw-r--r-- | logd/main.cpp | 24 |
2 files changed, 23 insertions, 9 deletions
diff --git a/logd/LogAudit.cpp b/logd/LogAudit.cpp index af0b775..6b3e637 100644 --- a/logd/LogAudit.cpp +++ b/logd/LogAudit.cpp @@ -29,10 +29,10 @@ #include "libaudit.h" #include "LogAudit.h" -#define KMSG_PRIORITY(PRI) \ - '<', \ - '0' + (LOG_AUTH | (PRI)) / 10, \ - '0' + (LOG_AUTH | (PRI)) % 10, \ +#define KMSG_PRIORITY(PRI) \ + '<', \ + '0' + LOG_MAKEPRI(LOG_AUTH, LOG_PRI(PRI)) / 10, \ + '0' + LOG_MAKEPRI(LOG_AUTH, LOG_PRI(PRI)) % 10, \ '>' LogAudit::LogAudit(LogBuffer *buf, LogReader *reader, int fdDmesg) diff --git a/logd/main.cpp b/logd/main.cpp index 2d799bf..a61beff 100644 --- a/logd/main.cpp +++ b/logd/main.cpp @@ -29,6 +29,7 @@ #include <sys/prctl.h> #include <sys/stat.h> #include <sys/types.h> +#include <syslog.h> #include <unistd.h> #include <cutils/properties.h> @@ -41,6 +42,12 @@ #include "LogListener.h" #include "LogAudit.h" +#define KMSG_PRIORITY(PRI) \ + '<', \ + '0' + LOG_MAKEPRI(LOG_DAEMON, LOG_PRI(PRI)) / 10, \ + '0' + LOG_MAKEPRI(LOG_DAEMON, LOG_PRI(PRI)) % 10, \ + '>' + // // The service is designed to be run by init, it does not respond well // to starting up manually. When starting up manually the sockets will @@ -131,6 +138,11 @@ static bool property_get_bool(const char *key, bool def) { return def; } +// Remove the static, and use this variable +// globally for debugging if necessary. eg: +// write(fdDmesg, "I am here\n", 10); +static int fdDmesg = -1; + static sem_t reinit; static bool reinit_running = false; static LogBuffer *logBuf = NULL; @@ -143,6 +155,13 @@ static void *reinit_thread_start(void * /*obj*/) { setuid(AID_LOGD); while (reinit_running && !sem_wait(&reinit) && reinit_running) { + if (fdDmesg >= 0) { + static const char reinit_message[] = { KMSG_PRIORITY(LOG_INFO), + 'l', 'o', 'g', 'd', '.', 'd', 'a', 'e', 'm', 'o', 'n', ':', + ' ', 'r', 'e', 'i', 'n', 'i', 't', '\n' }; + write(fdDmesg, reinit_message, sizeof(reinit_message)); + } + // Anything that reads persist.<property> if (logBuf) { logBuf->init(); @@ -158,11 +177,6 @@ void reinit_signal_handler(int /*signal*/) { sem_post(&reinit); } -// Remove the static, and use this variable -// globally for debugging if necessary. eg: -// write(fdDmesg, "I am here\n", 10); -static int fdDmesg = -1; - // Foreground waits for exit of the main persistent threads // that are started here. The threads are created to manage // UNIX domain client sockets for writing, reading and |