Add initial steps for builtin plugins
[connman] / include / plugin.h
index 84e0958..21ecd0e 100644 (file)
@@ -33,6 +33,10 @@ extern "C" {
 understanding that ConnMan hasn't reached a stable API."
 #endif
 
+#define CONNMAN_PLUGIN_PRIORITY_LOW      -100
+#define CONNMAN_PLUGIN_PRIORITY_DEFAULT     0
+#define CONNMAN_PLUGIN_PRIORITY_HIGH      100
+
 /**
  * SECTION:plugin
  * @title: Plugin premitives
@@ -43,6 +47,7 @@ struct connman_plugin_desc {
        const char *name;
        const char *description;
        const char *version;
+       int priority;
        int (*init) (void);
        void (*exit) (void);
 };
@@ -73,10 +78,21 @@ struct connman_plugin_desc {
  *                                     example_init, example_exit)
  * ]|
  */
-#define CONNMAN_PLUGIN_DEFINE(name, description, version, init, exit) \
+#ifdef CONNMAN_PLUGIN_BUILTIN
+#define CONNMAN_PLUGIN_DEFINE(name, description, version, priority, init, exit) \
+               extern struct connman_plugin_desc connman_builtin_ ## name \
+                               __attribute__ ((visibility("default"))); \
+               struct connman_plugin_desc connman_builtin_ ## name = { \
+                       #name, description, version, priority, init, exit \
+               };
+#else
+#define CONNMAN_PLUGIN_DEFINE(name, description, version, priority, init, exit) \
+               extern struct connman_plugin_desc connman_plugin_desc \
+                               __attribute__ ((visibility("default"))); \
                struct connman_plugin_desc connman_plugin_desc = { \
-                       #name, description, version, init, exit \
+                       #name, description, version, priority, init, exit \
                };
+#endif
 
 #ifdef __cplusplus
 }