Skip to content
Snippets Groups Projects
Commit dbbe239f authored by Rémi Denis-Courmont's avatar Rémi Denis-Courmont
Browse files

config: convert R/W lock to mutex

The lock is no longer taken for reading ever, so it is equivalent to a
mutex. In fact, the lock is only needed to prevent concurrent writes
to the same config_item_t::value.
parent f57ddf14
No related branches found
No related tags found
1 merge request!959Read-Copy-Update API (and initial user)
Pipeline #164172 passed with stage
in 13 minutes and 41 seconds
......@@ -63,7 +63,7 @@ bool config_PrintHelp (vlc_object_t *);
int config_SortConfig (void);
void config_UnsortConfig (void);
extern vlc_rwlock_t config_lock;
extern vlc_mutex_t config_lock;
extern _Atomic bool config_dirty;
bool config_IsSafe (const char *);
......
......@@ -39,7 +39,7 @@
#include "modules/modules.h"
#include "misc/rcu.h"
vlc_rwlock_t config_lock = VLC_STATIC_RWLOCK;
vlc_mutex_t config_lock = VLC_STATIC_MUTEX;
atomic_bool config_dirty = ATOMIC_VAR_INIT(false);
static inline char *strdupnull (const char *src)
......@@ -139,9 +139,9 @@ int vlc_param_SetString(struct vlc_param *param, const char *value)
void config_PutPsz(const char *psz_name, const char *psz_value)
{
vlc_rwlock_wrlock (&config_lock);
vlc_mutex_lock(&config_lock);
vlc_param_SetString(vlc_param_Find(psz_name), psz_value);
vlc_rwlock_unlock (&config_lock);
vlc_mutex_unlock(&config_lock);
atomic_store_explicit(&config_dirty, true, memory_order_release);
}
......@@ -160,9 +160,9 @@ void config_PutInt(const char *name, int64_t i_value)
i_value = p_config->max.i;
atomic_store_explicit(&param->value.i, i_value, memory_order_relaxed);
vlc_rwlock_wrlock (&config_lock);
vlc_mutex_lock(&config_lock);
p_config->value.i = i_value;
vlc_rwlock_unlock (&config_lock);
vlc_mutex_unlock(&config_lock);
atomic_store_explicit(&config_dirty, true, memory_order_release);
}
......@@ -184,9 +184,9 @@ void config_PutFloat(const char *name, float f_value)
f_value = p_config->max.f;
atomic_store_explicit(&param->value.f, f_value, memory_order_relaxed);
vlc_rwlock_wrlock (&config_lock);
vlc_mutex_lock(&config_lock);
p_config->value.f = f_value;
vlc_rwlock_unlock (&config_lock);
vlc_mutex_unlock(&config_lock);
atomic_store_explicit(&config_dirty, true, memory_order_release);
}
......@@ -492,7 +492,7 @@ void config_Free(struct vlc_param *tab, size_t confsize)
void config_ResetAll(void)
{
vlc_rwlock_wrlock (&config_lock);
vlc_mutex_lock(&config_lock);
for (vlc_plugin_t *p = vlc_plugins; p != NULL; p = p->next)
{
for (size_t i = 0; i < p->conf.size; i++ )
......@@ -518,6 +518,6 @@ void config_ResetAll(void)
vlc_param_SetString(param, p_config->orig.psz);
}
}
vlc_rwlock_unlock (&config_lock);
vlc_mutex_lock(&config_lock);
atomic_store_explicit(&config_dirty, true, memory_order_release);
}
......@@ -186,7 +186,7 @@ int config_LoadConfigFile( vlc_object_t *p_this )
locale_t loc = newlocale (LC_NUMERIC_MASK, "C", NULL);
locale_t baseloc = uselocale (loc);
vlc_rwlock_wrlock (&config_lock);
vlc_mutex_lock(&config_lock);
while ((linelen = getline (&line, &bufsize, file)) != -1)
{
line[linelen - 1] = '\0'; /* trim newline */
......@@ -257,7 +257,7 @@ int config_LoadConfigFile( vlc_object_t *p_this )
break;
}
}
vlc_rwlock_unlock (&config_lock);
vlc_mutex_unlock(&config_lock);
free (line);
if (ferror (file))
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment