aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKonstantin Belousov <kib@FreeBSD.org>2023-02-01 21:06:04 +0000
committerKonstantin Belousov <kib@FreeBSD.org>2023-02-01 22:59:27 +0000
commit3cf37d1251bf71b2171e67af8f2ca43cbe3d874d (patch)
treeaccbcec8ddbfd93fa395d543a1d10ca1b45c9d74
parent83a49712afa276b7f320e0dd669c8dfd33f9a5ac (diff)
downloadsrc-3cf37d1251bf71b2171e67af8f2ca43cbe3d874d.tar.gz
src-3cf37d1251bf71b2171e67af8f2ca43cbe3d874d.zip
libthr: add pshared_destroy() helper
Rewviewed by: markj Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D38345
-rw-r--r--lib/libthr/thread/thr_pshared.c17
1 files changed, 12 insertions, 5 deletions
diff --git a/lib/libthr/thread/thr_pshared.c b/lib/libthr/thread/thr_pshared.c
index d0219d0488f4..37b44ab73582 100644
--- a/lib/libthr/thread/thr_pshared.c
+++ b/lib/libthr/thread/thr_pshared.c
@@ -213,6 +213,17 @@ pshared_clean(void *key, void *val)
_umtx_op(NULL, UMTX_OP_SHM, UMTX_SHM_DESTROY, key, NULL);
}
+static void
+pshared_destroy(struct pthread *curthread, void *key)
+{
+ void *val;
+
+ pshared_wlock(curthread);
+ val = pshared_remove(key);
+ pshared_unlock(curthread);
+ pshared_clean(key, val);
+}
+
void *
__thr_pshared_offpage(void *key, int doalloc)
{
@@ -248,13 +259,9 @@ void
__thr_pshared_destroy(void *key)
{
struct pthread *curthread;
- void *val;
curthread = _get_curthread();
- pshared_wlock(curthread);
- val = pshared_remove(key);
- pshared_unlock(curthread);
- pshared_clean(key, val);
+ pshared_destroy(curthread, key);
pshared_gc(curthread);
}