sema_waiters
sp->sema_waiters = 0;
lsp->sema_waiters = 1;
lsp->sema_waiters = dequeue_self(qp);
if (lsp->count != 0 && lsp->sema_waiters) {
lsp->sema_waiters = more;
else if (--lsp->count != 0 && lsp->sema_waiters) {
lsp->sema_waiters = more;
else if (lsp->count++ == 0 && lsp->sema_waiters) {
lsp->sema_waiters = more;
fuword8_noerr(&sp->sema_waiters, &waiters);
suword8_noerr(&sp->sema_waiters, waiters);
suword8_noerr(&sp->sema_waiters, 1);
suword8_noerr(&sp->sema_waiters, waiters);
fuword8_noerr(&sp->sema_waiters, &waiters);
suword8_noerr(&sp->sema_waiters, waiters);