From bf32fcc817a0f3fcbe90e8e5b5ba325ef0480d3f Mon Sep 17 00:00:00 2001 From: bunnei Date: Fri, 14 Jan 2022 16:24:59 -0800 Subject: core: hle: kernel: Add KWorkerTask and KWorkerTaskManager. - These primitives are used to dispatch asynchronous kernel tasks from KThread and KProcess. --- src/core/hle/kernel/k_worker_task_manager.h | 33 +++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 src/core/hle/kernel/k_worker_task_manager.h (limited to 'src/core/hle/kernel/k_worker_task_manager.h') diff --git a/src/core/hle/kernel/k_worker_task_manager.h b/src/core/hle/kernel/k_worker_task_manager.h new file mode 100644 index 000000000..43d1bfcec --- /dev/null +++ b/src/core/hle/kernel/k_worker_task_manager.h @@ -0,0 +1,33 @@ +// Copyright 2022 yuzu Emulator Project +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#pragma once + +#include "common/common_types.h" +#include "common/thread_worker.h" + +namespace Kernel { + +class KernelCore; +class KWorkerTask; + +class KWorkerTaskManager final { +public: + enum class WorkerType : u32 { + Exit, + Count, + }; + + KWorkerTaskManager(); + + static void AddTask(KernelCore& kernel_, WorkerType type, KWorkerTask* task); + +private: + void AddTask(KernelCore& kernel, KWorkerTask* task); + +private: + Common::ThreadWorker m_waiting_thread; +}; + +} // namespace Kernel -- cgit v1.2.3