diff options
author | Jessica Wagantall <jwagantall@cyngn.com> | 2016-11-08 15:13:05 -0800 |
---|---|---|
committer | Jessica Wagantall <jwagantall@cyngn.com> | 2016-11-09 11:59:30 -0800 |
commit | 85f740eb6ddaab64983085fb0c7bb8ae850ef828 (patch) | |
tree | 3a585316f18d9a8cd52e3727ad665bee3c24b4a5 /liblog/logd_write.c | |
parent | 7e1cf25bc3f0b5af9106bc09989d63e5c8c46c37 (diff) | |
parent | dc7cf2204e8dbb2c825bad52f8504921e4a0f2b9 (diff) | |
download | system_core-85f740eb6ddaab64983085fb0c7bb8ae850ef828.zip system_core-85f740eb6ddaab64983085fb0c7bb8ae850ef828.tar.gz system_core-85f740eb6ddaab64983085fb0c7bb8ae850ef828.tar.bz2 |
Merge tag 'android-6.0.1_r74' into HEAD
CYNGNOS-3303
Android 6.0.1 release 74
Change-Id: I2dade45f30d4ca2fa8c6efa5c7242de1a02f5c15
Diffstat (limited to 'liblog/logd_write.c')
-rw-r--r-- | liblog/logd_write.c | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/liblog/logd_write.c b/liblog/logd_write.c index 7f772af..9c4e481 100644 --- a/liblog/logd_write.c +++ b/liblog/logd_write.c @@ -323,6 +323,48 @@ const char *android_log_id_to_name(log_id_t log_id) } #endif +/* + * Release any logger resources. A new log write will immediately re-acquire. + */ +void __android_log_close() +{ +#if FAKE_LOG_DEVICE + int i; +#endif + +#ifdef HAVE_PTHREADS + pthread_mutex_lock(&log_init_lock); +#endif + + write_to_log = __write_to_log_init; + + /* + * Threads that are actively writing at this point are not held back + * by a lock and are at risk of dropping the messages with a return code + * -EBADF. Prefer to return error code than add the overhead of a lock to + * each log writing call to guarantee delivery. In addition, anyone + * calling this is doing so to release the logging resources and shut down, + * for them to do so with outstanding log requests in other threads is a + * disengenuous use of this function. + */ +#if FAKE_LOG_DEVICE + for (i = 0; i < LOG_ID_MAX; i++) { + fakeLogClose(log_fds[i]); + log_fds[i] = -1; + } +#else + close(logd_fd); + logd_fd = -1; + + close(pstore_fd); + pstore_fd = -1; +#endif + +#ifdef HAVE_PTHREADS + pthread_mutex_unlock(&log_init_lock); +#endif +} + static int __write_to_log_init(log_id_t log_id, struct iovec *vec, size_t nr) { #if !defined(_WIN32) |