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

index 6f58042..ca273be 100644 (file)
@@ -23,6 +23,7 @@
 #define __OFONO_PLUGIN_H
 
 #include <ofono/version.h>
+#include <ofono/log.h>
 
 #ifdef __cplusplus
 extern "C" {
@@ -50,6 +51,8 @@ struct ofono_plugin_desc {
        int priority;
        int (*init) (void);
        void (*exit) (void);
+       void *debug_start;
+       void *debug_stop;
 };
 
 /**
@@ -69,10 +72,15 @@ struct ofono_plugin_desc {
                };
 #else
 #define OFONO_PLUGIN_DEFINE(name, description, version, priority, init, exit) \
+               extern struct ofono_debug_desc __start___debug[] \
+                               __attribute__ ((visibility("hidden"))); \
+               extern struct ofono_debug_desc __stop___debug[] \
+                               __attribute__ ((visibility("hidden"))); \
                extern struct ofono_plugin_desc ofono_plugin_desc \
                                __attribute__ ((visibility("default"))); \
                struct ofono_plugin_desc ofono_plugin_desc = { \
-                       #name, description, version, priority, init, exit \
+                       #name, description, version, priority, init, exit, \
+                       __start___debug, __stop___debug \
                };
 #endif
 
index d484185..ccfedb1 100644 (file)
@@ -66,6 +66,8 @@ static gboolean add_plugin(void *handle, struct ofono_plugin_desc *desc)
        plugin->active = FALSE;
        plugin->desc = desc;
 
+       __ofono_log_enable(desc->debug_start, desc->debug_stop);
+
        plugins = g_slist_insert_sorted(plugins, plugin, compare_priority);
 
        return TRUE;