/* * $Id: pi-debug.h,v 1.10 2008/11/06 10:45:33 desrod Exp $ * * pi-debug.h: Debugging utilities * * This library is free software; you can redistribute it and/or modify it * under the terms of the GNU Library General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This library is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library * General Public License for more details. * * You should have received a copy of the GNU Library General Public License * along with this library; if not, write to the Free Software Foundation, * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef _PILOT_DEBUG_H_ #define _PILOT_DEBUG_H_ #ifdef __cplusplus extern "C" { #endif #include "pi-args.h" #define PI_DBG_NONE 0x000 #define PI_DBG_SYS 0x001 #define PI_DBG_DEV 0x002 #define PI_DBG_SLP 0x004 #define PI_DBG_PADP 0x008 #define PI_DBG_DLP 0x010 #define PI_DBG_NET 0x020 #define PI_DBG_CMP 0x040 #define PI_DBG_SOCK 0x080 #define PI_DBG_API 0x100 #define PI_DBG_USER 0x200 #define PI_DBG_ALL 0x400 #define PI_DBG_LVL_NONE 0x00 #define PI_DBG_LVL_ERR 0x01 #define PI_DBG_LVL_WARN 0x02 #define PI_DBG_LVL_INFO 0x04 #define PI_DBG_LVL_DEBUG 0x08 extern int pi_debug_get_types PI_ARGS((void)); extern void pi_debug_set_types PI_ARGS((int types)); extern int pi_debug_get_level PI_ARGS((void)); extern void pi_debug_set_level PI_ARGS((int level)); extern void pi_debug_set_file PI_ARGS((const char *path)); extern void pi_log PI_ARGS((int type, int level, PI_CONST char *format, ...)); extern void pi_dumpline PI_ARGS((PI_CONST char *buf, size_t len, unsigned int addr)); extern void pi_dumpdata PI_ARGS((PI_CONST char *buf, size_t len)); #ifdef PI_DEBUG #define ASSERT(expr) \ do { \ if (!(expr)) { \ pi_log (PI_DBG_ALL, PI_DBG_LVL_NONE, \ "file %s: line %d: assertion failed: (%s)", \ __FILE__, \ __LINE__, \ #expr); \ } \ } while (0); #define CHECK(type, level, expr) \ do { \ if ((pi_debug_get_types () & type) \ && pi_debug_get_level () >= level) \ expr; \ } while (0); #define LOG(x) pi_log x #else #define ASSERT(expr) #define CHECK(type, level, expr) #define LOG(x) #endif #ifdef __cplusplus } #endif #endif