Iros
Loading...
Searching...
No Matches
interruptible_spinlock.h
Go to the documentation of this file.
1
#pragma once
2
3
#include "
di/sync/atomic.h
"
4
#include "
di/util/immovable.h
"
5
#include "
iris/core/preemption.h
"
6
7
namespace
iris
{
8
class
Task
;
9
10
class
InterruptibleSpinlock
:
di::util::Immovable
{
11
public
:
12
InterruptibleSpinlock
() =
default
;
13
14
void
lock
();
15
auto
try_lock
() -> bool;
16
void
unlock
();
17
18
private
:
19
di::sync::Atomic<bool>
m_state {
false
};
20
Task
* m_task {
nullptr
};
21
};
22
}
atomic.h
di::sync::Atomic
Definition
atomic.h:15
iris::InterruptibleSpinlock::try_lock
auto try_lock() -> bool
Definition
interruptible_spinlock.cpp:19
iris::InterruptibleSpinlock::unlock
void unlock()
Definition
interruptible_spinlock.cpp:38
iris::InterruptibleSpinlock::InterruptibleSpinlock
InterruptibleSpinlock()=default
iris::InterruptibleSpinlock::lock
void lock()
Definition
interruptible_spinlock.cpp:8
iris::Task
Definition
task.h:30
immovable.h
iris
Definition
cxx_init.cpp:12
preemption.h
di::util::Immovable
Definition
immovable.h:4
iris
include
iris
core
interruptible_spinlock.h
Generated by
1.13.0