X-Git-Url: https://vcs.maemo.org/git/?a=blobdiff_plain;f=include%2Fplugin.h;h=086786c4c4609ad4b29be554ed2909e8e3853407;hb=0d0a895973544466177880f4cdcdd6db806f6518;hp=b7f1eb3af4e833024f3cef2b95e4ffe623170350;hpb=c33b387b3ed16bce4058b9088260c4ece1ff6342;p=connman diff --git a/include/plugin.h b/include/plugin.h index b7f1eb3..086786c 100644 --- a/include/plugin.h +++ b/include/plugin.h @@ -2,7 +2,7 @@ * * Connection Manager * - * Copyright (C) 2007 Intel Corporation. All rights reserved. + * Copyright (C) 2007-2009 Intel Corporation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as @@ -22,21 +22,67 @@ #ifndef __CONNMAN_PLUGIN_H #define __CONNMAN_PLUGIN_H +#include + #ifdef __cplusplus extern "C" { #endif +#ifndef CONNMAN_API_SUBJECT_TO_CHANGE +#error "Please define CONNMAN_API_SUBJECT_TO_CHANGE to acknowledge your \ +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 + * @short_description: Functions for declaring plugins + */ + struct connman_plugin_desc { const char *name; const char *description; const char *version; + int priority; int (*init) (void); void (*exit) (void); }; -#define CONNMAN_PLUGIN_DEFINE(name,description,version,init,exit) \ +/** + * CONNMAN_PLUGIN_DEFINE: + * @name: plugin name + * @description: plugin description + * @version: plugin version string + * @init: init function called on plugin loading + * @exit: exit function called on plugin removal + * + * Macro for defining a plugin descriptor + * + * |[ + * #include + * + * static int example_init(void) + * { + * return 0; + * } + * + * static void example_exit(void) + * { + * } + * + * CONNMAN_PLUGIN_DEFINE(example, "Example plugin", CONNMAN_VERSION, + * example_init, example_exit) + * ]| + */ +#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 \ }; #ifdef __cplusplus