summaryrefslogtreecommitdiffstats
path: root/cpukit/shttpd/compat_rtems.h
diff options
context:
space:
mode:
Diffstat (limited to 'cpukit/shttpd/compat_rtems.h')
-rw-r--r--cpukit/shttpd/compat_rtems.h60
1 files changed, 60 insertions, 0 deletions
diff --git a/cpukit/shttpd/compat_rtems.h b/cpukit/shttpd/compat_rtems.h
new file mode 100644
index 0000000000..8d31e46abb
--- /dev/null
+++ b/cpukit/shttpd/compat_rtems.h
@@ -0,0 +1,60 @@
+/**
+ * @file rtems/rtems-shttpd.h
+ */
+
+#ifndef _rtems_rtems_webserver_h
+#define _rtems_rtems_webserver_h
+
+#include "shttpd.h"
+
+#include <rtems.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <dirent.h>
+
+/* RTEMS is an Real Time Embedded operating system, for operation in hardware.
+ It does not have SSL or CGI support, as it does not have dynamic library
+ loading or sub-processes. */
+#define EMBEDDED
+#define NO_SSL
+#define NO_CGI
+
+#define DIRSEP '/'
+#define O_BINARY 0
+#define ERRNO errno
+
+/* RTEMS version is Thread Safe */
+#define InitializeCriticalSection(x) rtems_semaphore_create( \
+ rtems_build_name('H','T','P','X'), \
+ 1, /* Not Held Yet.*/ \
+ RTEMS_FIFO | \
+ RTEMS_BINARY_SEMAPHORE, \
+ 0, \
+ x);
+#define EnterCriticalSection(x) rtems_semaphore_obtain(*(x),RTEMS_WAIT,RTEMS_NO_TIMEOUT)
+#define LeaveCriticalSection(x) rtems_semaphore_release(*(x))
+
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef void (*rtems_shttpd_addpages)(struct shttpd_ctx *ctx);
+typedef void (*rtems_shttpd_init)(void);
+
+rtems_status_code rtems_initialize_webserver(rtems_task_priority initial_priority,
+ rtems_unsigned32 stack_size,
+ rtems_mode initial_modes,
+ rtems_attribute attribute_set,
+ rtems_shttpd_init init_callback,
+ rtems_shttpd_addpages addpages_callback,
+ char *webroot
+ );
+void rtems_terminate_webserver(void);
+int rtems_webserver_ok(void);
+
+#ifdef __cplusplus
+}
+#endif
+#endif