platform_bionic/libc/async_safe
Josh Gao d37113311c async_safe: don't call libc's socket.
Like with close, socket is no longer a simple syscall, so we can get
recursive calls that deadlock.

Bug: http://b/165206592
Test: bionic-unit-tests on cuttlefish
Test: treehugger
Change-Id: I2ba77d733d1ebf08a91afd6ca179e7ae6ae3866e
2020-08-21 14:23:57 -07:00
..
include/async_safe linker: CHECK() or async_safe_fatal() rather than abort(). 2020-06-10 14:49:28 -07:00
Android.bp Set apex_available property 2020-04-08 22:52:06 +09:00
async_safe_log.cpp async_safe: don't call libc's socket. 2020-08-21 14:23:57 -07:00
README.md Add a README.md for async_safe 2020-01-17 12:12:26 -08:00

async_safe logging

This library provides an async_safe implementation for formatting and writing log messages to logd.

Note that the liblog implementation connects a single socket to logd and uses a RWLock to manage it among threads, whereas these functions connect to liblog for each log message. While it's beneficial to have this lock-free and therefore async_safe mechanism to write to logd, connecting a socket for each message does not scale well under load. It was also determined to be too costly to connect a socket for each thread as some processes, such as system_server, have over 100 threads. Therefore, we maintain these two separate mechanisms.