sem_undo
#define SEM_UNDOSZ(n) (sizeof (struct sem_undo) + (n - 1) * sizeof (int))
sem_undo_add(short val, ushort_t num, struct sem_undo *undo)
struct sem_undo *undo;
sem_rollback(ksemid_t *sp, struct sembuf *op, int n, struct sem_undo *undo)
struct sem_undo *undo;
struct sem_undo *undo;
list_create(&sp->sem_undos, sizeof (struct sem_undo),
offsetof(struct sem_undo, un_list));
struct sem_undo *undo1 = (struct sem_undo *)x;
struct sem_undo *undo2 = (struct sem_undo *)y;
struct sem_undo *template, struct sem_undo **un)
struct sem_undo *undo;
sizeof (struct sem_undo),
offsetof(struct sem_undo, un_avl));
struct sem_undo *undo;
struct sem_undo template;