aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/hle/kernel/thread.h
diff options
context:
space:
mode:
authorGravatar Yuri Kunde Schlesner <yuriks@yuriks.net>2015-01-31 19:22:40 -0200
committerGravatar Yuri Kunde Schlesner <yuriks@yuriks.net>2015-02-02 15:37:06 -0200
commit4e84df8be30c5bac65e4c4e9faf07bf0fc3fb33a (patch)
tree4e5ea0a4d5525843f41ad19530da872bc5ccda25 /src/core/hle/kernel/thread.h
parent0f69668fc61f7453b4c6451186b515762532c35a (diff)
Mutex: Replace g_mutex_held_locks with a set inside Thread
Diffstat (limited to 'src/core/hle/kernel/thread.h')
-rw-r--r--src/core/hle/kernel/thread.h10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/core/hle/kernel/thread.h b/src/core/hle/kernel/thread.h
index 9a4a00fe..f29897ae 100644
--- a/src/core/hle/kernel/thread.h
+++ b/src/core/hle/kernel/thread.h
@@ -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;