sem_undo
static struct sem_undo *semu_alloc(struct thread *td);
static int semundo_adjust(struct thread *td, struct sem_undo **supptr,
struct sem_undo *suptr;
LIST_HEAD(, sem_undo) semu_list; /* list of active undo structures */
LIST_HEAD(, sem_undo) semu_free_list; /* list of free undo structures */
LIST_ENTRY(sem_undo) un_next; /* ptr to next active undo structure */
struct sem_undo *suptr;
#define SEMUSZ(x) SEM_ALIGN(offsetof(struct sem_undo, un_ent[(x)]))
((struct sem_undo *)(((intptr_t)semu) + (ix) * seminfo.semusz))
struct sem_undo *suptr = SEMU(i);
static struct sem_undo *
struct sem_undo *suptr;
semu_try_free(struct sem_undo *suptr)
semundo_adjust(struct thread *td, struct sem_undo **supptr, int semid,
struct sem_undo *suptr;
struct sem_undo *suptr, *suptr1;