From 29d4392ca05a31db53176f552041bb6183351d63 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Sat, 28 Mar 2020 13:24:44 +0100 Subject: [PATCH] basic: add _cleanup_ wrappers for pthread_mutex_{lock,unlock} I put the helper functions in a separate header file, because they don't fit anywhere else. pthread_mutex_{lock,unlock} is used in two places: nss-systemd and hashmap. I don't indent to convert hashmap to use the helpers, because there it'd make the code more complicated. Is it worth to create a new header file even if the only use is in nss-systemd.c? I think yes, because it feels clean and also I think it's likely that pthread_mutex_{lock,unlock} will be used in other places later. --- src/basic/meson.build | 1 + src/basic/pthread-util.h | 16 ++++++++++++++++ 2 files changed, 17 insertions(+) create mode 100644 src/basic/pthread-util.h diff --git a/src/basic/meson.build b/src/basic/meson.build index ccb22e1595..85953dab0c 100644 --- a/src/basic/meson.build +++ b/src/basic/meson.build @@ -169,6 +169,7 @@ basic_sources = files(''' process-util.h procfs-util.c procfs-util.h + pthread-util.h quota-util.c quota-util.h random-util.c diff --git a/src/basic/pthread-util.h b/src/basic/pthread-util.h new file mode 100644 index 0000000000..dc3eaba436 --- /dev/null +++ b/src/basic/pthread-util.h @@ -0,0 +1,16 @@ +/* SPDX-License-Identifier: LGPL-2.1+ */ +#pragma once + +#include + +#include "macro.h" + +static inline pthread_mutex_t* pthread_mutex_lock_assert(pthread_mutex_t *mutex) { + assert_se(pthread_mutex_lock(mutex) == 0); + return mutex; +} + +static inline void pthread_mutex_unlock_assertp(pthread_mutex_t **mutexp) { + if (*mutexp) + assert_se(pthread_mutex_unlock(*mutexp) == 0); +} -- 2.25.1