diff options
Diffstat (limited to 'include')
| -rw-r--r-- | include/cutils/alelog.h | 59 | ||||
| -rw-r--r-- | include/cutils/xlog.h | 185 |
2 files changed, 244 insertions, 0 deletions
diff --git a/include/cutils/alelog.h b/include/cutils/alelog.h new file mode 100644 index 0000000..294c7a9 --- /dev/null +++ b/include/cutils/alelog.h @@ -0,0 +1,59 @@ +#if !defined(__ALE_H__) +#define __ALE_H__ + +#if defined(__cplusplus) +extern "C" { +#endif + +#define LOGGER_ALE_MASK 0xf0 + +#define LOGGER_ALE_MSG_RAW 0x00 +#define LOGGER_ALE_MSG_K 0x10 +#define LOGGER_ALE_MSG_N 0x20 +#define LOGGER_ALE_MSG_J 0x30 +#define LOGGER_ALE_XMSG_K 0x40 +#define LOGGER_ALE_XMSG_N 0x50 +#define LOGGER_ALE_XMSG_J 0x60 + +#define LOGGER_ALE_MSG_SIZE 768 + +#define LOGGER_ALE_ARGS_MAX 16 +struct ale_convert { + const char *tag_str; + const char *fmt_ptr; + const char *file; + int lineno; + unsigned int hash; + char params[LOGGER_ALE_ARGS_MAX]; +}; + +int ale_log_output_binary(int prio, const char *tag, const void *payload, size_t len); + +int ale_log_output(int bufid, int prio, const struct ale_convert *convert, ...); + +#define ale_log_print(bufid, prio, tag, fmt, ...) \ + ({ \ + if (__builtin_constant_p(tag) && __builtin_constant_p(fmt)) { \ + static const struct ale_convert ____ale_rec____ = \ + { \ + __builtin_constant_p(tag) ? tag : NULL, \ + __builtin_constant_p(fmt) ? fmt : NULL, \ + __FILE__, \ + __builtin_constant_p(prio) ? prio : 0, \ + 0, \ + "" }; \ + ale_log_output(bufid, prio, &____ale_rec____, ##__VA_ARGS__); \ + } \ + else { \ + struct ale_convert ale = \ + {tag, fmt, NULL, \ + 0, 0, ""}; \ + ale_log_output(bufid, prio, &ale, ##__VA_ARGS__); \ + } \ + }) + +#if defined(__cplusplus) +}; +#endif + +#endif diff --git a/include/cutils/xlog.h b/include/cutils/xlog.h new file mode 100644 index 0000000..a8089b7 --- /dev/null +++ b/include/cutils/xlog.h @@ -0,0 +1,185 @@ +#if !defined(_XLOG_H) +#define _XLOG_H + +#include <cutils/log.h> +#include <cutils/alelog.h> + +#ifdef __cplusplus +extern "C" { +#endif + +int xlogf_java_tag_is_on(const char *name, int level); +int xlogf_native_tag_is_on(const char *name, int level); + +int xlogf_java_xtag_is_on(const char *name, int level); +int xlogf_native_xtag_is_on(const char *name, int level); + +#ifndef XLOG_TAG +#define XLOG_TAG NULL +#endif + +#ifndef SXLOGV +#define SXLOGV(...) ((void)SXLOG_PRI(ANDROID_LOG_VERBOSE, LOG_TAG, __VA_ARGS__)) +#endif +#ifndef SXLOGD +#define SXLOGD(...) ((void)SXLOG_PRI(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__)) +#endif +#ifndef SXLOGI +#define SXLOGI(...) ((void)SXLOG_PRI(ANDROID_LOG_INFO, LOG_TAG, __VA_ARGS__)) +#endif +#ifndef SXLOGW +#define SXLOGW(...) ((void)SXLOG_PRI(ANDROID_LOG_WARN, LOG_TAG, __VA_ARGS__)) +#endif +#ifndef SXLOGE +#define SXLOGE(...) ((void)SXLOG_PRI(ANDROID_LOG_ERROR, LOG_TAG, __VA_ARGS__)) +#endif +#ifndef SXLOGF +#define SXLOGF(...) ((void)SXLOG_PRI(ANDROID_LOG_FATAL, LOG_TAG, __VA_ARGS__)) +#endif +#if LOG_NDEBUG +#define SXLOG_ASSERT(cond, ...) \ + ( (CONDITION(cond)) \ + ? ((void)SXLOGF(LOG_TAG, __VA_ARGS__)) \ + : (void)0 ) +#else +#define SXLOG_ASSERT(cond, ...) ((void)0) +#endif + +#define SXLOG_ALWAYS_ASSERT(cond,...) \ + ( (CONDITION(cond)) \ + ? ((void)SXLOGF(LOG_TAG, __VA_ARGS__)) \ + : (void)0 ) + +#ifndef XLOGV +#define XLOGV(...) ((void)XLOG_PRI(ANDROID_LOG_VERBOSE, LOG_TAG, __VA_ARGS__)) +#endif +#ifndef XLOGD +#define XLOGD(...) ((void)XLOG_PRI(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__)) +#endif +#ifndef XLOGI +#define XLOGI(...) ((void)XLOG_PRI(ANDROID_LOG_INFO, LOG_TAG, __VA_ARGS__)) +#endif +#ifndef XLOGW +#define XLOGW(...) ((void)XLOG_PRI(ANDROID_LOG_WARN, LOG_TAG, __VA_ARGS__)) +#endif +#ifndef XLOGE +#define XLOGE(...) ((void)XLOG_PRI(ANDROID_LOG_ERROR, LOG_TAG, __VA_ARGS__)) +#endif +#ifndef XLOGF +#define XLOGF(...) ((void)XLOG_PRI(ANDROID_LOG_FATAL, LOG_TAG, __VA_ARGS__)) +#endif + +#if LOG_NDEBUG +#define XLOG_ASSERT(cond, ...) \ + (!(cond) \ + ? ((void)XLOGF(__VA_ARGS__)) \ + : (void)0) +#else +#define XLOG_ASSERT(cond, ...) ((void)0) +#endif + +#define XLOG_ALWAY_ASSERT(cond, ...) \ + (!(cond) \ + ? ((void)XLOGF(__VA_ARGS__)) \ + : (void)0) + + +#ifndef SXLOGV2 +#define SXLOGV2(...) ((void)SXLOG_PRI(ANDROID_LOG_VERBOSE, XLOG_TAG, __VA_ARGS__)) +#endif +#ifndef SXLOGD2 +#define SXLOGD2(...) ((void)SXLOG_PRI(ANDROID_LOG_DEBUG, XLOG_TAG, __VA_ARGS__)) +#endif +#ifndef SXLOGI2 +#define SXLOGI2(...) ((void)SXLOG_PRI(ANDROID_LOG_INFO, XLOG_TAG, __VA_ARGS__)) +#endif +#ifndef SXLOGW2 +#define SXLOGW2(...) ((void)SXLOG_PRI(ANDROID_LOG_WARN, XLOG_TAG, __VA_ARGS__)) +#endif +#ifndef SXLOGE2 +#define SXLOGE2(...) ((void)SXLOG_PRI(ANDROID_LOG_ERROR, XLOG_TAG, __VA_ARGS__)) +#endif +#ifndef SXLOGF2 +#define SXLOGF2(...) ((void)SXLOG_PRI(ANDROID_LOG_FATAL, XLOG_TAG, __VA_ARGS__)) +#endif + +#ifndef XLOGV2 +#define XLOGV2(...) ((void)XLOG_PRI(ANDROID_LOG_VERBOSE, XLOG_TAG, __VA_ARGS__)) +#endif +#ifndef XLOGD2 +#define XLOGD2(...) ((void)XLOG_PRI(ANDROID_LOG_DEBUG, XLOG_TAG, __VA_ARGS__)) +#endif +#ifndef XLOGI2 +#define XLOGI2(...) ((void)XLOG_PRI(ANDROID_LOG_INFO, XLOG_TAG, __VA_ARGS__)) +#endif +#ifndef XLOGW2 +#define XLOGW2(...) ((void)XLOG_PRI(ANDROID_LOG_WARN, XLOG_TAG, __VA_ARGS__)) +#endif +#ifndef XLOGE2 +#define XLOGE2(...) ((void)XLOG_PRI(ANDROID_LOG_ERROR, XLOG_TAG, __VA_ARGS__)) +#endif +#ifndef XLOGF2 +#define XLOGF2(...) ((void)XLOG_PRI(ANDROID_LOG_FATAL, XLOG_TAG, __VA_ARGS__)) +#endif + +struct xlog_record { + const char *tag_str; + const char *fmt_str; + int prio; +}; + +#if defined(__cplusplus) +extern "C" { +#endif + +int __xlog_buf_printf(int bufid, const struct xlog_record *rec, ...); + +#if defined(__cplusplus) +} +#endif + +#if !defined(HAVE_ALE_FEATURE) + +#define xlog_buf_printf(bufid, prio, tag, fmt, ...) \ + ({ \ + static const struct xlog_record _xlog_rec = \ + {tag, fmt, prio}; \ + __xlog_buf_printf(bufid, &_xlog_rec, ##__VA_ARGS__); \ + }) + +#else + +#define xlog_buf_printf(bufid, prio, tag, fmt, ...) \ + ({ \ + static const struct ale_convert ____xlog_ale_rec____ = \ + { tag, fmt, __FILE__, prio, 0, "" }; \ + ale_log_output(bufid, prio, &____xlog_ale_rec____, \ + ##__VA_ARGS__); \ + }) + +#endif + +#ifdef HAVE_XLOG_FEATURE +#define XLOG_PRI(priority, tag, ...) \ + xlog_buf_printf(LOG_ID_MAIN, priority, tag, __VA_ARGS__) + +#define SXLOG_PRI(priority, tag, ...) \ + xlog_buf_printf(LOG_ID_MAIN, priority, tag, __VA_ARGS__) + +#define xlog_printf(priority, tag, ...) \ + xlog_buf_printf(LOG_ID_MAIN, priority, tag, __VA_ARGS__) + +#define sxlog_printf(priority, tag, ...) \ + xlog_buf_printf(LOG_ID_SYSTEM, priority, tag, __VA_ARGS__) +#else //HAVE_XLOG_FEATURE +#define XLOG_PRI(priority, tag, ...) ((void)0) +#define SXLOG_PRI(priority, tag, ...) ((void)0) +#define xlog_printf(priority, tag, ...) ((void)0) +#define sxlog_printf(priority, tag, ...) ((void)0) +#endif //HAVE_XLOG_FEATURE + +#ifdef __cplusplus +} +#endif + +#endif |
