Location RMI and RPC runqueue. More...
Public Member Functions | |
location_md const & | get_location_md (void) const noexcept |
location_md & | get_location_md (void) noexcept |
bool | empty (void) const noexcept |
bool | is_active (void) const noexcept |
bool | is_deferred (void) const noexcept |
void | set_base_context (context &base_ctx) noexcept |
void | unset_base_context (void) noexcept |
context * | get_base_context (void) const noexcept |
unsigned int | yield_intensity (void) const noexcept |
template<typename Stack > | |
runqueue::yield_status | operator() (Stack &stack, bool light_yield) |
void | fence_enter (void) noexcept |
void | fence_exit (const epoch_type e) |
void | advance_epoch (const epoch_type e) |
Make runnable anything that was blocked because of the epoch. | |
void | undefer_requests (void) |
Decrement deferral counter, making held requests runnable if counter has now reached 0 (i.e., no nested deferral requests). | |
void | defer_requests (void) |
Tick counter tracking calls to this function. Any time m_deferred_ctr is non-zero, RMIs in this runqueue will not be executed. More... | |
bool | try_defer_requests (void) |
If not currently deferring requests, tick counter tracking calls to this function. Any time m_deferred_ctr is non-zero, RMIs in this runqueue will not be executed. | |
void | context_idle (ctx_impl &ctx) |
Add the ctx_impl to the idle queue. More... | |
void | context_blocked (ctx_impl &ctx, const epoch_type e) |
Add the ctx_impl to the blocked queue, because it has requests in a future epoch. | |
void | context_deferred (ctx_impl &ctx) |
Add the ctx_impl to the deferred queue, as this runqueue is currently deferring requests due to locking by a p_object. | |
void | context_waiting (ctx_impl &ctx, const epoch_type e) |
Add the ctx_impl to the waiting queue, unless the epoch is in the future. | |
Static Public Member Functions | |
static void | initialize (option const &opts) |
static void | finalize (void) noexcept |
static impl * | create (void *p, location_md &l) |
static void | destroy (impl *r) noexcept |
Friends | |
bool | operator< (runqueue::impl const &x, runqueue::impl const &y) noexcept |
Location RMI and RPC runqueue.
This class provides support for the scheduling of requests. It enforces the Causal RMI Ordering model by keeping an unordered_map
of context objects and queue the requests for each one of them.
void stapl::runtime::runqueue::impl::defer_requests | ( | void | ) |
Tick counter tracking calls to this function. Any time m_deferred_ctr
is non-zero, RMIs in this runqueue will not be executed.
void stapl::runtime::runqueue::impl::context_idle | ( | ctx_impl & | ctx | ) |
Add the ctx_impl to the idle queue.
If ctx
is in a big nesting level (>2), then it is deleted.