sema_clockwait
extern int sema_clockwait(sema_t *, clockid_t, const timespec_t *);
if ((error = sema_clockwait((sema_t *)sem, clock, abstime)) != 0) {
return (sema_clockwait(sp, CLOCK_REALTIME, abstime));