static PRIntervalTime ContentiousLock(PRUint32 loops)
static PRIntervalTime ContentiousLock(PRInt32 loops)
static PRIntervalTime ContentiousLock(PRUint32 loops){    PRStatus status;    PRThread *thread = NULL;    PRIntervalTime overhead, timein = PR_IntervalNow();    contention.loops = loops;    contention.overhead = 0;    contention.ml = PR_NewLock();    contention.interval = contention_interval;    thread = PR_CreateThread(        PR_USER_THREAD, LockContender, &contention,        PR_PRIORITY_LOW, PR_LOCAL_THREAD, PR_JOINABLE_THREAD, 0);    PR_ASSERT(thread != NULL);    overhead = PR_IntervalNow() - timein;    while (contention.loops > 0)    {        PR_Lock(contention.ml);        contention.overhead += contention.interval;        PR_Sleep(contention.interval);        PR_Unlock(contention.ml);    }    timein = PR_IntervalNow();    status = PR_JoinThread(thread);    PR_DestroyLock(contention.ml);    overhead += (PR_IntervalNow() - timein);    return overhead + contention.overhead;}  /* ContentiousLock */