From: Ciro Santilli Date: Thu, 19 Dec 2019 19:04:32 +0000 (+0000) Subject: sim-se: factor out FutexMap::suspend and FutexMap::suspend_bitset X-Git-Tag: v20.1.0.0~331 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=9c9fea575a32578a1f2ea26fad279459f9ced1f3;p=gem5.git sim-se: factor out FutexMap::suspend and FutexMap::suspend_bitset Both methods do basically the same, especially since they don't handle the timeout which is basically the only difference between both modes of the syscall (one uses absolute and the other relative time). Remove the WaiterState::WaiterState(ThreadContext* _tc) constructor, since the only calls were from FutexMap::suspend which does not use them anymore. Instead, set the magic 0xffffffff constant as a parameter to suspend_bitset. Change-Id: I69d86bad31d63604657a3c71cf07e5623f0ea639 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/29776 Reviewed-by: Brandon Potter Maintainer: Brandon Potter Tested-by: kokoro --- diff --git a/src/sim/futex_map.cc b/src/sim/futex_map.cc index e2880aaeb..f7dde9cc5 100644 --- a/src/sim/futex_map.cc +++ b/src/sim/futex_map.cc @@ -26,7 +26,6 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include #include FutexKey::FutexKey(uint64_t addr_in, uint64_t tgid_in) @@ -53,9 +52,6 @@ namespace std { WaiterState::WaiterState(ThreadContext* _tc, int _bitmask) : tc(_tc), bitmask(_bitmask) { } -WaiterState::WaiterState(ThreadContext* _tc) - : tc(_tc), bitmask(0xffffffff) { } - bool WaiterState::checkMask(int wakeup_bitmask) const { @@ -65,18 +61,7 @@ WaiterState::checkMask(int wakeup_bitmask) const void FutexMap::suspend(Addr addr, uint64_t tgid, ThreadContext *tc) { - FutexKey key(addr, tgid); - auto it = find(key); - - if (it == end()) { - WaiterList waiterList {WaiterState(tc)}; - insert({key, waiterList}); - } else { - it->second.push_back(WaiterState(tc)); - } - - /** Suspend the thread context */ - tc->suspend(); + suspend_bitset(addr, tgid, tc, 0xffffffff); } int diff --git a/src/sim/futex_map.hh b/src/sim/futex_map.hh index 025d32429..13caa1291 100644 --- a/src/sim/futex_map.hh +++ b/src/sim/futex_map.hh @@ -74,11 +74,6 @@ class WaiterState { */ WaiterState(ThreadContext* _tc, int _bitmask); - /** - * if bitset is not defined, just set bitmask to 0xffffffff - */ - WaiterState(ThreadContext* _tc); - /** * return true if the bit-wise AND of the wakeup_bitmask given by * a waking thread and this thread's internal bitmask is non-zero