Mutex: Replace g_mutex_held_locks with a set inside Thread

This commit is contained in:
Yuri Kunde Schlesner 2015-01-31 19:22:40 -02:00
parent 0f69668fc6
commit 4e84df8be3
3 changed files with 18 additions and 23 deletions

View file

@ -7,6 +7,8 @@
#include <string>
#include <vector>
#include <boost/container/flat_set.hpp>
#include "common/common_types.h"
#include "core/core.h"
@ -40,6 +42,8 @@ enum ThreadStatus {
namespace Kernel {
class Mutex;
class Thread final : public WaitObject {
public:
static ResultVal<SharedPtr<Thread>> Create(std::string name, VAddr entry_point, s32 priority,
@ -109,8 +113,10 @@ public:
s32 processor_id;
std::vector<SharedPtr<WaitObject>> wait_objects; ///< Objects that the thread is waiting on
/// Mutexes currently held by this thread, which will be released when it exits.
boost::container::flat_set<SharedPtr<Mutex>> held_mutexes;
std::vector<SharedPtr<WaitObject>> wait_objects; ///< Objects that the thread is waiting on
VAddr wait_address; ///< If waiting on an AddressArbiter, this is the arbitration address
bool wait_all; ///< True if the thread is waiting on all objects before resuming
bool wait_set_output; ///< True if the output parameter should be set on thread wakeup
@ -121,7 +127,7 @@ public:
bool idle = false;
private:
Thread() = default;
Thread();
/// Handle used as userdata to reference this object when inserting into the CoreTiming queue.
Handle callback_handle;