summaryrefslogtreecommitdiff
path: root/Kernel/Process.h
diff options
context:
space:
mode:
Diffstat (limited to 'Kernel/Process.h')
-rw-r--r--Kernel/Process.h11
1 files changed, 8 insertions, 3 deletions
diff --git a/Kernel/Process.h b/Kernel/Process.h
index 72d8be3ba9..1b5922d053 100644
--- a/Kernel/Process.h
+++ b/Kernel/Process.h
@@ -38,6 +38,7 @@
#include <Kernel/API/Syscall.h>
#include <Kernel/FileSystem/InodeMetadata.h>
#include <Kernel/Forward.h>
+#include <Kernel/FutexQueue.h>
#include <Kernel/Lock.h>
#include <Kernel/ProcessGroup.h>
#include <Kernel/StdLib.h>
@@ -94,6 +95,8 @@ enum class VeilState {
Locked,
};
+typedef HashMap<FlatPtr, RefPtr<FutexQueue>> FutexQueues;
+
class Process
: public RefCounted<Process>
, public InlineLinkedListNode<Process>
@@ -542,6 +545,8 @@ private:
bool has_tracee_thread(ProcessID tracer_pid);
+ void clear_futex_queues_on_exec();
+
RefPtr<PageDirectory> m_page_directory;
Process* m_prev { nullptr };
@@ -637,11 +642,11 @@ private:
VeilState m_veil_state { VeilState::None };
UnveilNode m_unveiled_paths { "/", { .full_path = "/", .unveil_inherited_from_root = true } };
- WaitQueue& futex_queue(Userspace<const i32*>);
- HashMap<u32, OwnPtr<WaitQueue>> m_futex_queues;
-
OwnPtr<PerformanceEventBuffer> m_perf_event_buffer;
+ FutexQueues m_futex_queues;
+ SpinLock<u8> m_futex_lock;
+
// This member is used in the implementation of ptrace's PT_TRACEME flag.
// If it is set to true, the process will stop at the next execve syscall
// and wait for a tracer to attach.