summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorSamuel Ortiz <sameo@linux.intel.com>2011-04-29 20:44:13 +0200
committerMarcel Holtmann <marcel@holtmann.org>2011-10-20 23:54:02 -0700
commit005847cffbbdc9140143456c608dc6472060d60a (patch)
treeb1b5190181214352024b075e2ea2ee5f60fa8dcf /include
parentf6dbdb0713c851724ed75b48c8f8e8f0efd16302 (diff)
downloadneard-005847cffbbdc9140143456c608dc6472060d60a.tar.gz
neard-005847cffbbdc9140143456c608dc6472060d60a.tar.bz2
neard-005847cffbbdc9140143456c608dc6472060d60a.zip
plugin: Initial infrastructure
Diffstat (limited to 'include')
-rw-r--r--include/log.h47
-rw-r--r--include/plugin.h95
-rw-r--r--include/version.h36
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 */
+