lkp 82 kern/kern_lock.c #define ACQUIRE(lkp, error, extflags, drain, wanted) \ lkp 86 kern/kern_lock.c (lkp)->lk_flags |= LK_WAITDRAIN; \ lkp 88 kern/kern_lock.c (lkp)->lk_waitcount++; \ lkp 91 kern/kern_lock.c (void *)&(lkp)->lk_flags : (void *)(lkp), \ lkp 92 kern/kern_lock.c (lkp)->lk_prio, (lkp)->lk_wmesg, (lkp)->lk_timo); \ lkp 94 kern/kern_lock.c (lkp)->lk_waitcount--; \ lkp 104 kern/kern_lock.c #define SETHOLDER(lkp, pid, cpu_id) \ lkp 105 kern/kern_lock.c (lkp)->lk_lockholder = (pid) lkp 107 kern/kern_lock.c #define WEHOLDIT(lkp, pid, cpu_id) \ lkp 108 kern/kern_lock.c (lkp)->lk_lockholder == (pid) lkp 110 kern/kern_lock.c #define WAKEUP_WAITER(lkp) \ lkp 112 kern/kern_lock.c if ((lkp)->lk_waitcount) { \ lkp 114 kern/kern_lock.c wakeup((void *)(lkp)); \ lkp 137 kern/kern_lock.c #define HAVEIT(lkp) \ lkp 141 kern/kern_lock.c #define DONTHAVEIT(lkp) \ lkp 171 kern/kern_lock.c lockinit(struct lock *lkp, int prio, char *wmesg, int timo, int flags) lkp 174 kern/kern_lock.c bzero(lkp, sizeof(struct lock)); lkp 175 kern/kern_lock.c lkp->lk_flags = flags & LK_EXTFLG_MASK; lkp 176 kern/kern_lock.c lkp->lk_lockholder = LK_NOPROC; lkp 177 kern/kern_lock.c lkp->lk_prio = prio; lkp 178 kern/kern_lock.c lkp->lk_timo = timo; lkp 179 kern/kern_lock.c lkp->lk_wmesg = wmesg; /* just a name for spin locks */ lkp 181 kern/kern_lock.c lkp->lk_lock_file = NULL; lkp 182 kern/kern_lock.c lkp->lk_unlock_file = NULL; lkp 190 kern/kern_lock.c lockstatus(struct lock *lkp) lkp 194 kern/kern_lock.c if (lkp->lk_exclusivecount != 0) lkp 196 kern/kern_lock.c else if (lkp->lk_sharecount != 0) lkp 209 kern/kern_lock.c lockmgr(__volatile struct lock *lkp, u_int flags, struct simplelock *interlkp) lkp 218 kern/kern_lock.c extflags = (flags | lkp->lk_flags) & LK_EXTFLG_MASK; lkp 237 kern/kern_lock.c if (lkp->lk_flags & (LK_DRAINING|LK_DRAINED)) { lkp 239 kern/kern_lock.c if (lkp->lk_flags & LK_DRAINED) lkp 242 kern/kern_lock.c WEHOLDIT(lkp, pid, cpu_id) == 0) lkp 246 kern/kern_lock.c lkp->lk_flags &= ~LK_DRAINING; lkp 247 kern/kern_lock.c lkp->lk_flags |= LK_DRAINED; lkp 253 kern/kern_lock.c if ((lkp->lk_flags & (LK_CANRECURSE|LK_RECURSEFAIL)) == lkp 260 kern/kern_lock.c if (WEHOLDIT(lkp, pid, cpu_id) == 0) { lkp 264 kern/kern_lock.c if ((extflags & LK_NOWAIT) && (lkp->lk_flags & lkp 272 kern/kern_lock.c ACQUIRE(lkp, error, extflags, 0, lkp->lk_flags & lkp 276 kern/kern_lock.c lkp->lk_sharecount++; lkp 283 kern/kern_lock.c lkp->lk_sharecount++; lkp 285 kern/kern_lock.c if (WEHOLDIT(lkp, pid, cpu_id) == 0 || lkp 286 kern/kern_lock.c lkp->lk_exclusivecount == 0) lkp 288 kern/kern_lock.c lkp->lk_sharecount += lkp->lk_exclusivecount; lkp 289 kern/kern_lock.c lkp->lk_exclusivecount = 0; lkp 290 kern/kern_lock.c lkp->lk_flags &= ~LK_HAVE_EXCL; lkp 291 kern/kern_lock.c SETHOLDER(lkp, LK_NOPROC, LK_NOCPU); lkp 293 kern/kern_lock.c lkp->lk_unlock_file = file; lkp 294 kern/kern_lock.c lkp->lk_unlock_line = line; lkp 296 kern/kern_lock.c DONTHAVEIT(lkp); lkp 297 kern/kern_lock.c WAKEUP_WAITER(lkp); lkp 301 kern/kern_lock.c if (WEHOLDIT(lkp, pid, cpu_id)) { lkp 312 kern/kern_lock.c lkp->lk_exclusivecount++; lkp 318 kern/kern_lock.c if ((extflags & LK_NOWAIT) && ((lkp->lk_flags & lkp 320 kern/kern_lock.c lkp->lk_sharecount != 0)) { lkp 327 kern/kern_lock.c ACQUIRE(lkp, error, extflags, 0, lkp->lk_flags & lkp 331 kern/kern_lock.c lkp->lk_flags |= LK_WANT_EXCL; lkp 335 kern/kern_lock.c ACQUIRE(lkp, error, extflags, 0, lkp->lk_sharecount != 0); lkp 336 kern/kern_lock.c lkp->lk_flags &= ~LK_WANT_EXCL; lkp 339 kern/kern_lock.c lkp->lk_flags |= LK_HAVE_EXCL; lkp 340 kern/kern_lock.c SETHOLDER(lkp, pid, cpu_id); lkp 342 kern/kern_lock.c lkp->lk_lock_file = file; lkp 343 kern/kern_lock.c lkp->lk_lock_line = line; lkp 345 kern/kern_lock.c HAVEIT(lkp); lkp 346 kern/kern_lock.c if (lkp->lk_exclusivecount != 0) lkp 348 kern/kern_lock.c lkp->lk_exclusivecount = 1; lkp 352 kern/kern_lock.c if (lkp->lk_exclusivecount != 0) { lkp 353 kern/kern_lock.c if (WEHOLDIT(lkp, pid, cpu_id) == 0) { lkp 356 kern/kern_lock.c pid, lkp->lk_lockholder); lkp 358 kern/kern_lock.c lkp->lk_exclusivecount--; lkp 359 kern/kern_lock.c if (lkp->lk_exclusivecount == 0) { lkp 360 kern/kern_lock.c lkp->lk_flags &= ~LK_HAVE_EXCL; lkp 361 kern/kern_lock.c SETHOLDER(lkp, LK_NOPROC, LK_NOCPU); lkp 363 kern/kern_lock.c lkp->lk_unlock_file = file; lkp 364 kern/kern_lock.c lkp->lk_unlock_line = line; lkp 366 kern/kern_lock.c DONTHAVEIT(lkp); lkp 368 kern/kern_lock.c } else if (lkp->lk_sharecount != 0) { lkp 369 kern/kern_lock.c lkp->lk_sharecount--; lkp 375 kern/kern_lock.c WAKEUP_WAITER(lkp); lkp 385 kern/kern_lock.c if (WEHOLDIT(lkp, pid, cpu_id)) lkp 390 kern/kern_lock.c if ((extflags & LK_NOWAIT) && ((lkp->lk_flags & lkp 392 kern/kern_lock.c lkp->lk_sharecount != 0 || lkp->lk_waitcount != 0)) { lkp 396 kern/kern_lock.c ACQUIRE(lkp, error, extflags, 1, lkp 397 kern/kern_lock.c ((lkp->lk_flags & lkp 399 kern/kern_lock.c lkp->lk_sharecount != 0 || lkp 400 kern/kern_lock.c lkp->lk_waitcount != 0)); lkp 403 kern/kern_lock.c lkp->lk_flags |= LK_DRAINING | LK_HAVE_EXCL; lkp 404 kern/kern_lock.c SETHOLDER(lkp, pid, cpu_id); lkp 406 kern/kern_lock.c lkp->lk_lock_file = file; lkp 407 kern/kern_lock.c lkp->lk_lock_line = line; lkp 409 kern/kern_lock.c HAVEIT(lkp); lkp 410 kern/kern_lock.c lkp->lk_exclusivecount = 1; lkp 418 kern/kern_lock.c if ((lkp->lk_flags & LK_WAITDRAIN) != 0 && lkp 419 kern/kern_lock.c ((lkp->lk_flags & lkp 421 kern/kern_lock.c lkp->lk_sharecount == 0 && lkp->lk_waitcount == 0)) { lkp 422 kern/kern_lock.c lkp->lk_flags &= ~LK_WAITDRAIN; lkp 423 kern/kern_lock.c wakeup((void *)&lkp->lk_flags); lkp 434 kern/kern_lock.c lockmgr_printinfo(__volatile struct lock *lkp) lkp 437 kern/kern_lock.c if (lkp->lk_sharecount) lkp 438 kern/kern_lock.c printf(" lock type %s: SHARED (count %d)", lkp->lk_wmesg, lkp 439 kern/kern_lock.c lkp->lk_sharecount); lkp 440 kern/kern_lock.c else if (lkp->lk_flags & LK_HAVE_EXCL) { lkp 442 kern/kern_lock.c lkp->lk_wmesg, lkp->lk_exclusivecount); lkp 443 kern/kern_lock.c printf("pid %d", lkp->lk_lockholder); lkp 446 kern/kern_lock.c if (lkp->lk_waitcount > 0) lkp 447 kern/kern_lock.c printf(" with %d pending", lkp->lk_waitcount); lkp 504 kern/kern_lock.c simple_lock_init(struct simplelock *lkp) lkp 520 kern/kern_lock.c _simple_lock(__volatile struct simplelock *lkp, const char *id, int l) lkp 598 kern/kern_lock.c _simple_lock_try(__volatile struct simplelock *lkp, const char *id, int l) lkp 647 kern/kern_lock.c _simple_unlock(__volatile struct simplelock *lkp, const char *id, int l) lkp 59 kern/subr_pool.c #define simple_lock_only_held(lkp, str) do { /* nothing */ } while (0) lkp 43 sys/simplelock.h #define simple_lock(lkp) lkp 44 sys/simplelock.h #define simple_lock_try(lkp) (1) /* always succeeds */ lkp 45 sys/simplelock.h #define simple_unlock(lkp) lkp 46 sys/simplelock.h #define simple_lock_assert(lkp) lkp 48 sys/simplelock.h static __inline void simple_lock_init(struct simplelock *lkp) lkp 51 sys/simplelock.h lkp->lock_data = SLOCK_UNLOCKED; lkp 62 sys/simplelock.h #define simple_unlock(lkp) _simple_unlock(lkp, __FILE__, __LINE__) lkp 63 sys/simplelock.h #define simple_lock_try(lkp) _simple_lock_try(lkp, __FILE__, __LINE__) lkp 64 sys/simplelock.h #define simple_lock(lkp) _simple_lock(lkp, __FILE__, __LINE__) lkp 65 sys/simplelock.h #define simple_lock_assert(lkp, state) _simple_lock_assert(lkp, state, __FILE__, __LINE__) lkp 80 sys/simplelock.h static __inline void simple_lock_init(struct simplelock *lkp) lkp 82 sys/simplelock.h __cpu_simple_lock_init(&lkp->lock_data); lkp 85 sys/simplelock.h static __inline void simple_lock(__volatile struct simplelock *lkp) lkp 87 sys/simplelock.h __cpu_simple_lock(&lkp->lock_data); lkp 90 sys/simplelock.h static __inline int simple_lock_try(__volatile struct simplelock *lkp) lkp 92 sys/simplelock.h return (__cpu_simple_lock_try(&lkp->lock_data)); lkp 95 sys/simplelock.h static __inline void simple_unlock(__volatile struct simplelock *lkp) lkp 97 sys/simplelock.h __cpu_simple_unlock(&lkp->lock_data);