mirror of
https://github.com/plasma-umass/coz.git
synced 2024-10-26 15:53:13 +03:00
34 lines
1.0 KiB
C++
34 lines
1.0 KiB
C++
/*
|
|
* Copyright (c) 2015, Charlie Curtsinger and Emery Berger,
|
|
* University of Massachusetts Amherst
|
|
* This file is part of the Coz project. See LICENSE.md file at the top-level
|
|
* directory of this distribution and at http://github.com/plasma-umass/coz.
|
|
*/
|
|
|
|
#if !defined(CAUSAL_RUNTIME_THREAD_STATE_H)
|
|
#define CAUSAL_RUNTIME_THREAD_STATE_H
|
|
|
|
#include <atomic>
|
|
|
|
#include "ccutil/timer.h"
|
|
|
|
class thread_state {
|
|
public:
|
|
bool in_use = false; //< Set by the main thread to prevent signal handler from racing
|
|
size_t local_delay = 0; //< The count of delays (or selected line visits) in the thread
|
|
perf_event sampler; //< The sampler object for this thread
|
|
timer process_timer; //< The timer that triggers sample processing for this thread
|
|
size_t pre_block_time; //< The time saved before (possibly) blocking
|
|
|
|
inline void set_in_use(bool value) {
|
|
in_use = value;
|
|
std::atomic_signal_fence(std::memory_order_seq_cst);
|
|
}
|
|
|
|
bool check_in_use() {
|
|
return in_use;
|
|
}
|
|
};
|
|
|
|
#endif
|