halx
読み取り中…
検索中…
一致する文字列を見つけられません
include
halx
rtos
mutex.hpp
[詳解]
1
#pragma once
2
3
#include <cstdint>
4
#include <memory>
5
#include <type_traits>
6
7
#include <cmsis_os2.h>
8
9
namespace
halx::rtos
{
10
11
class
Mutex
{
12
private
:
13
struct
Deleter {
14
void
operator()(osMutexId_t mutex_id) { osMutexDelete(mutex_id); }
15
};
16
17
using
MutexId = std::unique_ptr<std::remove_pointer_t<osMutexId_t>, Deleter>;
18
19
public
:
20
Mutex
(uint32_t attr_bits = 0) {
21
osMutexAttr_t attr{};
22
attr.attr_bits = attr_bits;
23
mutex_id_ = MutexId{osMutexNew(&attr)};
24
}
25
26
bool
try_lock
(uint32_t timeout) {
27
return
osMutexAcquire(mutex_id_.get(), timeout) == osOK;
28
}
29
30
void
lock
() {
try_lock
(osWaitForever); }
31
32
void
unlock
() { osMutexRelease(mutex_id_.get()); }
33
34
private
:
35
MutexId mutex_id_;
36
};
37
38
}
// namespace halx::rtos
halx::rtos::Mutex::try_lock
bool try_lock(uint32_t timeout)
Definition
mutex.hpp:26
halx::rtos::Mutex::unlock
void unlock()
Definition
mutex.hpp:32
halx::rtos::Mutex::Mutex
Mutex(uint32_t attr_bits=0)
Definition
mutex.hpp:20
halx::rtos::Mutex::lock
void lock()
Definition
mutex.hpp:30
halx::rtos
Definition
mutex.hpp:9
構築:
1.13.2