liblog: add __android_log_close()

am: c68706fe49

Change-Id: I0f63dcafaa4b6bf40dddb3674c3768b0cb158fe4
This commit is contained in:
Mark Salyzyn 2016-09-07 18:40:15 +00:00 committed by android-build-merger
commit edc5507f76
2 changed files with 40 additions and 0 deletions

View File

@ -88,6 +88,11 @@ typedef enum android_LogPriority {
ANDROID_LOG_SILENT, /* only for SetMinPriority(); must be last */
} android_LogPriority;
/*
* Release any logger resources (a new log write will immediately re-acquire)
*/
void __android_log_close();
/*
* Send a simple string to the log.
*/

View File

@ -95,6 +95,41 @@ static int __write_to_log_kernel(log_id_t log_id, struct iovec *vec, size_t nr)
return ret;
}
/*
* Release any logger resources. A new log write will immediately re-acquire.
*/
void __android_log_close()
{
#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.
*/
log_close(log_fds[LOG_ID_MAIN]);
log_fds[LOG_ID_MAIN] = -1;
log_close(log_fds[LOG_ID_RADIO]);
log_fds[LOG_ID_RADIO] = -1;
log_close(log_fds[LOG_ID_EVENTS]);
log_fds[LOG_ID_EVENTS] = -1;
log_close(log_fds[LOG_ID_SYSTEM]);
log_fds[LOG_ID_SYSTEM] = -1;
#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)
{
#ifdef HAVE_PTHREADS