diff options
author | Samuel Ortiz <sameo@linux.intel.com> | 2011-04-29 20:44:13 +0200 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2011-10-20 23:54:02 -0700 |
commit | 005847cffbbdc9140143456c608dc6472060d60a (patch) | |
tree | b1b5190181214352024b075e2ea2ee5f60fa8dcf /include | |
parent | f6dbdb0713c851724ed75b48c8f8e8f0efd16302 (diff) | |
download | neard-005847cffbbdc9140143456c608dc6472060d60a.tar.gz neard-005847cffbbdc9140143456c608dc6472060d60a.tar.bz2 neard-005847cffbbdc9140143456c608dc6472060d60a.zip |
plugin: Initial infrastructure
Diffstat (limited to 'include')
-rw-r--r-- | include/log.h | 47 | ||||
-rw-r--r-- | include/plugin.h | 95 | ||||
-rw-r--r-- | include/version.h | 36 |
3 files changed, 178 insertions, 0 deletions
diff --git a/include/log.h b/include/log.h new file mode 100644 index 0000000..6183b88 --- /dev/null +++ b/include/log.h @@ -0,0 +1,47 @@ +/* + * + * neard - Near Field Communication manager + * + * Copyright (C) 2011 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 + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +void near_info(const char *format, ...) + __attribute__((format(printf, 1, 2))); +void near_warn(const char *format, ...) + __attribute__((format(printf, 1, 2))); +void near_error(const char *format, ...) + __attribute__((format(printf, 1, 2))); +void near_debug(const char *format, ...) + __attribute__((format(printf, 1, 2))); + +struct near_debug_desc { + const char *name; + const char *file; +#define NEAR_DEBUG_FLAG_DEFAULT (0) +#define NEAR_DEBUG_FLAG_PRINT (1 << 0) + unsigned int flags; +} __attribute__((aligned(8))); + +#define DBG(fmt, arg...) do { \ + static struct near_debug_desc __near_debug_desc \ + __attribute__((used, section("__debug"), aligned(8))) = { \ + .file = __FILE__, .flags = NEAR_DEBUG_FLAG_DEFAULT, \ + }; \ + if (__near_debug_desc.flags & NEAR_DEBUG_FLAG_PRINT) \ + near_debug("%s:%s() " fmt, \ + __FILE__, __FUNCTION__ , ## arg); \ +} while (0) diff --git a/include/plugin.h b/include/plugin.h new file mode 100644 index 0000000..609775d --- /dev/null +++ b/include/plugin.h @@ -0,0 +1,95 @@ +/* + * + * neard - Near Field Communication manager + * + * Copyright (C) 2011 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 + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + + +#ifndef __NEAR_PLUGIN_H +#define __NEAR_PLUGIN_H + +#include <near/version.h> + +#ifdef __cplusplus +extern "C" { +#endif + +#define NEAR_PLUGIN_PRIORITY_LOW -100 +#define NEAR_PLUGIN_PRIORITY_DEFAULT 0 +#define NEAR_PLUGIN_PRIORITY_HIGH 100 + +/** + * SECTION:plugin + * @title: Plugin premitives + * @short_description: Functions for declaring plugins + */ + +struct near_plugin_desc { + const char *name; + const char *description; + const char *version; + int priority; + int (*init) (void); + void (*exit) (void); +}; + +/** + * NEAR_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 <near/plugin.h> + * + * static int example_init(void) + * { + * return 0; + * } + * + * static void example_exit(void) + * { + * } + * + * NEAR_PLUGIN_DEFINE(example, "Example plugin", NEAR_VERSION, + * example_init, example_exit) + * ]| + */ +#ifdef NEAR_PLUGIN_BUILTIN +#define NEAR_PLUGIN_DEFINE(name, description, version, priority, init, exit) \ + struct near_plugin_desc __near_builtin_ ## name = { \ + #name, description, version, priority, init, exit \ + }; +#else +#define NEAR_PLUGIN_DEFINE(name, description, version, priority, init, exit) \ + extern struct near_plugin_desc near_plugin_desc \ + __attribute__ ((visibility("default"))); \ + struct near_plugin_desc near_plugin_desc = { \ + #name, description, version, priority, init, exit \ + }; +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* __NEAR_PLUGIN_H */ diff --git a/include/version.h b/include/version.h new file mode 100644 index 0000000..1f97731 --- /dev/null +++ b/include/version.h @@ -0,0 +1,36 @@ +/* + * + * neard - Near Field Communication manager + * + * Copyright (C) 2011 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 + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#ifndef __NEAR_VERSION_H +#define __NEAR_VERSION_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define NEAR_VERSION "0.1" + +#ifdef __cplusplus +} +#endif + +#endif /* __NEAR_VERSION_H */ + |