plugin: Add debug support for external plugins
authorMarcel Holtmann <marcel@holtmann.org>
Mon, 15 Aug 2011 23:08:26 +0000 (16:08 -0700)
committerMarcel Holtmann <marcel@holtmann.org>
Mon, 15 Aug 2011 23:08:26 +0000 (16:08 -0700)
include/plugin.h
src/plugin.c

index 4b9d540..74ac4c2 100644 (file)
@@ -23,6 +23,7 @@
 #define __CONNMAN_PLUGIN_H
 
 #include <connman/version.h>
+#include <connman/log.h>
 
 #ifdef __cplusplus
 extern "C" {
@@ -50,6 +51,8 @@ struct connman_plugin_desc {
        int priority;
        int (*init) (void);
        void (*exit) (void);
+       void *debug_start;
+       void *debug_stop;
 };
 
 /**
@@ -85,10 +88,15 @@ struct connman_plugin_desc {
                };
 #else
 #define CONNMAN_PLUGIN_DEFINE(name, description, version, priority, init, exit) \
+               extern struct connman_debug_desc __start___debug[] \
+                               __attribute__ ((visibility("hidden"))); \
+               extern struct connman_debug_desc __stop___debug[] \
+                               __attribute__ ((visibility("hidden"))); \
                extern struct connman_plugin_desc connman_plugin_desc \
                                __attribute__ ((visibility("default"))); \
                struct connman_plugin_desc connman_plugin_desc = { \
-                       #name, description, version, priority, init, exit \
+                       #name, description, version, priority, init, exit, \
+                       __start___debug, __stop___debug \
                };
 #endif
 
index 3f001d8..9d990b8 100644 (file)
@@ -80,6 +80,8 @@ static gboolean add_plugin(void *handle, struct connman_plugin_desc *desc)
        plugin->active = FALSE;
        plugin->desc = desc;
 
+       __connman_log_enable(desc->debug_start, desc->debug_stop);
+
        plugins = g_slist_insert_sorted(plugins, plugin, compare_priority);
 
        return TRUE;