summaryrefslogtreecommitdiff
path: root/libadhocutil/runtimeContext.h
diff options
context:
space:
mode:
Diffstat (limited to 'libadhocutil/runtimeContext.h')
-rw-r--r--libadhocutil/runtimeContext.h28
1 files changed, 28 insertions, 0 deletions
diff --git a/libadhocutil/runtimeContext.h b/libadhocutil/runtimeContext.h
new file mode 100644
index 0000000..6fe26f0
--- /dev/null
+++ b/libadhocutil/runtimeContext.h
@@ -0,0 +1,28 @@
+#ifndef ADHOCUTIL_RUNTIMECONTEXT_H
+#define ADHOCUTIL_RUNTIMECONTEXT_H
+
+#include <stdlib.h>
+#include <ucontext.h>
+#include "visibility.h"
+
+class DLL_PUBLIC RuntimeContext {
+ public:
+ RuntimeContext(size_t stacksize = 16384);
+ virtual ~RuntimeContext();
+
+ void SwapContext();
+
+ protected:
+ DLL_PRIVATE virtual void Callback() = 0;
+
+ private:
+ DLL_PRIVATE static void ccallback(RuntimeContext * rc);
+
+ void * stack;
+ ucontext_t initial;
+ ucontext_t callback;
+ bool swapped;
+};
+
+#endif
+