diff --git a/liblog/include/android/log.h b/liblog/include/android/log.h index b9839d6a8..15c796356 100644 --- a/liblog/include/android/log.h +++ b/liblog/include/android/log.h @@ -56,6 +56,11 @@ #include #include +#include + +#if !defined(__BIONIC__) && !defined(__INTRODUCED_IN) +#define __INTRODUCED_IN(x) +#endif #ifdef __cplusplus extern "C" { @@ -190,6 +195,18 @@ struct __android_logger_data { unsigned int line; /* Optional line number, ignore if file is nullptr. */ }; +/** + * Prototype for the 'logger' function that is called for every log message. + */ +typedef void (*__android_logger_function)(const struct __android_logger_data* logger_data, + const char* message); +/** + * Prototype for the 'abort' function that is called when liblog will abort due to + * __android_log_assert() failures. + */ +typedef void (*__android_aborter_function)(const char* abort_message); + +#if __ANDROID_API__ >= 30 || !defined(__ANDROID__) /** * Writes the log message specified with logger_data and msg to the log. logger_data includes * additional file name and line number information that a logger may use. logger_data is versioned @@ -199,54 +216,44 @@ struct __android_logger_data { * buffers, then pass the message to liblog via this function, and therefore we do not want to * duplicate the loggability check here. */ -void __android_log_write_logger_data(struct __android_logger_data* logger_data, const char* msg); - -/** - * Prototype for the 'logger' function that is called for every log message. - */ -typedef void (*__android_logger_function)(const struct __android_logger_data* logger_data, - const char* message); +void __android_log_write_logger_data(struct __android_logger_data* logger_data, const char* msg) + __INTRODUCED_IN(30); /** * Sets a user defined logger function. All log messages sent to liblog will be set to the * function pointer specified by logger for processing. */ -void __android_log_set_logger(__android_logger_function logger); +void __android_log_set_logger(__android_logger_function logger) __INTRODUCED_IN(30); /** * Writes the log message to logd. This is an __android_logger_function and can be provided to * __android_log_set_logger(). It is the default logger when running liblog on a device. */ -void __android_log_logd_logger(const struct __android_logger_data* logger_data, const char* msg); +void __android_log_logd_logger(const struct __android_logger_data* logger_data, const char* msg) + __INTRODUCED_IN(30); /** * Writes the log message to stderr. This is an __android_logger_function and can be provided to * __android_log_set_logger(). It is the default logger when running liblog on host. */ void __android_log_stderr_logger(const struct __android_logger_data* logger_data, - const char* message); - -/** - * Prototype for the 'abort' function that is called when liblog will abort due to - * __android_log_assert() failures. - */ -typedef void (*__android_aborter_function)(const char* abort_message); + const char* message) __INTRODUCED_IN(30); /** * Sets a user defined aborter function that is called for __android_log_assert() failures. */ -void __android_log_set_aborter(__android_aborter_function aborter); +void __android_log_set_aborter(__android_aborter_function aborter) __INTRODUCED_IN(30); /** * Calls the stored aborter function. This allows for other logging libraries to use the same * aborter function by calling this function in liblog. */ -void __android_log_call_aborter(const char* abort_message); +void __android_log_call_aborter(const char* abort_message) __INTRODUCED_IN(30); /** * Sets android_set_abort_message() on device then aborts(). This is the default aborter. */ -void __android_log_default_aborter(const char* abort_message); +void __android_log_default_aborter(const char* abort_message) __INTRODUCED_IN(30); /** * Use the per-tag properties "log.tag." along with the minimum priority from @@ -260,28 +267,30 @@ void __android_log_default_aborter(const char* abort_message); * * prio is ANDROID_LOG_VERBOSE to ANDROID_LOG_FATAL. */ -int __android_log_is_loggable(int prio, const char* tag, int default_prio); -int __android_log_is_loggable_len(int prio, const char* tag, size_t len, int default_prio); +int __android_log_is_loggable(int prio, const char* tag, int default_prio) __INTRODUCED_IN(30); +int __android_log_is_loggable_len(int prio, const char* tag, size_t len, int default_prio) + __INTRODUCED_IN(30); /** * Sets the minimum priority that will be logged for this process. * * This returns the previous set minimum priority, or ANDROID_LOG_DEFAULT if none was set. */ -int __android_log_set_minimum_priority(int priority); +int __android_log_set_minimum_priority(int priority) __INTRODUCED_IN(30); /** * Gets the minimum priority that will be logged for this process. If none has been set by a * previous __android_log_set_minimum_priority() call, this returns ANDROID_LOG_DEFAULT. */ -int __android_log_get_minimum_priority(void); +int __android_log_get_minimum_priority(void) __INTRODUCED_IN(30); /** * Sets the default tag if no tag is provided when writing a log message. Defaults to * getprogname(). This truncates tag to the maximum log message size, though appropriate tags * should be much smaller. */ -void __android_log_set_default_tag(const char* tag); +void __android_log_set_default_tag(const char* tag) __INTRODUCED_IN(30); +#endif #ifdef __cplusplus }