X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/8bc85164acb335cf909052b966b2ee4932e06cd7..39c935d6d5ee86d153f6f7e6a10d723ae7c57f6f:/src/kernel/context/Context.hpp diff --git a/src/kernel/context/Context.hpp b/src/kernel/context/Context.hpp index 7dc642024e..e26bb2e027 100644 --- a/src/kernel/context/Context.hpp +++ b/src/kernel/context/Context.hpp @@ -1,4 +1,4 @@ -/* Copyright (c) 2007-2020. The SimGrid Team. All rights reserved. */ +/* Copyright (c) 2007-2021. The SimGrid Team. All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it * under the terms of the license (GNU LGPL) which comes with this package. */ @@ -18,7 +18,7 @@ namespace context { class XBT_PUBLIC ContextFactory { public: - explicit ContextFactory() {} + explicit ContextFactory() = default; ContextFactory(const ContextFactory&) = delete; ContextFactory& operator=(const ContextFactory&) = delete; virtual ~ContextFactory(); @@ -34,7 +34,7 @@ public: protected: template T* new_context(Args&&... args) { - T* context = new T(std::forward(args)...); + auto* context = new T(std::forward(args)...); context->declare_context(sizeof(T)); return context; } @@ -43,12 +43,18 @@ protected: class XBT_PUBLIC Context { friend ContextFactory; + static thread_local Context* current_context_; + std::function code_; actor::ActorImpl* actor_ = nullptr; bool iwannadie_ = false; void declare_context(std::size_t size); public: +#ifndef WIN32 + static int install_sigsegv_stack(stack_t* old_stack, bool enable); +#endif + Context(std::function&& code, actor::ActorImpl* actor); Context(const Context&) = delete; Context& operator=(const Context&) = delete; @@ -89,7 +95,7 @@ public: /* This allows Java to hijack the context factory (Java induces factories of factory :) */ -typedef ContextFactory* (*ContextFactoryInitializer)(); +using ContextFactoryInitializer = ContextFactory* (*)(); XBT_PUBLIC_DATA ContextFactoryInitializer factory_initializer; XBT_PRIVATE ContextFactory* thread_factory(); @@ -101,12 +107,6 @@ XBT_PRIVATE ContextFactory* boost_factory(); } // namespace kernel } // namespace simgrid -typedef simgrid::kernel::context::ContextFactory *smx_context_factory_t; - XBT_PRIVATE void SIMIX_context_mod_init(); XBT_PRIVATE void SIMIX_context_mod_exit(); - -#ifndef WIN32 -XBT_PUBLIC_DATA unsigned char sigsegv_stack[SIGSTKSZ]; -#endif #endif