]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blob - include/linux/uwb/debug.h
Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux...
[linux-2.6-omap-h63xx.git] / include / linux / uwb / debug.h
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
33 struct device;
34 extern 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...)                              \
51 do {                                                                    \
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)              \
77 do {                                            \
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))