[app] add the app module init system
diff --git a/include/app.h b/include/app.h
new file mode 100644
index 0000000..1a9a93c
--- /dev/null
+++ b/include/app.h
@@ -0,0 +1,48 @@
+/*
+ * Copyright (c) 2009 Travis Geiselbrecht
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining
+ * a copy of this software and associated documentation files
+ * (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge,
+ * publish, distribute, sublicense, and/or sell copies of the Software,
+ * and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+#ifndef __APP_H
+#define __APP_H
+
+/* app support api */
+void apps_init(void); /* one time setup */
+
+/* app entry point */
+struct _app_descriptor;
+typedef void (*app_entry)(const struct _app_descriptor *, void *args);
+
+/* app startup flags */
+#define APP_FLAG_BOOT_START 0x1
+#define APP_FLAG_THREAD     0x2
+
+/* each app needs to define one of these to define its startup conditions */
+struct _app_descriptor {
+	const char *name;
+	app_entry entry;
+	unsigned int flags;
+};
+
+#define APP_START(appname) struct _app_descriptor _app_##appname __SECTION(".apps") = { .name = #appname,
+#define APP_END };
+
+#endif
+