liblog: reset pid and uid cache after a vfork()
Bionic getuid() and getpid() calls cache to reduce the need to perform a syscall, and also reset their own cache after a vfork(). No more need for liblog to be performing this flawed cache operation. Bug: 30085794 Change-Id: I70feed8bff0ddd919c2885a348ba67b14ddc0e0d
This commit is contained in:
parent
4c06cd8634
commit
ec4f5c776d
3 changed files with 5 additions and 29 deletions
|
@ -146,11 +146,13 @@ struct android_log_transport_context {
|
|||
/* OS specific dribs and drabs */
|
||||
|
||||
#if defined(_WIN32)
|
||||
#include <private/android_filesystem_config.h>
|
||||
typedef uint32_t uid_t;
|
||||
static inline uid_t __android_log_uid() { return AID_SYSTEM; }
|
||||
#else
|
||||
static inline uid_t __android_log_uid() { return getuid(); }
|
||||
#endif
|
||||
|
||||
LIBLOG_HIDDEN uid_t __android_log_uid();
|
||||
LIBLOG_HIDDEN pid_t __android_log_pid();
|
||||
LIBLOG_HIDDEN void __android_log_lock();
|
||||
LIBLOG_HIDDEN int __android_log_trylock();
|
||||
LIBLOG_HIDDEN void __android_log_unlock();
|
||||
|
|
|
@ -22,34 +22,8 @@
|
|||
#include <pthread.h>
|
||||
#endif
|
||||
|
||||
#include <private/android_filesystem_config.h>
|
||||
|
||||
#include "logger.h"
|
||||
|
||||
LIBLOG_HIDDEN uid_t __android_log_uid()
|
||||
{
|
||||
#if defined(_WIN32)
|
||||
return AID_SYSTEM;
|
||||
#else
|
||||
static uid_t last_uid = AID_ROOT; /* logd *always* starts up as AID_ROOT */
|
||||
|
||||
if (last_uid == AID_ROOT) { /* have we called to get the UID yet? */
|
||||
last_uid = getuid();
|
||||
}
|
||||
return last_uid;
|
||||
#endif
|
||||
}
|
||||
|
||||
LIBLOG_HIDDEN pid_t __android_log_pid()
|
||||
{
|
||||
static pid_t last_pid = (pid_t) -1;
|
||||
|
||||
if (last_pid == (pid_t) -1) {
|
||||
last_pid = getpid();
|
||||
}
|
||||
return last_pid;
|
||||
}
|
||||
|
||||
#if !defined(_WIN32)
|
||||
static pthread_mutex_t log_init_lock = PTHREAD_MUTEX_INITIALIZER;
|
||||
#endif
|
||||
|
|
|
@ -142,7 +142,7 @@ static int pmsgWrite(log_id_t logId, struct timespec *ts,
|
|||
pmsgHeader.magic = LOGGER_MAGIC;
|
||||
pmsgHeader.len = sizeof(pmsgHeader) + sizeof(header);
|
||||
pmsgHeader.uid = __android_log_uid();
|
||||
pmsgHeader.pid = __android_log_pid();
|
||||
pmsgHeader.pid = getpid();
|
||||
|
||||
header.id = logId;
|
||||
header.tid = gettid();
|
||||
|
|
Loading…
Reference in a new issue