A
lgorithmique
N
umérique
D
istribuée
Public GIT Repository
projects
/
simgrid.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
cosmetics (less SIMIX, more kernel)
[simgrid.git]
/
src
/
kernel
/
context
/
ContextSwapped.hpp
diff --git
a/src/kernel/context/ContextSwapped.hpp
b/src/kernel/context/ContextSwapped.hpp
index
0195e1b
..
25f22c2
100644
(file)
--- a/
src/kernel/context/ContextSwapped.hpp
+++ b/
src/kernel/context/ContextSwapped.hpp
@@
-3,12
+3,12
@@
/* 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. */
/* 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. */
-#ifndef SIMGRID_
SIMIX
_SWAPPED_CONTEXT_HPP
-#define SIMGRID_
SIMIX
_SWAPPED_CONTEXT_HPP
+#ifndef SIMGRID_
KERNEL_CONTEXT
_SWAPPED_CONTEXT_HPP
+#define SIMGRID_
KERNEL_CONTEXT
_SWAPPED_CONTEXT_HPP
#include "src/kernel/context/Context.hpp"
#include "src/kernel/context/Context.hpp"
-#include <
vector
>
+#include <
memory
>
namespace simgrid {
namespace kernel {
namespace simgrid {
namespace kernel {
@@
-21,23
+21,22
@@
public:
SwappedContextFactory();
SwappedContextFactory(const SwappedContextFactory&) = delete;
SwappedContextFactory& operator=(const SwappedContextFactory&) = delete;
SwappedContextFactory();
SwappedContextFactory(const SwappedContextFactory&) = delete;
SwappedContextFactory& operator=(const SwappedContextFactory&) = delete;
- ~SwappedContextFactory() override;
void run_all() override;
private:
bool parallel_;
void run_all() override;
private:
bool parallel_;
- unsigned long process_index_ = 0; // Next actor to execute during sequential run_all()
+ /* For the sequential execution */
+ unsigned long process_index_ = 0; // next actor to execute
+ SwappedContext* maestro_context_ = nullptr; // save maestro's context
/* For the parallel execution */
/* For the parallel execution */
- simgrid::xbt::Parmap<smx_actor_t>* parmap_;
- std::vector<SwappedContext*> workers_context_; /* space to save the worker's context in each thread */
- std::atomic<uintptr_t> threads_working_{0}; /* number of threads that have started their work */
+ std::unique_ptr<simgrid::xbt::Parmap<smx_actor_t>> parmap_;
};
class SwappedContext : public Context {
public:
};
class SwappedContext : public Context {
public:
- SwappedContext(std::function<void()> code, 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();
SwappedContext(const SwappedContext&) = delete;
SwappedContext& operator=(const SwappedContext&) = delete;
virtual ~SwappedContext();
@@
-48,9
+47,9
@@
public:
virtual void swap_into(SwappedContext* to) = 0; // Defined in Raw, Boost and UContext subclasses
virtual void swap_into(SwappedContext* to) = 0; // Defined in Raw, Boost and UContext subclasses
-
void
* get_stack();
+
unsigned char
* get_stack();
- static thread_local
uintptr_t worker_id
_;
+ static thread_local
SwappedContext* worker_context
_;
#if HAVE_SANITIZER_ADDRESS_FIBER_SUPPORT
const void* asan_stack_ = nullptr;
#if HAVE_SANITIZER_ADDRESS_FIBER_SUPPORT
const void* asan_stack_ = nullptr;
@@
-60,8
+59,12
@@
public:
#endif
private:
#endif
private:
-
void* stack_ = nullptr;
/* the thread stack */
+
unsigned char* stack_ = nullptr;
/* the thread stack */
SwappedContextFactory* const factory_; // for sequential and parallel run_all()
SwappedContextFactory* const factory_; // for sequential and parallel run_all()
+
+#if HAVE_VALGRIND_H
+ unsigned int valgrind_stack_id_;
+#endif
};
} // namespace context
};
} // namespace context