|
7 | 7 |
|
8 | 8 | #include <stdbool.h>
|
9 | 9 | #include <string.h>
|
| 10 | +#include <zephyr/sys/atomic.h> |
10 | 11 | #include <nrf_error.h>
|
11 | 12 | #include <modules/pm_buffer.h>
|
12 | 13 |
|
13 | 14 | #define BUFFER_IS_VALID(p_buffer) \
|
14 | 15 | ((p_buffer != NULL) && (p_buffer->p_memory != NULL) && (p_buffer->p_mutex != NULL))
|
15 | 16 |
|
16 |
| -static bool mutex_lock(nrf_atflags_t *p_mutex, uint32_t mutex_id) |
| 17 | +static bool mutex_lock(atomic_t *mutex, int index) |
17 | 18 | {
|
18 |
| - bool locked = !nrf_atflags_fetch_set(p_mutex, mutex_id); |
19 |
| - |
20 |
| - __DMB(); |
21 |
| - return locked; |
| 19 | + return !atomic_test_and_set_bit(mutex, index); |
22 | 20 | }
|
23 | 21 |
|
24 |
| -static void mutex_unlock(nrf_atflags_t *p_mutex, uint32_t mutex_id) |
| 22 | +static void mutex_unlock(atomic_t *mutex, int index) |
25 | 23 | {
|
26 |
| - __DMB(); |
27 |
| - nrf_atflags_clear(p_mutex, mutex_id); |
| 24 | + atomic_clear_bit(mutex, index); |
28 | 25 | }
|
29 | 26 |
|
30 |
| -static bool mutex_lock_status_get(nrf_atflags_t *p_mutex, uint32_t mutex_id) |
| 27 | +static bool mutex_lock_status_get(atomic_t *mutex, int index) |
31 | 28 | {
|
32 |
| - __DMB(); |
33 |
| - return nrf_atflags_get(p_mutex, mutex_id); |
| 29 | + return atomic_test_bit(mutex, index); |
34 | 30 | }
|
35 | 31 |
|
36 | 32 | uint32_t pm_buffer_init(pm_buffer_t *p_buffer, uint8_t *p_buffer_memory,
|
37 |
| - uint32_t buffer_memory_size, nrf_atflags_t *p_mutex_memory, |
38 |
| - uint32_t n_blocks, uint32_t block_size) |
| 33 | + uint32_t buffer_memory_size, atomic_t *p_mutex_memory, |
| 34 | + uint32_t n_blocks, uint32_t block_size) |
39 | 35 | {
|
40 | 36 | if ((p_buffer != NULL) && (p_buffer_memory != NULL) && (p_mutex_memory != NULL) &&
|
41 | 37 | (buffer_memory_size >= (n_blocks * block_size)) && (n_blocks != 0) &&
|
|
0 commit comments