]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/blobdiff - include/linux/dynamic_debug.h
treewide: use __printf not __attribute__((format(printf,...)))
[mirror_ubuntu-artful-kernel.git] / include / linux / dynamic_debug.h
index e747ecd48e1c043a87549cb2cdab62e04e1edbf5..0564e3c39882fc20e7e4c3e08d8ea2840d32302d 100644 (file)
@@ -1,13 +1,6 @@
 #ifndef _DYNAMIC_DEBUG_H
 #define _DYNAMIC_DEBUG_H
 
-/* dynamic_printk_enabled, and dynamic_printk_enabled2 are bitmasks in which
- * bit n is set to 1 if any modname hashes into the bucket n, 0 otherwise. They
- * use independent hash functions, to reduce the chance of false positives.
- */
-extern long long dynamic_debug_enabled;
-extern long long dynamic_debug_enabled2;
-
 /*
  * An instance of this structure is created in a special
  * ELF section at every dynamic debug callsite.  At runtime,
@@ -44,29 +37,57 @@ int ddebug_add_module(struct _ddebug *tab, unsigned int n,
 
 #if defined(CONFIG_DYNAMIC_DEBUG)
 extern int ddebug_remove_module(const char *mod_name);
-extern int __dynamic_pr_debug(struct _ddebug *descriptor, const char *fmt, ...)
-       __attribute__ ((format (printf, 2, 3)));
-
-#define dynamic_pr_debug(fmt, ...) do {                                        \
-       static struct _ddebug descriptor                                \
-       __used                                                          \
-       __attribute__((section("__verbose"), aligned(8))) =             \
-       { KBUILD_MODNAME, __func__, __FILE__, fmt, __LINE__,            \
-               _DPRINTK_FLAGS_DEFAULT };                               \
-       if (unlikely(descriptor.enabled))                               \
-               __dynamic_pr_debug(&descriptor, pr_fmt(fmt), ##__VA_ARGS__); \
-       } while (0)
-
-
-#define dynamic_dev_dbg(dev, fmt, ...) do {                            \
-       static struct _ddebug descriptor                                \
-       __used                                                          \
-       __attribute__((section("__verbose"), aligned(8))) =             \
-       { KBUILD_MODNAME, __func__, __FILE__, fmt, __LINE__,            \
-               _DPRINTK_FLAGS_DEFAULT };                               \
-       if (unlikely(descriptor.enabled))                               \
-               dev_printk(KERN_DEBUG, dev, fmt, ##__VA_ARGS__);        \
-       } while (0)
+extern __printf(2, 3)
+int __dynamic_pr_debug(struct _ddebug *descriptor, const char *fmt, ...);
+
+struct device;
+
+extern __printf(3, 4)
+int __dynamic_dev_dbg(struct _ddebug *descriptor, const struct device *dev,
+                     const char *fmt, ...);
+
+struct net_device;
+
+extern __printf(3, 4)
+int __dynamic_netdev_dbg(struct _ddebug *descriptor,
+                        const struct net_device *dev,
+                        const char *fmt, ...);
+
+#define DEFINE_DYNAMIC_DEBUG_METADATA(name, fmt)               \
+       static struct _ddebug __used __aligned(8)               \
+       __attribute__((section("__verbose"))) name = {          \
+               .modname = KBUILD_MODNAME,                      \
+               .function = __func__,                           \
+               .filename = __FILE__,                           \
+               .format = (fmt),                                \
+               .lineno = __LINE__,                             \
+               .flags =  _DPRINTK_FLAGS_DEFAULT,               \
+               .enabled = false,                               \
+       }
+
+#define dynamic_pr_debug(fmt, ...)                             \
+do {                                                           \
+       DEFINE_DYNAMIC_DEBUG_METADATA(descriptor, fmt);         \
+       if (unlikely(descriptor.enabled))                       \
+               __dynamic_pr_debug(&descriptor, pr_fmt(fmt),    \
+                                  ##__VA_ARGS__);              \
+} while (0)
+
+#define dynamic_dev_dbg(dev, fmt, ...)                         \
+do {                                                           \
+       DEFINE_DYNAMIC_DEBUG_METADATA(descriptor, fmt); \
+       if (unlikely(descriptor.enabled))                       \
+               __dynamic_dev_dbg(&descriptor, dev, fmt,        \
+                                 ##__VA_ARGS__);               \
+} while (0)
+
+#define dynamic_netdev_dbg(dev, fmt, ...)                      \
+do {                                                           \
+       DEFINE_DYNAMIC_DEBUG_METADATA(descriptor, fmt);         \
+       if (unlikely(descriptor.enabled))                       \
+               __dynamic_netdev_dbg(&descriptor, dev, fmt,     \
+                                    ##__VA_ARGS__);            \
+} while (0)
 
 #else