zephyr/subsys/settings/src/settings_init.c
Stig Bjørlykke f3661487da settings: Make settings_subsys_init() thread safe
Multiple components may use the settings subsystem, so ensure
settings_subsys_init() is thread safe.

Signed-off-by: Stig Bjørlykke <stig.bjorlykke@nordicsemi.no>
2023-02-20 09:52:26 +01:00

47 lines
741 B
C

/*
* Copyright (c) 2018 Nordic Semiconductor ASA
* Copyright (c) 2015 Runtime Inc
*
* SPDX-License-Identifier: Apache-2.0
*/
#include <string.h>
#include <stdio.h>
#include <stdbool.h>
#include <errno.h>
#include <zephyr/settings/settings.h>
#include "settings/settings_file.h"
#include <zephyr/kernel.h>
extern struct k_mutex settings_lock;
bool settings_subsys_initialized;
void settings_init(void);
int settings_backend_init(void);
int settings_subsys_init(void)
{
int err = 0;
k_mutex_lock(&settings_lock, K_FOREVER);
if (!settings_subsys_initialized) {
settings_init();
err = settings_backend_init();
if (!err) {
settings_subsys_initialized = true;
}
}
k_mutex_unlock(&settings_lock);
return err;
}