aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMateusz Guzik <mjg@FreeBSD.org>2021-05-22 20:51:37 +0000
committerMateusz Guzik <mjg@FreeBSD.org>2021-06-07 00:34:52 +0000
commit0917d91b33444ca55b132954cc33f0d409f5a4cc (patch)
treed9580c7fe29ba30c1af975653f02af98cda402ac
parent997332f9cda66d7c42d51daac92e6e8ca83ed7a0 (diff)
downloadsrc-0917d91b33444ca55b132954cc33f0d409f5a4cc.tar.gz
src-0917d91b33444ca55b132954cc33f0d409f5a4cc.zip
umtx: convert umtxq_lock to a macro
Then LOCK_PROFILING starts reporting callers instead of the inline. (cherry picked from commit 138f78e94bf83a8a92987d8be81f1e2c6c277cf8)
-rw-r--r--sys/kern/kern_umtx.c18
1 files changed, 9 insertions, 9 deletions
diff --git a/sys/kern/kern_umtx.c b/sys/kern/kern_umtx.c
index 784c10cb97ac..a1dca77fe991 100644
--- a/sys/kern/kern_umtx.c
+++ b/sys/kern/kern_umtx.c
@@ -272,7 +272,6 @@ static void umtx_shm_init(void);
static void umtxq_sysinit(void *);
static void umtxq_hash(struct umtx_key *key);
static struct umtxq_chain *umtxq_getchain(struct umtx_key *key);
-static void umtxq_lock(struct umtx_key *key);
static void umtxq_unlock(struct umtx_key *key);
static void umtxq_busy(struct umtx_key *key);
static void umtxq_unbusy(struct umtx_key *key);
@@ -501,15 +500,16 @@ umtxq_getchain(struct umtx_key *key)
/*
* Lock a chain.
+ *
+ * The code is a macro so that file/line information is taken from the caller.
*/
-static inline void
-umtxq_lock(struct umtx_key *key)
-{
- struct umtxq_chain *uc;
-
- uc = umtxq_getchain(key);
- mtx_lock(&uc->uc_lock);
-}
+#define umtxq_lock(key) do { \
+ struct umtx_key *_key = (key); \
+ struct umtxq_chain *_uc; \
+ \
+ _uc = umtxq_getchain(_key); \
+ mtx_lock(&_uc->uc_lock); \
+} while (0)
/*
* Unlock a chain.