at v2.6.28 2.3 kB view raw
1/* 2 * Ultra Wide Band 3 * Debug Support 4 * 5 * Copyright (C) 2005-2006 Intel Corporation 6 * Inaky Perez-Gonzalez <inaky.perez-gonzalez@intel.com> 7 * 8 * This program is free software; you can redistribute it and/or 9 * modify it under the terms of the GNU General Public License version 10 * 2 as published by the Free Software Foundation. 11 * 12 * This program is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 * GNU General Public License for more details. 16 * 17 * You should have received a copy of the GNU General Public License 18 * along with this program; if not, write to the Free Software 19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 20 * 02110-1301, USA. 21 * 22 * 23 * FIXME: doc 24 * Invoke like: 25 * 26 * #define D_LOCAL 4 27 * #include <linux/uwb/debug.h> 28 * 29 * At the end of your include files. 30 */ 31#include <linux/types.h> 32 33struct device; 34extern void dump_bytes(struct device *dev, const void *_buf, size_t rsize); 35 36/* Master debug switch; !0 enables, 0 disables */ 37#define D_MASTER (!0) 38 39/* Local (per-file) debug switch; #define before #including */ 40#ifndef D_LOCAL 41#define D_LOCAL 0 42#endif 43 44#undef __d_printf 45#undef d_fnstart 46#undef d_fnend 47#undef d_printf 48#undef d_dump 49 50#define __d_printf(l, _tag, _dev, f, a...) \ 51do { \ 52 struct device *__dev = (_dev); \ 53 if (D_MASTER && D_LOCAL >= (l)) { \ 54 char __head[64] = ""; \ 55 if (_dev != NULL) { \ 56 if ((unsigned long)__dev < 4096) \ 57 printk(KERN_ERR "E: Corrupt dev %p\n", \ 58 __dev); \ 59 else \ 60 snprintf(__head, sizeof(__head), \ 61 "%s %s: ", \ 62 dev_driver_string(__dev), \ 63 __dev->bus_id); \ 64 } \ 65 printk(KERN_ERR "%s%s" _tag ": " f, __head, \ 66 __func__, ## a); \ 67 } \ 68} while (0 && _dev) 69 70#define d_fnstart(l, _dev, f, a...) \ 71 __d_printf(l, " FNSTART", _dev, f, ## a) 72#define d_fnend(l, _dev, f, a...) \ 73 __d_printf(l, " FNEND", _dev, f, ## a) 74#define d_printf(l, _dev, f, a...) \ 75 __d_printf(l, "", _dev, f, ## a) 76#define d_dump(l, _dev, ptr, size) \ 77do { \ 78 struct device *__dev = _dev; \ 79 if (D_MASTER && D_LOCAL >= (l)) \ 80 dump_bytes(__dev, ptr, size); \ 81} while (0 && _dev) 82#define d_test(l) (D_MASTER && D_LOCAL >= (l))