summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMark Salyzyn <salyzyn@google.com>2014-06-02 20:11:56 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2014-06-02 20:11:56 +0000
commit00d70979632fb72a7837206476505af3a030f782 (patch)
tree2b22cbf9c30831cacc328ca18c24f3f8dfbc010f
parent6fb92bd84bea3c5efadd891f1853fef7c811e79d (diff)
parentbf0f25905b12581f05b65b1ebe95211c727ae483 (diff)
downloadsystem_core-00d70979632fb72a7837206476505af3a030f782.zip
system_core-00d70979632fb72a7837206476505af3a030f782.tar.gz
system_core-00d70979632fb72a7837206476505af3a030f782.tar.bz2
am bf0f2590: Merge "liblog: cache getuid() syscall"
* commit 'bf0f25905b12581f05b65b1ebe95211c727ae483': liblog: cache getuid() syscall
-rw-r--r--liblog/logd_write.c17
1 files changed, 10 insertions, 7 deletions
diff --git a/liblog/logd_write.c b/liblog/logd_write.c
index 121d84d..f10eb8e 100644
--- a/liblog/logd_write.c
+++ b/liblog/logd_write.c
@@ -159,10 +159,14 @@ static int __write_to_log_kernel(log_id_t log_id, struct iovec *vec, size_t nr)
struct timespec ts;
log_time realtime_ts;
size_t i, payload_size;
+ static uid_t last_uid = AID_ROOT; /* logd *always* starts up as AID_ROOT */
- if (getuid() == AID_LOGD) {
+ if (last_uid == AID_ROOT) { /* have we called to get the UID yet? */
+ last_uid = getuid();
+ }
+ if (last_uid == AID_LOGD) { /* logd, after initialization and priv drop */
/*
- * ignore log messages we send to ourself.
+ * ignore log messages we send to ourself (logd).
* Such log messages are often generated by libraries we depend on
* which use standard Android logging.
*/
@@ -193,6 +197,10 @@ static int __write_to_log_kernel(log_id_t log_id, struct iovec *vec, size_t nr)
* };
*/
+ clock_gettime(CLOCK_REALTIME, &ts);
+ realtime_ts.tv_sec = ts.tv_sec;
+ realtime_ts.tv_nsec = ts.tv_nsec;
+
log_id_buf = log_id;
tid = gettid();
@@ -200,11 +208,6 @@ static int __write_to_log_kernel(log_id_t log_id, struct iovec *vec, size_t nr)
newVec[0].iov_len = sizeof_log_id_t;
newVec[1].iov_base = (unsigned char *) &tid;
newVec[1].iov_len = sizeof(tid);
-
- clock_gettime(CLOCK_REALTIME, &ts);
- realtime_ts.tv_sec = ts.tv_sec;
- realtime_ts.tv_nsec = ts.tv_nsec;
-
newVec[2].iov_base = (unsigned char *) &realtime_ts;
newVec[2].iov_len = sizeof(log_time);