]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Improve reporting for mutex errors
authorMichał Kępień <michal@isc.org>
Wed, 13 Jul 2022 11:19:32 +0000 (13:19 +0200)
committerMichał Kępień <michal@isc.org>
Wed, 13 Jul 2022 11:19:32 +0000 (13:19 +0200)
Replace all uses of RUNTIME_CHECK() in lib/isc/include/isc/mutex.h with
ERRNO_CHECK(), in order to improve error reporting for any mutex-related
run-time failures (by augmenting error messages with file/line/caller
information and the error string corresponding to errno).

lib/isc/include/isc/mutex.h

index 028db239dbd962c6036c3b39b7e0ed0361ac8bc5..8c02d0f23469638b125a2ef90a7b69f78e2dcd17 100644 (file)
@@ -32,7 +32,7 @@ typedef pthread_mutex_t *isc_mutex_t;
 #define isc_mutex_init(mp)                  \
        {                                   \
                *mp = malloc(sizeof(**mp)); \
-               isc__mutex_init((*mp));     \
+               isc__mutex_init(*mp);       \
        }
 #define isc_mutex_lock(mp)    isc__mutex_lock(*mp)
 #define isc_mutex_unlock(mp)  isc__mutex_unlock(*mp)
@@ -47,7 +47,7 @@ typedef pthread_mutex_t *isc_mutex_t;
 
 typedef pthread_mutex_t isc_mutex_t;
 
-#define isc_mutex_init(mp)    isc__mutex_init((mp))
+#define isc_mutex_init(mp)    isc__mutex_init(mp)
 #define isc_mutex_lock(mp)    isc__mutex_lock(mp)
 #define isc_mutex_unlock(mp)  isc__mutex_unlock(mp)
 #define isc_mutex_trylock(mp) isc__mutex_trylock(mp)
@@ -63,13 +63,25 @@ extern pthread_mutexattr_t isc__mutex_init_attr;
                ERRNO_CHECK(pthread_mutex_init, _ret);                    \
        }
 
-#define isc__mutex_lock(mp) RUNTIME_CHECK(pthread_mutex_lock((mp)) == 0)
+#define isc__mutex_lock(mp)                            \
+       {                                              \
+               int _ret = pthread_mutex_lock(mp);     \
+               ERRNO_CHECK(pthread_mutex_lock, _ret); \
+       }
 
-#define isc__mutex_unlock(mp) RUNTIME_CHECK(pthread_mutex_unlock((mp)) == 0)
+#define isc__mutex_unlock(mp)                            \
+       {                                                \
+               int _ret = pthread_mutex_unlock(mp);     \
+               ERRNO_CHECK(pthread_mutex_unlock, _ret); \
+       }
 
 #define isc__mutex_trylock(mp) \
-       ((pthread_mutex_trylock((mp)) == 0) ? ISC_R_SUCCESS : ISC_R_LOCKBUSY)
+       ((pthread_mutex_trylock(mp) == 0) ? ISC_R_SUCCESS : ISC_R_LOCKBUSY)
 
-#define isc__mutex_destroy(mp) RUNTIME_CHECK(pthread_mutex_destroy((mp)) == 0)
+#define isc__mutex_destroy(mp)                            \
+       {                                                 \
+               int _ret = pthread_mutex_destroy(mp);     \
+               ERRNO_CHECK(pthread_mutex_destroy, _ret); \
+       }
 
 ISC_LANG_ENDDECLS