summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMark Salyzyn <salyzyn@google.com>2015-03-12 12:25:35 -0700
committerMark Salyzyn <salyzyn@google.com>2015-03-12 20:38:53 +0000
commitccbadc6be015553357a4c50de48dea46cb1adcba (patch)
tree7ae919d1a1a46afbfccf5b87ce14f50c2087a85b
parent48d06069a8a6be3a968694dad65ce4c11b7bef22 (diff)
downloadsystem_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.cpp8
-rw-r--r--logd/main.cpp24
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