diff options
author | Mark Salyzyn <salyzyn@google.com> | 2014-06-02 20:11:56 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2014-06-02 20:11:56 +0000 |
commit | 00d70979632fb72a7837206476505af3a030f782 (patch) | |
tree | 2b22cbf9c30831cacc328ca18c24f3f8dfbc010f | |
parent | 6fb92bd84bea3c5efadd891f1853fef7c811e79d (diff) | |
parent | bf0f25905b12581f05b65b1ebe95211c727ae483 (diff) | |
download | system_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.c | 17 |
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); |