#include "misc.hh"
#include "mtasker_context.hh"
#include <memory>
+#include <boost/function.hpp>
using namespace ::boost::multi_index;
// #define MTASKERTIMING 1
struct ThreadInfo
{
std::shared_ptr<pdns_ucontext_t> context;
- std::function<void(void)> start;
+ boost::function<void(void)> start;
char* startOfStack;
char* highestStackSeen;
#ifdef MTASKERTIMING
#define MTASKER_CONTEXT_HH
#include "lazy_allocator.hh"
-#include <functional>
+#include <boost/function.hpp>
#include <vector>
#include <exception>
void
pdns_makecontext
-(pdns_ucontext_t& ctx, std::function<void(void)>& start);
+(pdns_ucontext_t& ctx, boost::function<void(void)>& start);
#endif // MTASKER_CONTEXT_HH
struct args_t {
fcontext_t prev_ctx = nullptr;
pdns_ucontext_t* self = nullptr;
- std::function<void(void)>* work = nullptr;
+ boost::function<void(void)>* work = nullptr;
};
extern "C" {
void
pdns_makecontext
-(pdns_ucontext_t& ctx, std::function<void(void)>& start) {
+(pdns_ucontext_t& ctx, boost::function<void(void)>& start) {
assert (ctx.uc_link);
assert (ctx.uc_stack.size() >= 8192);
assert (!ctx.uc_mcontext);
threadWrapper (int const ctx0, int const ctx1, int const fun0, int const fun1) {
auto ctx = joinPtr<pdns_ucontext_t>(ctx0, ctx1);
try {
- auto start = std::move(*joinPtr<std::function<void()>>(fun0, fun1));
+ auto start = std::move(*joinPtr<boost::function<void()>>(fun0, fun1));
start();
} catch (...) {
ctx->exception = std::current_exception();
void
pdns_makecontext
-(pdns_ucontext_t& ctx, std::function<void(void)>& start) {
+(pdns_ucontext_t& ctx, boost::function<void(void)>& start) {
assert (ctx.uc_link);
assert (ctx.uc_stack.size());