From 345833d1a9663c0c2f03738eacce61859a05733c Mon Sep 17 00:00:00 2001 From: Jason Lee Date: Mon, 1 Jul 2024 15:58:06 -0600 Subject: [PATCH] mutex_lock_interruptible --- src/dpusm.c | 2 +- src/provider.c | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/dpusm.c b/src/dpusm.c index 712f6f7..fd65b59 100644 --- a/src/dpusm.c +++ b/src/dpusm.c @@ -77,7 +77,7 @@ dpusm_init(void) { static void __exit dpusm_exit(void) { - mutex_lock(&dpusm.lock); + while (mutex_lock_interruptible(&dpusm.lock)); const int active = atomic_read(&dpusm.active); if (unlikely(active)) { diff --git a/src/provider.c b/src/provider.c index f2d7022..9ad16cd 100644 --- a/src/provider.c +++ b/src/provider.c @@ -265,7 +265,7 @@ dpusm_provider_register(dpusm_t *dpusm, struct module *module, const dpusm_pf_t return -EINVAL; } - mutex_lock(&dpusm->lock);; + while (mutex_lock_interruptible(&dpusm->lock)); dpusm_ph_t **found = find_provider(dpusm, module_name(module)); if (found) { @@ -320,7 +320,7 @@ dpusm_provider_unregister_handle(dpusm_t *dpusm, dpusm_ph_t **provider) { int dpusm_provider_unregister(dpusm_t *dpusm, struct module *module) { - mutex_lock(&dpusm->lock);; + while (mutex_lock_interruptible(&dpusm->lock)); dpusm_ph_t **provider = find_provider(dpusm, module_name(module)); if (!provider) { @@ -345,7 +345,7 @@ dpusm_provider_unregister(dpusm_t *dpusm, struct module *module) { /* get a provider by name */ dpusm_ph_t ** dpusm_provider_get(dpusm_t *dpusm, const char *name) { - mutex_lock(&dpusm->lock); + while (mutex_lock_interruptible(&dpusm->lock)); dpusm_ph_t **provider = find_provider(dpusm, name); if (provider) { struct module *module = (*provider)->module; @@ -405,7 +405,7 @@ dpusm_provider_put(dpusm_t *dpusm, void *handle) { } void dpusm_provider_invalidate(dpusm_t *dpusm, const char *name) { - mutex_lock(&dpusm->lock);; + while (mutex_lock_interruptible(&dpusm->lock)); dpusm_ph_t **provider = find_provider(dpusm, name); if (provider && *provider) { (*provider)->funcs = NULL;