1 /* 2 * 3 * BlueZ - Bluetooth protocol stack for Linux 4 * 5 * Copyright (C) 2004-2010 Marcel Holtmann <marcel@holtmann.org> 6 * 7 * 8 * This program is free software; you can redistribute it and/or modify 9 * it under the terms of the GNU General Public License as published by 10 * the Free Software Foundation; either version 2 of the License, or 11 * (at your option) any later version. 12 * 13 * This program is distributed in the hope that it will be useful, 14 * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 * GNU General Public License for more details. 17 * 18 * You should have received a copy of the GNU General Public License 19 * along with this program; if not, write to the Free Software 20 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 21 * 22 */ 23 24 void info(const char *format, ...) __attribute__((format(printf, 1, 2))); 25 void error(const char *format, ...) __attribute__((format(printf, 1, 2))); 26 27 void btd_debug(const char *format, ...) __attribute__((format(printf, 1, 2))); 28 29 void __btd_log_init(const char *debug, int detach); 30 void __btd_log_cleanup(void); 31 void __btd_toggle_debug(); 32 33 struct btd_debug_desc { 34 const char *name; 35 const char *file; 36 #define BTD_DEBUG_FLAG_DEFAULT (0) 37 #define BTD_DEBUG_FLAG_PRINT (1 << 0) 38 unsigned int flags; 39 } __attribute__((aligned(8))); 40 41 /** 42 * DBG: 43 * @fmt: format string 44 * @arg...: list of arguments 45 * 46 * Simple macro around btd_debug() which also include the function 47 * name it is called in. 48 */ 49 #define DBG(fmt, arg...) do { \ 50 static struct btd_debug_desc __btd_debug_desc \ 51 __attribute__((used, section("__debug"), aligned(8))) = { \ 52 .file = __FILE__, .flags = BTD_DEBUG_FLAG_DEFAULT, \ 53 }; \ 54 if (__btd_debug_desc.flags & BTD_DEBUG_FLAG_PRINT) \ 55 btd_debug("%s:%s() " fmt, __FILE__, __FUNCTION__ , ## arg); \ 56 } while (0) 57 58