| 123456789101112131415161718192021222324252627282930313233343536 |
- // Copyright 2014 Citra Emulator Project
- // Licensed under GPLv2
- // Refer to the license.txt file included.
- #pragma once
- #include "common/common_types.h"
- #include "core/hle/kernel/kernel.h"
- // Address arbiters are an underlying kernel synchronization object that can be created/used via
- // supervisor calls (SVCs). They function as sort of a global lock. Typically, games/other CTR
- // applications use them as an underlying mechanism to implement thread-safe barriers, events, and
- // semphores.
- ////////////////////////////////////////////////////////////////////////////////////////////////////
- // Kernel namespace
- namespace Kernel {
- /// Address arbitration types
- enum class ArbitrationType : u32 {
- Signal,
- WaitIfLessThan,
- DecrementAndWaitIfLessThan,
- WaitIfLessThanWithTimeout,
- DecrementAndWaitIfLessThanWithTimeout,
- };
- /// Arbitrate an address
- Result ArbitrateAddress(Handle handle, ArbitrationType type, u32 address, s32 value);
- /// Create an address arbiter
- Handle CreateAddressArbiter(const std::string& name = "Unknown");
- } // namespace FileSys
|