__db_lock
((struct __db_lock *)((u_int8_t *)((lt)->region) + (off)))
(N) * ALIGN(sizeof(struct __db_lock), MUTEX_ALIGNMENT) + \
void __lock_printlock __P((DB_LOCKTAB *, struct __db_lock *, int));
SH_TAILQ_REMOVE(&obj->waiters, lp_w, links, __db_lock);
for (lp = SH_LIST_FIRST(&sh_locker->heldby, __db_lock);
lp = SH_LIST_FIRST(&sh_locker->heldby, __db_lock)) {
SH_LIST_REMOVE(lp, locker_links, __db_lock);
locker_links, __db_lock);
for (lp = SH_LIST_FIRST(&sh_locker->heldby, __db_lock);
lp = SH_LIST_FIRST(&sh_locker->heldby, __db_lock)) {
for (lp = SH_TAILQ_FIRST(&sh_obj->waiters, __db_lock);
lp = SH_TAILQ_FIRST(&sh_obj->waiters, __db_lock)) {
for (lp = SH_TAILQ_FIRST(&sh_obj->holders, __db_lock);
lp = SH_TAILQ_FIRST(&sh_obj->holders, __db_lock)) {
SH_LIST_REMOVE(lp, locker_links, __db_lock);
__db_lock);
lp, links, __db_lock);
for (lp = SH_LIST_FIRST(&sh_locker->heldby, __db_lock);
lp = SH_LIST_NEXT(lp, locker_links, __db_lock)) {
struct __db_lock *lockp;
struct __db_lock *lockp;
static void __lock_checklocker __P((DB_LOCKTAB *, struct __db_lock *, int));
struct __db_lock *lockp;
u_int32_t, const DBT *, db_lockmode_t, struct __db_lock **));
static int __lock_put_internal __P((DB_LOCKTAB *, struct __db_lock *, int));
struct __db_lock *lockp;
__P((DB_LOCKTAB *, DB_LOCKOBJ *, struct __db_lock *, db_status_t));
SH_LIST_REMOVE(lockp, locker_links, __db_lock);
SH_TAILQ_REMOVE(&sh_obj->holders, lockp, links, __db_lock);
if (SH_TAILQ_FIRST(&sh_obj->holders, __db_lock) == NULL) {
SH_TAILQ_INSERT_HEAD(<->region->free_locks, lockp, links, __db_lock);
struct __db_lock **lockp;
struct __db_lock *newl, *lp;
if ((newl = SH_TAILQ_FIRST(&lrp->free_locks, __db_lock)) == NULL) {
newl = SH_TAILQ_FIRST(&lrp->free_locks, __db_lock);
SH_TAILQ_REMOVE(&lrp->free_locks, newl, links, __db_lock);
for (lp = SH_TAILQ_FIRST(&sh_obj->holders, __db_lock);
lp = SH_TAILQ_NEXT(lp, links, __db_lock)) {
newl, links, __db_lock);
SH_TAILQ_INSERT_HEAD(&sh_obj->waiters, newl, links, __db_lock);
for (lp = SH_TAILQ_FIRST(&sh_obj->waiters, __db_lock);
lp = SH_TAILQ_NEXT(lp, links, __db_lock)) {
SH_TAILQ_INSERT_HEAD(&lrp->free_locks, newl, links, __db_lock);
no_dd = SH_LIST_FIRST(&sh_locker->heldby, __db_lock) == NULL;
SH_LIST_INSERT_HEAD(&sh_locker->heldby, newl, locker_links, __db_lock);
__db_lock);
newl, links, __db_lock);
SH_TAILQ_INSERT_HEAD(&lrp->free_locks, newl, links, __db_lock);
struct __db_lock *lp;
for (lp = SH_TAILQ_FIRST(&sh_obj->holders, __db_lock);
lp = SH_TAILQ_FIRST(&sh_obj->holders, __db_lock)) {
struct __db_lock *lp;
struct __db_lock *lockp;
SH_TAILQ_REMOVE(&sh_obj->waiters, lockp, links, __db_lock);
struct __db_lock *lockp;
SH_LIST_REMOVE(lockp, locker_links, __db_lock);
== 0 && SH_LIST_FIRST(&sh_locker->heldby, __db_lock) == NULL) {
struct __db_lock *lockp;
struct __db_lock *lp;
struct __db_lock *lp_w, *lp_h, *next_waiter;
for (lp_w = SH_TAILQ_FIRST(&obj->waiters, __db_lock),
next_waiter = SH_TAILQ_NEXT(lp_w, links, __db_lock);
for (lp_h = SH_TAILQ_FIRST(&obj->holders, __db_lock);
lp_h = SH_TAILQ_NEXT(lp_h, links, __db_lock)) {
struct __db_lock *lp;
for (lp = SH_TAILQ_FIRST(&op->holders, __db_lock);
lp = SH_TAILQ_NEXT(lp, links, __db_lock)) {
lp = SH_TAILQ_FIRST(&op->waiters, __db_lock);
lp = SH_TAILQ_NEXT(lp, links, __db_lock)) {
lp = SH_LIST_FIRST(&lockerp->heldby, __db_lock);
struct __db_lock *lockp;
lockp = SH_LIST_FIRST(&lockerp->heldby, __db_lock);
SH_LIST_REMOVE(lockp, locker_links, __db_lock);
SH_TAILQ_REMOVE(&sh_obj->waiters, lockp, links, __db_lock);
struct __db_lock *lp;
curaddr += ALIGN(sizeof(struct __db_lock), MUTEX_ALIGNMENT)) {
lp = (struct __db_lock *)curaddr;
SH_TAILQ_INSERT_HEAD(tq_head, lp, links, __db_lock);
struct __db_lock *newl;
usedlocks * ALIGN(sizeof(struct __db_lock), MUTEX_ALIGNMENT) +
ALIGN(sizeof(struct __db_lock), MUTEX_ALIGNMENT) / (float)used;
incr / ALIGN(sizeof(struct __db_lock), MUTEX_ALIGNMENT));
newlocks * ALIGN(sizeof(struct __db_lock), MUTEX_ALIGNMENT));
incr += newlocks * sizeof(struct __db_lock);
curaddr += ALIGN(sizeof(struct __db_lock), MUTEX_ALIGNMENT)) {
newl = (struct __db_lock *)curaddr;
SH_TAILQ_INSERT_HEAD(lock_head, newl, links, __db_lock);
struct __db_lock *newl;
for (newl = SH_TAILQ_FIRST(&lrp->free_locks, __db_lock);
newl = SH_TAILQ_NEXT(newl, links, __db_lock))
struct __db_lock *lp;
for (lp = SH_TAILQ_FIRST(&lrp->free_locks, __db_lock);
lp = SH_TAILQ_NEXT(lp, links, __db_lock))
struct __db_lock *lp;
lp = SH_LIST_FIRST(&op->heldby, __db_lock);
for (; lp != NULL; lp = SH_LIST_NEXT(lp, locker_links, __db_lock))
struct __db_lock *lp;
SH_TAILQ_FIRST(&op->holders, __db_lock);
lp = SH_TAILQ_NEXT(lp, links, __db_lock))
lp = SH_TAILQ_FIRST(&op->waiters, __db_lock);
for (; lp != NULL; lp = SH_TAILQ_NEXT(lp, links, __db_lock))