SH_PTR_TO_OFF
(head)->slh_first - SH_PTR_TO_OFF(head, elm); \
(head)->slh_first = SH_PTR_TO_OFF(head, elm); \
(elm)->field.sle_prev = SH_PTR_TO_OFF(elm, &(head)->slh_first); \
(-(elm)->field.stqe_next + SH_PTR_TO_OFF(elm, &(elm)->field.stqe_next))
(head)->stqh_last = SH_PTR_TO_OFF(head, &(head)->stqh_first); \
(head)->stqh_first - SH_PTR_TO_OFF(head, elm); \
SH_PTR_TO_OFF(head, &(elm)->field.stqe_next); \
(head)->stqh_first = SH_PTR_TO_OFF(head, elm); \
SH_PTR_TO_OFF(elm, &(head)->stqh_first); \
-SH_PTR_TO_OFF(head, elm) + (head)->stqh_last; \
SH_PTR_TO_OFF((head), &(head)->stqh_first)) \
(head)->stqh_first = SH_PTR_TO_OFF(head, elm); \
SH_PTR_TO_OFF((elm), &(elm)->field.stqe_next) + \
SH_PTR_TO_OFF(head, elm); \
SH_PTR_TO_OFF(head, &((elm)->field.stqe_next)); \
SH_PTR_TO_OFF(listelm, elm); \
SH_PTR_TO_OFF(head, &elm->field.stqe_next); \
(listelm)->field.stqe_next = SH_PTR_TO_OFF(listelm, elm); \
SH_PTR_TO_OFF(SH_TAILQ_NEXTP(elm, \
SH_PTR_TO_OFF(head, elm); \
((elm)->field.scqe_next == SH_PTR_TO_OFF(elm, head) ? \
((elm)->field.scqe_prev == SH_PTR_TO_OFF(elm, head) ? \
(elm)->field.scqe_prev = SH_PTR_TO_OFF(elm, listelm); \
(head)->scqh_last = SH_PTR_TO_OFF(head, elm); \
SH_PTR_TO_OFF(SH_CIRCLEQ_NEXTP(listelm, \
(elm)->field.scqe_next = SH_PTR_TO_OFF(elm, listelm); \
(head)->scqh_first = SH_PTR_TO_OFF(head, elm); \
SH_PTR_TO_OFF(SH_CIRCLEQ_PREVP(listelm, \
(elm)->field.scqe_prev = SH_PTR_TO_OFF(elm, head); \
SH_PTR_TO_OFF(SH_CIRCLEQ_FIRSTP(head, type), elm); \
(elm)->field.scqe_next = SH_PTR_TO_OFF(elm, head); \
SH_PTR_TO_OFF(SH_CIRCLEQ_LASTP(head, type), elm); \
(-(elm)->field.sle_next + SH_PTR_TO_OFF(elm, &(elm)->field.sle_next))
(elm)->field.sle_next = SH_PTR_TO_OFF(elm, \
(listelm)->field.sle_next = SH_PTR_TO_OFF(listelm, elm); \
newl->obj = SH_PTR_TO_OFF(newl, sh_obj);
sh_obj->lockobj.off = SH_PTR_TO_OFF(&sh_obj->lockobj, p);