SIS_PENDING
if (sih->sih_state & SIS_PENDING) {
sih->sih_state &= ~SIS_PENDING;
KASSERT((sih->sih_state & (SIS_PENDING | SIS_RESTART)) == 0);
if ((sih->sih_state & SIS_PENDING) == 0) {
sih->sih_state |= SIS_PENDING;
KASSERT((sih->sih_state & SIS_PENDING) == 0);
KASSERT((sih->sih_state & (SIS_PENDING | SIS_RESTART)) ==
SIS_PENDING);
sih->sih_state &= ~SIS_PENDING;
KASSERT((sih->sih_state & SIS_PENDING) == 0);
sih->sih_state |= SIS_PENDING;