/* * Ultra Wide Band * Debug Support * * Copyright (C) 2005-2006 Intel Corporation * Inaky Perez-Gonzalez * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License version * 2 as published by the Free Software Foundation. * * This program 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 General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301, USA. * * * FIXME: doc * Invoke like: * * #define D_LOCAL 4 * #include * * At the end of your include files. */ #include struct device; extern void dump_bytes(struct device *dev, const void *_buf, size_t rsize); /* Master debug switch; !0 enables, 0 disables */ #define D_MASTER (!0) /* Local (per-file) debug switch; #define before #including */ #ifndef D_LOCAL #define D_LOCAL 0 #endif #undef __d_printf #undef d_fnstart #undef d_fnend #undef d_printf #undef d_dump #define __d_printf(l, _tag, _dev, f, a...) \ do { \ struct device *__dev = (_dev); \ if (D_MASTER && D_LOCAL >= (l)) { \ char __head[64] = ""; \ if (_dev != NULL) { \ if ((unsigned long)__dev < 4096) \ printk(KERN_ERR "E: Corrupt dev %p\n", \ __dev); \ else \ snprintf(__head, sizeof(__head), \ "%s %s: ", \ dev_driver_string(__dev), \ __dev->bus_id); \ } \ printk(KERN_ERR "%s%s" _tag ": " f, __head, \ __func__, ## a); \ } \ } while (0 && _dev) #define d_fnstart(l, _dev, f, a...) \ __d_printf(l, " FNSTART", _dev, f, ## a) #define d_fnend(l, _dev, f, a...) \ __d_printf(l, " FNEND", _dev, f, ## a) #define d_printf(l, _dev, f, a...) \ __d_printf(l, "", _dev, f, ## a) #define d_dump(l, _dev, ptr, size) \ do { \ struct device *__dev = _dev; \ if (D_MASTER && D_LOCAL >= (l)) \ dump_bytes(__dev, ptr, size); \ } while (0 && _dev) #define d_test(l) (D_MASTER && D_LOCAL >= (l))