PRStatus rv;
PRIntervalTime epoch = PR_IntervalNow();
PR_Lock(data->mutex);
if (!EvaluateData(data))
{
while (PR_TRUE)
{
rv = PR_Wait(data->condition, interval);
if (PR_FAILURE == rv) break; /* likely an interrupt */
if (EvaluateData(data)) break; /* condition is met */
if ((PRIntervalTime)(PR_IntervalNow() - epoch) > interval) break; /* timeout */
}
}
PR_Unlock(data->mutex);