From 39d918dab52d39df7003c5af89ad6602ed4617c1 Mon Sep 17 00:00:00 2001 From: Kichan Kwon Date: Wed, 13 Jan 2016 17:03:45 +0900 Subject: [PATCH] doc: add macro related part Delete needless header file Change-Id: I8f4146d3306f8544f94928be38d9d7a5ac098a7e Signed-off-by: Kichan Kwon --- doc/dlog_doc.h | 22 +++ include/dlog.h | 554 --------------------------------------------------------- 2 files changed, 22 insertions(+), 554 deletions(-) delete mode 100644 include/dlog.h diff --git a/doc/dlog_doc.h b/doc/dlog_doc.h index 93cf1b5..ae5dc57 100755 --- a/doc/dlog_doc.h +++ b/doc/dlog_doc.h @@ -53,6 +53,28 @@ priority level indicates the urgency of log message +

Macro example for useful usage

+The dlog APIs can be used by defining own macros. The macros can be defined like below examples. +Thus, developers can use appropriate method as a matter of convenience. + +@code +#undef LOG_TAG +#define LOG_TAG "APP_TAG" + +#define LOGI(fmt, arg...) \ + ({ do { \ + dlog_print(DLOG_INFO, LOG_TAG, "%s: %s(%d) > " fmt, __MODULE__, __func__, __LINE__, ##arg); \ + } while (0); }) +#define LOGW(fmt, arg...) \ + ({ do { \ + dlog_print(DLOG_WARN, LOG_TAG, "%s: %s(%d) > " fmt, __MODULE__, __func__, __LINE__, ##arg); \ + } while (0); }) +#define LOGE(fmt, arg...) \ + ({ do { \ + dlog_print(DLOG_ERROR, LOG_TAG, "%s: %s(%d) > " fmt, __MODULE__, __func__, __LINE__, ##arg); \ + } while (0); }) +@endcode +

dlogutil

Introduction

You can use dlogutil command to view and follow the contents of the log buffers. The general usage is : diff --git a/include/dlog.h b/include/dlog.h deleted file mode 100644 index 397e768..0000000 --- a/include/dlog.h +++ /dev/null @@ -1,554 +0,0 @@ -/* - * DLOG - * Copyright (c) 2005-2008, The Android Open Source Project - * Copyright (c) 2012-2013 Samsung Electronics Co., Ltd. - * - * Licensed under the Apache License, Version 2.0 (the License); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * @file dlog.h - * @version 0.4 - * @brief This file is the header file of interface of dlog. - */ -#ifndef _DLOG_H_ -#define _DLOG_H_ - -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -/* - * This is the local tag used for the following simplified - * logging macros. You can change this preprocessor definition - * before using the other macros to change the tag. - */ -#ifndef LOG_TAG -#define LOG_TAG NULL -#endif - -#ifndef __MODULE__ -#define __MODULE__ (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : __FILE__) -#endif - -#define DLOG_DEBUG_ENABLE - -/** - * @addtogroup CAPI_SYSTEM_DLOG - * @{ - * - */ -/** - * @brief Enumeration for Dlog Error. - * @since_tizen 2.3 - */ -typedef enum { - DLOG_ERROR_NONE = TIZEN_ERROR_NONE, /**< Successful */ - DLOG_ERROR_INVALID_PARAMETER = TIZEN_ERROR_INVALID_PARAMETER, /**< Invalid parameter */ - DLOG_ERROR_NOT_PERMITTED = TIZEN_ERROR_NOT_PERMITTED /**< Operation not permitted */ -} dlog_error_e; -/** - * @} - */ - -/** - * @addtogroup CAPI_SYSTEM_DLOG - * @{ - * - */ -/** - * @brief log priority values, in ascending priority order. - * @since_tizen 2.3 - */ -typedef enum { - DLOG_UNKNOWN = 0, /**< Keep this always at the start */ - DLOG_DEFAULT, /**< Default */ - DLOG_VERBOSE, /**< Verbose */ - DLOG_DEBUG, /**< Debug */ - DLOG_INFO, /**< Info */ - DLOG_WARN, /**< Warning */ - DLOG_ERROR, /**< Error */ - DLOG_FATAL, /**< Fatal */ - DLOG_SILENT, /**< Silent */ - DLOG_PRIO_MAX /**< Keep this always at the end. */ -} log_priority; -/** - * @} - */ - -/** - * @internal - * @brief log id - * @since_tizen 2.3 - */ -typedef enum { - LOG_ID_MAIN = 0, - LOG_ID_RADIO, - LOG_ID_SYSTEM, - LOG_ID_APPS, - LOG_ID_MAX -} log_id_t; - -static inline int __dlog_no_print(const char *fmt __attribute__((unused)), ...) { return 0; } - -#define CONDITION(cond) (__builtin_expect((cond) != 0, 0)) -#define NOP(...) ({ do { __dlog_no_print(__VA_ARGS__); } while (0); }) - -// Macro inner work--------------------------------------------------------------- -#undef LOG_ -#ifdef DLOG_DEBUG_ENABLE -#define LOG_(id, prio, tag, fmt, arg...) \ - ({ do { \ - __dlog_print(id, prio, tag, "%s: %s(%d) > " fmt, __MODULE__, __func__, __LINE__, ##arg); \ - } while (0); }) -#else -#define LOG_(id, prio, tag, fmt, arg...) \ - ({ do { \ - if ((int)prio != DLOG_DEBUG) { \ - __dlog_print(id, prio, tag, "%s: %s(%d) > " fmt, __MODULE__, __func__, __LINE__, ##arg); \ - } \ - } while (0); }) -#endif - -#undef SECURE_LOG_ -#ifdef DLOG_DEBUG_ENABLE -#define SECURE_LOG_(id, prio, tag, fmt, arg...) \ - ({ do { \ - __dlog_print(id, prio, tag, "%s: %s(%d) > [SECURE_LOG] " fmt, __MODULE__, __func__, __LINE__, ##arg); \ - } while (0); }) -#else -#define SECURE_LOG_(id, prio, tag, fmt, arg...) NOP(fmt, ##arg) -#endif -// --------------------------------------------------------------------- -/** - * @internal - * @brief For Secure Log. - * @remarks Normally we strip Secure log from release builds. - * Please use this macros. - */ -/** - * @internal - * @brief For Application and etc. - * @details Simplified macro to send a main log message using the current LOG_TAG. - * Example: - * SECURE_LOGD("app debug %d", num); - * SECURE_LOGE("app error %d", num); - */ -#define SECURE_LOGD(format, arg...) SECURE_LOG_(LOG_ID_MAIN, DLOG_DEBUG, LOG_TAG, format, ##arg) -#define SECURE_LOGI(format, arg...) SECURE_LOG_(LOG_ID_MAIN, DLOG_INFO, LOG_TAG, format, ##arg) -#define SECURE_LOGW(format, arg...) SECURE_LOG_(LOG_ID_MAIN, DLOG_WARN, LOG_TAG, format, ##arg) -#define SECURE_LOGE(format, arg...) SECURE_LOG_(LOG_ID_MAIN, DLOG_ERROR, LOG_TAG, format, ##arg) -#define SECURE_LOGF(format, arg...) SECURE_LOG_(LOG_ID_MAIN, DLOG_FATAL, LOG_TAG, format, ##arg) -/** - * @internal - * @brief For Framework and system etc. - * @details Simplified macro to send a system log message using the current LOG_TAG. - * Example: - * SECURE_SLOGD("system debug %d", num); - * SECURE_SLOGE("system error %d", num); - */ -#define SECURE_SLOGD(format, arg...) SECURE_LOG_(LOG_ID_SYSTEM, DLOG_DEBUG, LOG_TAG, format, ##arg) -#define SECURE_SLOGI(format, arg...) SECURE_LOG_(LOG_ID_SYSTEM, DLOG_INFO, LOG_TAG, format, ##arg) -#define SECURE_SLOGW(format, arg...) SECURE_LOG_(LOG_ID_SYSTEM, DLOG_WARN, LOG_TAG, format, ##arg) -#define SECURE_SLOGE(format, arg...) SECURE_LOG_(LOG_ID_SYSTEM, DLOG_ERROR, LOG_TAG, format, ##arg) -#define SECURE_SLOGF(format, arg...) SECURE_LOG_(LOG_ID_SYSTEM, DLOG_FATAL, LOG_TAG, format, ##arg) -/** - * @internal - * @brief For Modem and radio etc. - * @details Simplified macro to send a radio log message using the current LOG_TAG. - * Example: - * SECURE_RLOGD("radio debug %d", num); - * SECURE_RLOGE("radio error %d", num); - */ -#define SECURE_RLOGD(format, arg...) SECURE_LOG_(LOG_ID_RADIO, DLOG_DEBUG, LOG_TAG, format, ##arg) -#define SECURE_RLOGI(format, arg...) SECURE_LOG_(LOG_ID_RADIO, DLOG_INFO, LOG_TAG, format, ##arg) -#define SECURE_RLOGW(format, arg...) SECURE_LOG_(LOG_ID_RADIO, DLOG_WARN, LOG_TAG, format, ##arg) -#define SECURE_RLOGE(format, arg...) SECURE_LOG_(LOG_ID_RADIO, DLOG_ERROR, LOG_TAG, format, ##arg) -#define SECURE_RLOGF(format, arg...) SECURE_LOG_(LOG_ID_RADIO, DLOG_FATAL, LOG_TAG, format, ##arg) -/** - * @internal - * @brief For Tizen OSP Application macro. - */ -#define SECURE_ALOGD(format, arg...) SECURE_LOG_(LOG_ID_APPS, DLOG_DEBUG, LOG_TAG, format, ##arg) -#define SECURE_ALOGI(format, arg...) SECURE_LOG_(LOG_ID_APPS, DLOG_INFO, LOG_TAG, format, ##arg) -#define SECURE_ALOGW(format, arg...) SECURE_LOG_(LOG_ID_APPS, DLOG_WARN, LOG_TAG, format, ##arg) -#define SECURE_ALOGE(format, arg...) SECURE_LOG_(LOG_ID_APPS, DLOG_ERROR, LOG_TAG, format, ##arg) -#define SECURE_ALOGF(format, arg...) SECURE_LOG_(LOG_ID_APPS, DLOG_FATAL, LOG_TAG, format, ##arg) -/** - * @internal - * @details If you want use redefined macro. - * You can use this macro. - * This macro need priority and tag arguments. - */ -#define SECURE_LOG(priority, tag, format, arg...) SECURE_LOG_(LOG_ID_MAIN, D##priority, tag, format, ##arg) -#define SECURE_SLOG(priority, tag, format, arg...) SECURE_LOG_(LOG_ID_SYSTEM, D##priority, tag, format, ##arg) -#define SECURE_RLOG(priority, tag, format, arg...) SECURE_LOG_(LOG_ID_RADIO, D##priority, tag, format, ##arg) -#define SECURE_ALOG(priority, tag, format, arg...) SECURE_LOG_(LOG_ID_APPS, D##priority, tag, format, ##arg) - -/** - * @internal - * @brief For Application and etc. - * @details Simplified macro to send a main log message using the current LOG_TAG. - * Example: - * LOGD("app debug %d", num); - * LOGE("app error %d", num); - */ -#ifdef DLOG_DEBUG_ENABLE -#define LOGD(format, arg...) LOG_(LOG_ID_MAIN, DLOG_DEBUG, LOG_TAG, format, ##arg) -#else -#define LOGD(format, arg...) NOP(format, ##arg) -#endif -#define LOGI(format, arg...) LOG_(LOG_ID_MAIN, DLOG_INFO, LOG_TAG, format, ##arg) -#define LOGW(format, arg...) LOG_(LOG_ID_MAIN, DLOG_WARN, LOG_TAG, format, ##arg) -#define LOGE(format, arg...) LOG_(LOG_ID_MAIN, DLOG_ERROR, LOG_TAG, format, ##arg) -#define LOGF(format, arg...) LOG_(LOG_ID_MAIN, DLOG_FATAL, LOG_TAG, format, ##arg) -/** - * @internal - * @brief For Framework and system etc. - * @details Simplified macro to send a system log message using the current LOG_TAG. - * Example: - * SLOGD("system debug %d", num); - * SLOGE("system error %d", num); - */ -#ifdef DLOG_DEBUG_ENABLE -#define SLOGD(format, arg...) LOG_(LOG_ID_SYSTEM, DLOG_DEBUG, LOG_TAG, format, ##arg) -#else -#define SLOGD(format, arg...) NOP(format, ##arg) -#endif -#define SLOGI(format, arg...) LOG_(LOG_ID_SYSTEM, DLOG_INFO, LOG_TAG, format, ##arg) -#define SLOGW(format, arg...) LOG_(LOG_ID_SYSTEM, DLOG_WARN, LOG_TAG, format, ##arg) -#define SLOGE(format, arg...) LOG_(LOG_ID_SYSTEM, DLOG_ERROR, LOG_TAG, format, ##arg) -#define SLOGF(format, arg...) LOG_(LOG_ID_SYSTEM, DLOG_FATAL, LOG_TAG, format, ##arg) -/** - * @internal - * @brief For Modem and radio etc. - * @details Simplified macro to send a radio log message using the current LOG_TAG. - * Example: - * RLOGD("radio debug %d", num); - * RLOGE("radio error %d", num); - */ -#ifdef DLOG_DEBUG_ENABLE -#define RLOGD(format, arg...) LOG_(LOG_ID_RADIO, DLOG_DEBUG, LOG_TAG, format, ##arg) -#else -#define RLOGD(format, arg...) NOP(format, ##arg) -#endif -#define RLOGI(format, arg...) LOG_(LOG_ID_RADIO, DLOG_INFO, LOG_TAG, format, ##arg) -#define RLOGW(format, arg...) LOG_(LOG_ID_RADIO, DLOG_WARN, LOG_TAG, format, ##arg) -#define RLOGE(format, arg...) LOG_(LOG_ID_RADIO, DLOG_ERROR, LOG_TAG, format, ##arg) -#define RLOGF(format, arg...) LOG_(LOG_ID_RADIO, DLOG_FATAL, LOG_TAG, format, ##arg) -/** - * @internal - * @brief For Tizen OSP Application macro. - */ -#ifdef DLOG_DEBUG_ENABLE -#define ALOGD(format, arg...) LOG_(LOG_ID_APPS, DLOG_DEBUG, LOG_TAG, format, ##arg) -#else -#define ALOGD(format, arg...) NOP(format, ##arg) -#endif -#define ALOGI(format, arg...) LOG_(LOG_ID_APPS, DLOG_INFO, LOG_TAG, format, ##arg) -#define ALOGW(format, arg...) LOG_(LOG_ID_APPS, DLOG_WARN, LOG_TAG, format, ##arg) -#define ALOGE(format, arg...) LOG_(LOG_ID_APPS, DLOG_ERROR, LOG_TAG, format, ##arg) -#define ALOGF(format, arg...) LOG_(LOG_ID_APPS, DLOG_FATAL, LOG_TAG, format, ##arg) - -/** - * @internal - * @brief Basic log message macro - * @details This macro allows you to specify a priority and a tag - * if you want to use this macro directly, you must add this messages for unity of messages. - * (LOG(prio, tag, "%s: %s(%d) > " format, __MODULE__, __func__, __LINE__, ##arg)) - * - * Example: - * #define MYMACRO(prio, tag, format, arg...) \ - * LOG(prio, tag, format, ##arg) - * - * MYMACRO(LOG_DEBUG, MYTAG, "test mymacro %d", num); - * - */ -#ifndef LOG -#define LOG(priority, tag, format, arg...) LOG_(LOG_ID_MAIN, D##priority, tag, format, ##arg) -#endif -#define SLOG(priority, tag, format, arg...) LOG_(LOG_ID_SYSTEM, D##priority, tag, format, ##arg) -#define RLOG(priority, tag, format, arg...) LOG_(LOG_ID_RADIO, D##priority, tag, format, ##arg) -#define ALOG(priority, tag, format, arg...) LOG_(LOG_ID_APPS, D##priority, tag, format, ##arg) -/** - * @internal - */ -#define LOG_VA(priority, tag, fmt, args) \ - vprint_log(D##priority, tag, fmt, args) -#define ALOG_VA(priority, tag, fmt, args) \ - vprint_apps_log(D##priority, tag, fmt, args) -#define RLOG_VA(priority, tag, fmt, args) \ - vprint_radio_log(D##priority, tag, fmt, args) -#define SLOG_VA(priority, tag, fmt, args) \ - vprint_system_log(D##priority, tag, fmt, args) -#define print_apps_log(prio, tag, fmt...) \ - __dlog_print(LOG_ID_APPS, prio, tag, fmt) -#define vprint_apps_log(prio, tag, fmt...) \ - __dlog_vprint(LOG_ID_APPS, prio, tag, fmt) -#define print_log(prio, tag, fmt...) \ - __dlog_print(LOG_ID_MAIN, prio, tag, fmt) -#define vprint_log(prio, tag, fmt...) \ - __dlog_vprint(LOG_ID_MAIN, prio, tag, fmt) -#define print_radio_log(prio, tag, fmt...)\ - __dlog_print(LOG_ID_RADIO, prio, tag, fmt) -#define vprint_radio_log(prio, tag, fmt...) \ - __dlog_vprint(LOG_ID_RADIO, prio, tag, fmt) -#define print_system_log(prio, tag, fmt...)\ - __dlog_print(LOG_ID_SYSTEM, prio, tag, fmt) -#define vprint_system_log(prio, tag, fmt...) \ - __dlog_vprint(LOG_ID_SYSTEM, prio, tag, fmt) - -// --------------------------------------------------------------------- -// Don't use below macro no more!! It will be removed -- Verbose and Fatal priority macro will be removed -- -#define COMPATIBILITY_ON -#ifdef COMPATIBILITY_ON -/** - * @internal - * @breif Conditional Macro. - * @remarks Don't use this macro. It's just compatibility. - * It will be deprecated. - */ -#define LOGD_IF(cond, format, arg...) \ - ({ do { \ - if (CONDITION(cond)) { \ - LOGD(format, ##arg); \ - } \ - } while (0); }) -#define LOGI_IF(cond, format, arg...) \ - ({ do { \ - if (CONDITION(cond)) { \ - LOGI(format, ##arg); \ - } \ - } while (0); }) -#define LOGW_IF(cond, format, arg...) \ - ({ do { \ - if (CONDITION(cond)) { \ - LOGW(format, ##arg); \ - } \ - } while (0); }) -#define LOGE_IF(cond, format, arg...) \ - ({ do { \ - if (CONDITION(cond)) { \ - LOGE(format, ##arg); \ - } \ - } while (0); }) -#define LOGF_IF(cond, format, arg...) \ - ({ do { \ - if (CONDITION(cond)) { \ - LOGF(format, ##arg); \ - } \ - } while (0); }) -#define SLOGD_IF(cond, format, arg...) \ - ({ do { \ - if (CONDITION(cond)) { \ - SLOGD(format, ##arg); \ - } \ - } while (0); }) -#define SLOGI_IF(cond, format, arg...) \ - ({ do { \ - if (CONDITION(cond)) { \ - SLOGI(format, ##arg); \ - } \ - } while (0); }) -#define SLOGW_IF(cond, format, arg...) \ - ({ do { \ - if (CONDITION(cond)) { \ - SLOGW(format, ##arg); \ - } \ - } while (0); }) -#define SLOGE_IF(cond, format, arg...) \ - ({ do { \ - if (CONDITION(cond)) { \ - SLOGE(format, ##arg); \ - } \ - } while (0); }) -#define SLOGF_IF(cond, format, arg...) \ - ({ do { \ - if (CONDITION(cond)) { \ - SLOGF(format, ##arg); \ - } \ - } while (0); }) -#define RLOGD_IF(cond, format, arg...) \ - ({ do { \ - if (CONDITION(cond)) { \ - RLOGD(format, ##arg); \ - } \ - } while (0); }) -#define RLOGI_IF(cond, format, arg...) \ - ({ do { \ - if (CONDITION(cond)) { \ - RLOGI(format, ##arg); \ - } \ - } while (0); }) -#define RLOGW_IF(cond, format, arg...) \ - ({ do { \ - if (CONDITION(cond)) { \ - RLOGW(format, ##arg); \ - } \ - } while (0); }) -#define RLOGE_IF(cond, format, arg...) \ - ({ do { \ - if (CONDITION(cond)) { \ - RLOGE(format, ##arg); \ - } \ - } while (0); }) -#define RLOGF_IF(cond, format, arg...) \ - ({ do { \ - if (CONDITION(cond)) { \ - RLOGF(format, ##arg); \ - } \ - } while (0); }) -#define LOG_ON() ({ do { } while (0); }) -#define LOGV(format, arg...) NOP(format, ##arg) -#define SLOGV(format, arg...) NOP(format, ##arg) -#define RLOGV(format, arg...) NOP(format, ##arg) -#define ALOGV(format, arg...) NOP(format, ##arg) -#define LOGV_IF(cond, format, arg...) NOP(format, ##arg) -#define SLOGV_IF(cond, format, arg...) NOP(format, ##arg) -#define RLOGV_IF(cond, format, arg...) NOP(format, ##arg) -#define SECLOG(...) ({ do { } while (0); }) -#endif -// --------------------------------------------------------------------- - -/** - * @addtogroup CAPI_SYSTEM_DLOG - * @{ - */ -/** - * @brief Send log with priority and tag. - * @details for application - * @since_tizen 2.3 - * @param[in] prio log_priority - * @param[in] tag tag - * @param[in] fmt format string - * @return On success, the function returns the number of bytes written. - * On error, a negative errno-style error code - * @retval #DLOG_ERROR_INVALID_PARAMETER Invalid parameter - * @retval #DLOG_ERROR_NOT_PERMITTED Operation not permitted - * @pre none - * @post none - * @see dlog_vprint - * @code -#include -int main(void) -{ - int integer = 21; - char string[] = "test dlog"; - - dlog_print(DLOG_INFO, "USR_TAG", "test dlog"); - dlog_print(DLOG_INFO, "USR_TAG", "%s, %d", string, integer); - return 0; -} - * @endcode - */ -int dlog_print(log_priority prio, const char *tag, const char *fmt, ...); - -/** - * @brief Send log with priority, tag and va_list. - * @details for application - * @since_tizen 2.3 - * @param[in] prio log_priority - * @param[in] tag tag - * @param[in] fmt format string - * @param[in] ap va_list - * @return On success, the function returns the number of bytes written. - * On error, a negative errno-style error code - * @retval #DLOG_ERROR_INVALID_PARAMETER Invalid parameter - * @retval #DLOG_ERROR_NOT_PERMITTED Operation not permitted - * @pre none - * @post none - * @see dlog_print - * @code -#include -void my_debug_print(char *format, ...) -{ - va_list ap; - - va_start(ap, format); - dlog_vprint(DLOG_INFO, "USR_TAG", format, ap); - va_end(ap); -} - -int main(void) -{ - my_debug_print("%s", "test dlog"); - my_debug_print("%s, %d", "test dlog", 21); - return 0; -} - * @endcode - */ -int dlog_vprint(log_priority prio, const char *tag, const char *fmt, va_list ap); -/** - * @} - */ - - -/* - * The stuff in the rest of this file should not be used directly. - */ -/** - * @internal - * @brief Send log. - * @details Use LOG(), SLOG(), RLOG() family - * not to use __dlog_print() directly - * @remarks Must not use this API directly. use macros instead. - * @param[in] log_id log device id - * @param[in] prio priority - * @param[in] tag tag - * @param[in] fmt format string - * @return Operation result - * @retval 0>= Success - * @retval -1 Error - * @pre none - * @post none - * @see __dlog_print - * @code - #define LOG_TAG USR_TAG - #include - __dlog_print(LOG_ID_MAIN, DLOG_INFO, USR_TAG, "you must not use this API directly"); - * @endcode - */ -int __dlog_print(log_id_t log_id, int prio, const char *tag, const char *fmt, ...); - -/** - * @internal - * @brief Send log with va_list. - * @details Use LOG_VA(), SLOG_VA(), RLOG_VA() family - not to use __dlog_vprint() directly - * @remarks Must not use this API directly. use macros instead. - * @param[in] log_id log device id - * @param[in] prio priority - * @param[in] tag tag - * @param[in] fmt format string - * @param[in] ap va_list - * @return Operation result - * @retval 0>= Success - * @retval -1 Error - * @pre none - * @post none - * @see __dlog_vprint - * @code - #define LOG_TAG USR_TAG - #include - __dlog_vprint(LOG_ID_MAIN, DLOG_INFO, USR_TAG, "you must not use this API directly", ap); - * @endcode - */ -int __dlog_vprint(log_id_t log_id, int prio, const char *tag, const char *fmt, va_list ap); -#ifdef __cplusplus -} -#endif /* __cplusplus */ -#endif /* _DLOG_H_*/ -- 2.7.4