X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=include%2Fplugin.h;h=8d2bb08e00a579c8f9a0802ac82856e39dfed92e;hb=4de3c3c4a9a978dcfec233275719dbc328aef241;hp=427ceede08052bcbdfa37e820668444046b5c86b;hpb=a6d8f4bb835dc01344861e26b78867273322cb52;p=platform%2Fupstream%2Fconnman.git diff --git a/include/plugin.h b/include/plugin.h old mode 100644 new mode 100755 index 427ceed..8d2bb08 --- a/include/plugin.h +++ b/include/plugin.h @@ -2,7 +2,7 @@ * * Connection Manager * - * Copyright (C) 2007-2008 Intel Corporation. All rights reserved. + * Copyright (C) 2007-2012 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,10 +22,22 @@ #ifndef __CONNMAN_PLUGIN_H #define __CONNMAN_PLUGIN_H +#include +#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 @@ -36,8 +48,11 @@ struct connman_plugin_desc { const char *name; const char *description; const char *version; + int priority; int (*init) (void); void (*exit) (void); + void *debug_start; + void *debug_stop; }; /** @@ -49,11 +64,41 @@ struct connman_plugin_desc { * @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, init, exit) \ +#ifdef CONNMAN_PLUGIN_BUILTIN +#define CONNMAN_PLUGIN_DEFINE(name, description, version, priority, init, exit) \ + 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_debug_desc __start___debug[] \ + __attribute__ ((weak, visibility("hidden"))); \ + extern struct connman_debug_desc __stop___debug[] \ + __attribute__ ((weak, visibility("hidden"))); \ + 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, \ + __start___debug, __stop___debug \ }; +#endif #ifdef __cplusplus }