diff options
author | bunnei <bunneidev@gmail.com> | 2017-12-29 05:12:28 +0100 |
---|---|---|
committer | bunnei <bunneidev@gmail.com> | 2017-12-29 05:12:28 +0100 |
commit | 834fa5db65ab3bc2e05474e280f5a0a73be7411e (patch) | |
tree | 3c1557cb761e6c53f6305b6ec349a01cc6438eb3 /src/core/hle/kernel/sync_object.h | |
parent | svc: Implement MapMemory. (diff) | |
download | yuzu-834fa5db65ab3bc2e05474e280f5a0a73be7411e.tar yuzu-834fa5db65ab3bc2e05474e280f5a0a73be7411e.tar.gz yuzu-834fa5db65ab3bc2e05474e280f5a0a73be7411e.tar.bz2 yuzu-834fa5db65ab3bc2e05474e280f5a0a73be7411e.tar.lz yuzu-834fa5db65ab3bc2e05474e280f5a0a73be7411e.tar.xz yuzu-834fa5db65ab3bc2e05474e280f5a0a73be7411e.tar.zst yuzu-834fa5db65ab3bc2e05474e280f5a0a73be7411e.zip |
Diffstat (limited to 'src/core/hle/kernel/sync_object.h')
-rw-r--r-- | src/core/hle/kernel/sync_object.h | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/src/core/hle/kernel/sync_object.h b/src/core/hle/kernel/sync_object.h new file mode 100644 index 000000000..ce2835ca4 --- /dev/null +++ b/src/core/hle/kernel/sync_object.h @@ -0,0 +1,35 @@ +// Copyright 2017 Citra Emulator Project +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#pragma once + +#include <boost/smart_ptr/intrusive_ptr.hpp> +#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> thread) = 0; +}; + +// Specialization of DynamicObjectCast for SyncObjects +template <> +inline SharedPtr<SyncObject> DynamicObjectCast<SyncObject>(SharedPtr<Object> object) { + if (object != nullptr && object->IsSyncable()) { + return boost::static_pointer_cast<SyncObject>(std::move(object)); + } + return nullptr; +} + +} // namespace Kernel |