// Copyright 2018 yuzu emulator team // Licensed under GPLv2 or any later version // Refer to the license.txt file included. #pragma once #include #include "core/hle/kernel/kernel.h" #include "core/hle/result.h" namespace Kernel { class Thread; /// Class that represents a Kernel object that svcSendSyncRequest can be called on class SyncObject : public Object { public: /** * Handle a sync request from the emulated application. * @param thread Thread that initiated the request. * @returns ResultCode from the operation. */ virtual ResultCode SendSyncRequest(SharedPtr thread) = 0; }; // Specialization of DynamicObjectCast for SyncObjects template <> inline SharedPtr DynamicObjectCast(SharedPtr object) { if (object != nullptr && object->IsSyncable()) { return boost::static_pointer_cast(std::move(object)); } return nullptr; } } // namespace Kernel