Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Enforce "Rule-of-Three/Five".
[simgrid.git] / src / kernel / context / ContextSwapped.hpp
index 60d9987..0195e1b 100644 (file)
@@ -18,7 +18,9 @@ class SwappedContext;
 class SwappedContextFactory : public ContextFactory {
   friend SwappedContext; // Reads whether we are in parallel mode
 public:
-  explicit SwappedContextFactory(std::string name);
+  SwappedContextFactory();
+  SwappedContextFactory(const SwappedContextFactory&) = delete;
+  SwappedContextFactory& operator=(const SwappedContextFactory&) = delete;
   ~SwappedContextFactory() override;
   void run_all() override;
 
@@ -35,8 +37,9 @@ private:
 
 class SwappedContext : public Context {
 public:
-  SwappedContext(std::function<void()> code, void_pfn_smxprocess_t cleanup_func, smx_actor_t get_actor,
-                 SwappedContextFactory* factory);
+  SwappedContext(std::function<void()> code, smx_actor_t get_actor, SwappedContextFactory* factory);
+  SwappedContext(const SwappedContext&) = delete;
+  SwappedContext& operator=(const SwappedContext&) = delete;
   virtual ~SwappedContext();
 
   void suspend() override;
@@ -47,9 +50,15 @@ public:
 
   void* get_stack();
 
-  // FIXME: Killme
   static thread_local uintptr_t worker_id_;
 
+#if HAVE_SANITIZER_ADDRESS_FIBER_SUPPORT
+  const void* asan_stack_   = nullptr;
+  size_t asan_stack_size_   = 0;
+  SwappedContext* asan_ctx_ = nullptr;
+  bool asan_stop_           = false;
+#endif
+
 private:
   void* stack_ = nullptr;                /* the thread stack */
   SwappedContextFactory* const factory_; // for sequential and parallel run_all()