mirror of https://git.suyu.dev/suyu/suyu
Merge pull request #6156 from lioncash/lock-discard
kernel: Mark lock helper classes as [[nodiscard]]
This commit is contained in:
commit
c6d2af16b5
|
@ -198,9 +198,9 @@ private:
|
||||||
Common::SpinLock guard{};
|
Common::SpinLock guard{};
|
||||||
};
|
};
|
||||||
|
|
||||||
class KScopedSchedulerLock : KScopedLock<GlobalSchedulerContext::LockType> {
|
class [[nodiscard]] KScopedSchedulerLock : KScopedLock<GlobalSchedulerContext::LockType> {
|
||||||
public:
|
public:
|
||||||
explicit KScopedSchedulerLock(KernelCore& kernel);
|
explicit KScopedSchedulerLock(KernelCore & kernel);
|
||||||
~KScopedSchedulerLock();
|
~KScopedSchedulerLock();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -20,19 +20,22 @@ concept KLockable = !std::is_reference_v<T> && requires(T & t) {
|
||||||
};
|
};
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
requires KLockable<T> class KScopedLock {
|
requires KLockable<T> class [[nodiscard]] KScopedLock {
|
||||||
public:
|
public:
|
||||||
explicit KScopedLock(T* l) : lock_ptr(l) {
|
explicit KScopedLock(T * l) : lock_ptr(l) {
|
||||||
this->lock_ptr->Lock();
|
this->lock_ptr->Lock();
|
||||||
}
|
}
|
||||||
explicit KScopedLock(T& l) : KScopedLock(std::addressof(l)) { /* ... */
|
explicit KScopedLock(T & l) : KScopedLock(std::addressof(l)) {}
|
||||||
}
|
|
||||||
~KScopedLock() {
|
~KScopedLock() {
|
||||||
this->lock_ptr->Unlock();
|
this->lock_ptr->Unlock();
|
||||||
}
|
}
|
||||||
|
|
||||||
KScopedLock(const KScopedLock&) = delete;
|
KScopedLock(const KScopedLock&) = delete;
|
||||||
KScopedLock(KScopedLock&&) = delete;
|
KScopedLock& operator=(const KScopedLock&) = delete;
|
||||||
|
|
||||||
|
KScopedLock(KScopedLock &&) = delete;
|
||||||
|
KScopedLock& operator=(KScopedLock&&) = delete;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
T* lock_ptr;
|
T* lock_ptr;
|
||||||
|
|
|
@ -15,9 +15,9 @@
|
||||||
|
|
||||||
namespace Kernel {
|
namespace Kernel {
|
||||||
|
|
||||||
class KScopedSchedulerLockAndSleep {
|
class [[nodiscard]] KScopedSchedulerLockAndSleep {
|
||||||
public:
|
public:
|
||||||
explicit KScopedSchedulerLockAndSleep(KernelCore& kernel, KThread* t, s64 timeout)
|
explicit KScopedSchedulerLockAndSleep(KernelCore & kernel, KThread * t, s64 timeout)
|
||||||
: kernel(kernel), thread(t), timeout_tick(timeout) {
|
: kernel(kernel), thread(t), timeout_tick(timeout) {
|
||||||
// Lock the scheduler.
|
// Lock the scheduler.
|
||||||
kernel.GlobalSchedulerContext().scheduler_lock.Lock();
|
kernel.GlobalSchedulerContext().scheduler_lock.Lock();
|
||||||
|
|
Loading…
Reference in New Issue