Skip to content

Commit ac07d0b

Browse files
committed
drivers: retained_mem: Add optional mutex disablement
Adds an optional Kconfig to disable use of mutexes in the retained memory driver. Signed-off-by: Jamie McCrae <[email protected]>
1 parent 052b89a commit ac07d0b

File tree

3 files changed

+21
-12
lines changed

3 files changed

+21
-12
lines changed

drivers/retained_mem/Kconfig

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,15 @@ config RETAINED_MEM_INIT_PRIORITY
1515
help
1616
Retained memory devices initialization priority,
1717

18+
config RETAINED_MEM_MUTEXES
19+
int "Retained memory mutex support"
20+
default y
21+
depends on MULTITHREADING
22+
help
23+
Use mutexes to prevent issues with concurrent retained memory access.
24+
Should only be disabled whereby retained memory access is required
25+
in an ISR or for special use cases.
26+
1827
module = RETAINED_MEM
1928
module-str = retained_mem
2029
source "subsys/logging/Kconfig.template.log_config"

drivers/retained_mem/retained_mem_nrf_gpregret.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717
LOG_MODULE_REGISTER(retained_mem_nrf_gpregret, CONFIG_RETAINED_MEM_LOG_LEVEL);
1818

19-
#ifdef CONFIG_MULTITHREADING
19+
#ifdef CONFIG_RETAINED_MEM_MUTEXES
2020
struct nrf_gpregret_data {
2121
struct k_mutex lock;
2222
};
@@ -29,7 +29,7 @@ struct nrf_gpregret_config {
2929

3030
static inline void nrf_gpregret_lock_take(const struct device *dev)
3131
{
32-
#ifdef CONFIG_MULTITHREADING
32+
#ifdef CONFIG_RETAINED_MEM_MUTEXES
3333
struct nrf_gpregret_data *data = dev->data;
3434

3535
k_mutex_lock(&data->lock, K_FOREVER);
@@ -40,7 +40,7 @@ static inline void nrf_gpregret_lock_take(const struct device *dev)
4040

4141
static inline void nrf_gpregret_lock_release(const struct device *dev)
4242
{
43-
#ifdef CONFIG_MULTITHREADING
43+
#ifdef CONFIG_RETAINED_MEM_MUTEXES
4444
struct nrf_gpregret_data *data = dev->data;
4545

4646
k_mutex_unlock(&data->lock);
@@ -51,7 +51,7 @@ static inline void nrf_gpregret_lock_release(const struct device *dev)
5151

5252
static int nrf_gpregret_init(const struct device *dev)
5353
{
54-
#ifdef CONFIG_MULTITHREADING
54+
#ifdef CONFIG_RETAINED_MEM_MUTEXES
5555
struct nrf_gpregret_data *data = dev->data;
5656

5757
k_mutex_init(&data->lock);
@@ -115,7 +115,7 @@ static const struct retained_mem_driver_api nrf_gpregret_api = {
115115
};
116116

117117
#define NRF_GPREGRET_DEVICE(inst) \
118-
IF_ENABLED(CONFIG_MULTITHREADING, \
118+
IF_ENABLED(CONFIG_RETAINED_MEM_MUTEXES, \
119119
(static struct nrf_gpregret_data nrf_gpregret_data_##inst;) \
120120
) \
121121
static const struct nrf_gpregret_config nrf_gpregret_config_##inst = { \
@@ -125,7 +125,7 @@ static const struct retained_mem_driver_api nrf_gpregret_api = {
125125
DEVICE_DT_INST_DEFINE(inst, \
126126
&nrf_gpregret_init, \
127127
NULL, \
128-
COND_CODE_1(CONFIG_MULTITHREADING, \
128+
COND_CODE_1(CONFIG_RETAINED_MEM_MUTEXES, \
129129
(&nrf_gpregret_data_##inst), (NULL) \
130130
), \
131131
&nrf_gpregret_config_##inst, \

drivers/retained_mem/retained_mem_zephyr_ram.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717
LOG_MODULE_REGISTER(retained_mem_zephyr_ram, CONFIG_RETAINED_MEM_LOG_LEVEL);
1818

19-
#ifdef CONFIG_MULTITHREADING
19+
#ifdef CONFIG_RETAINED_MEM_MUTEXES
2020
struct zephyr_retained_mem_ram_data {
2121
struct k_mutex lock;
2222
};
@@ -29,7 +29,7 @@ struct zephyr_retained_mem_ram_config {
2929

3030
static inline void zephyr_retained_mem_ram_lock_take(const struct device *dev)
3131
{
32-
#ifdef CONFIG_MULTITHREADING
32+
#ifdef CONFIG_RETAINED_MEM_MUTEXES
3333
struct zephyr_retained_mem_ram_data *data = dev->data;
3434

3535
k_mutex_lock(&data->lock, K_FOREVER);
@@ -40,7 +40,7 @@ static inline void zephyr_retained_mem_ram_lock_take(const struct device *dev)
4040

4141
static inline void zephyr_retained_mem_ram_lock_release(const struct device *dev)
4242
{
43-
#ifdef CONFIG_MULTITHREADING
43+
#ifdef CONFIG_RETAINED_MEM_MUTEXES
4444
struct zephyr_retained_mem_ram_data *data = dev->data;
4545

4646
k_mutex_unlock(&data->lock);
@@ -51,7 +51,7 @@ static inline void zephyr_retained_mem_ram_lock_release(const struct device *dev
5151

5252
static int zephyr_retained_mem_ram_init(const struct device *dev)
5353
{
54-
#ifdef CONFIG_MULTITHREADING
54+
#ifdef CONFIG_RETAINED_MEM_MUTEXES
5555
struct zephyr_retained_mem_ram_data *data = dev->data;
5656

5757
k_mutex_init(&data->lock);
@@ -116,7 +116,7 @@ static const struct retained_mem_driver_api zephyr_retained_mem_ram_api = {
116116
};
117117

118118
#define ZEPHYR_RETAINED_MEM_RAM_DEVICE(inst) \
119-
IF_ENABLED(CONFIG_MULTITHREADING, \
119+
IF_ENABLED(CONFIG_RETAINED_MEM_MUTEXES, \
120120
(static struct zephyr_retained_mem_ram_data \
121121
zephyr_retained_mem_ram_data_##inst;) \
122122
) \
@@ -128,7 +128,7 @@ static const struct retained_mem_driver_api zephyr_retained_mem_ram_api = {
128128
DEVICE_DT_INST_DEFINE(inst, \
129129
&zephyr_retained_mem_ram_init, \
130130
NULL, \
131-
COND_CODE_1(CONFIG_MULTITHREADING, \
131+
COND_CODE_1(CONFIG_RETAINED_MEM_MUTEXES, \
132132
(&zephyr_retained_mem_ram_data_##inst), (NULL) \
133133
), \
134134
&zephyr_retained_mem_ram_config_##inst, \

0 commit comments

Comments
 (0)