MCPcopy Create free account
hub / github.com/F-Stack/f-stack / lockmgr_xlock

Function lockmgr_xlock

freebsd/kern/kern_lock.c:1244–1263  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1242}
1243
1244int
1245lockmgr_xlock(struct lock *lk, u_int flags, const char *file, int line)
1246{
1247 uintptr_t tid;
1248
1249 MPASS((flags & LK_TYPE_MASK) == LK_EXCLUSIVE);
1250 MPASS((flags & LK_INTERLOCK) == 0);
1251
1252 if (LK_CAN_WITNESS(flags))
1253 WITNESS_CHECKORDER(&lk->lock_object, LOP_NEWORDER |
1254 LOP_EXCLUSIVE, file, line, NULL);
1255 tid = (uintptr_t)curthread;
1256 if (atomic_cmpset_acq_ptr(&lk->lk_lock, LK_UNLOCKED, tid)) {
1257 lockmgr_note_exclusive_acquire(lk, 0, 0, file, line,
1258 flags);
1259 return (0);
1260 }
1261
1262 return (lockmgr_xlock_hard(lk, flags | LK_ADAPTIVE, NULL, file, line, NULL));
1263}
1264
1265int
1266lockmgr_unlock(struct lock *lk)

Callers 1

vop_lockFunction · 0.85

Calls 2

lockmgr_xlock_hardFunction · 0.85

Tested by

no test coverage detected