i kept this null abstime check  because previous callers were protected from null timespec  and i do not want to introduce new bugs i separated pthread cond wait since the logic to deal with null or not timespec s was ugly 