mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-25 09:57:32 +09:00
update NSPR to 4.24 and keep NSPR Bug 1586070 and win64 patch intact.
This commit is contained in:
parent
dd094ae552
commit
0b9855b841
487 changed files with 42933 additions and 48679 deletions
|
|
@ -11,12 +11,12 @@
|
|||
**
|
||||
** Modification History:
|
||||
** 19-May-97 AGarcia- Converted the test to accomodate the debug_mode flag.
|
||||
** The debug mode will print all of the printfs associated with this test.
|
||||
** The regress mode will be the default mode. Since the regress tool limits
|
||||
** The debug mode will print all of the printfs associated with this test.
|
||||
** The regress mode will be the default mode. Since the regress tool limits
|
||||
** the output to a one line status:PASS or FAIL,all of the printf statements
|
||||
** have been handled with an if (debug_mode) statement.
|
||||
** have been handled with an if (debug_mode) statement.
|
||||
** 04-June-97 AGarcia removed the Test_Result function. Regress tool has been updated to
|
||||
** recognize the return code from tha main program.
|
||||
** recognize the return code from tha main program.
|
||||
***********************************************************************/
|
||||
/***********************************************************************
|
||||
** Includes
|
||||
|
|
@ -64,8 +64,8 @@ static PRIntervalTime NonContentiousLock(PRInt32 loops)
|
|||
_lockfile = PR_Open(LOCKFILE, PR_CREATE_FILE|PR_RDWR, 0666);
|
||||
if (!_lockfile) {
|
||||
if (debug_mode) printf(
|
||||
"could not create lockfile: %d [%d]\n",
|
||||
PR_GetError(), PR_GetOSError());
|
||||
"could not create lockfile: %d [%d]\n",
|
||||
PR_GetError(), PR_GetOSError());
|
||||
return PR_INTERVAL_NO_TIMEOUT;
|
||||
}
|
||||
PR_LockFile(_lockfile);
|
||||
|
|
@ -84,8 +84,8 @@ static void PR_CALLBACK LockContender(void *arg)
|
|||
_lockfile = PR_Open(LOCKFILE, PR_CREATE_FILE|PR_RDWR, 0666);
|
||||
if (!_lockfile) {
|
||||
if (debug_mode) printf(
|
||||
"could not create lockfile: %d [%d]\n",
|
||||
PR_GetError(), PR_GetOSError());
|
||||
"could not create lockfile: %d [%d]\n",
|
||||
PR_GetError(), PR_GetOSError());
|
||||
break;
|
||||
}
|
||||
PR_LockFile(_lockfile);
|
||||
|
|
@ -112,8 +112,8 @@ static PRIntervalTime ContentiousLock(PRInt32 loops)
|
|||
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_USER_THREAD, LockContender, &contention,
|
||||
PR_PRIORITY_LOW, PR_LOCAL_THREAD, PR_JOINABLE_THREAD, 0);
|
||||
PR_ASSERT(thread != NULL);
|
||||
|
||||
overhead = PR_IntervalNow() - timein;
|
||||
|
|
@ -136,17 +136,17 @@ static PRIntervalTime ContentiousLock(PRInt32 loops)
|
|||
static PRIntervalTime Test(
|
||||
const char* msg, PRIntervalTime (*test)(PRInt32 loops),
|
||||
PRInt32 loops, PRIntervalTime overhead)
|
||||
{
|
||||
{
|
||||
/*
|
||||
* overhead - overhead not measured by the test.
|
||||
* duration - wall clock time it took to perform test.
|
||||
* predicted - extra time test says should not be counted
|
||||
* predicted - extra time test says should not be counted
|
||||
*
|
||||
* Time accountable to the test is duration - overhead - predicted
|
||||
* All times are Intervals and accumulated for all iterations.
|
||||
*/
|
||||
PRFloat64 elapsed;
|
||||
PRIntervalTime accountable, duration;
|
||||
PRIntervalTime accountable, duration;
|
||||
PRUintn spaces = strlen(msg);
|
||||
PRIntervalTime timeout, timein = PR_IntervalNow();
|
||||
PRIntervalTime predicted = test(loops);
|
||||
|
|
@ -155,12 +155,20 @@ static PRIntervalTime Test(
|
|||
accountable = duration - predicted;
|
||||
accountable -= overhead;
|
||||
elapsed = (PRFloat64)PR_IntervalToMicroseconds(accountable);
|
||||
if (debug_mode) printf("%s:", msg);
|
||||
while (spaces++ < 50) if (debug_mode) printf(" ");
|
||||
if (debug_mode) {
|
||||
printf("%s:", msg);
|
||||
}
|
||||
while (spaces++ < 50) if (debug_mode) {
|
||||
printf(" ");
|
||||
}
|
||||
if ((PRInt32)accountable < 0) {
|
||||
if (debug_mode) printf("*****.** usecs/iteration\n");
|
||||
if (debug_mode) {
|
||||
printf("*****.** usecs/iteration\n");
|
||||
}
|
||||
} else {
|
||||
if (debug_mode) printf("%8.2f usecs/iteration\n", elapsed/loops);
|
||||
if (debug_mode) {
|
||||
printf("%8.2f usecs/iteration\n", elapsed/loops);
|
||||
}
|
||||
}
|
||||
return duration;
|
||||
} /* Test */
|
||||
|
|
@ -171,59 +179,77 @@ int main(int argc, char **argv)
|
|||
PRUint32 cpu, cpus = 2;
|
||||
PRInt32 loops = 100;
|
||||
|
||||
|
||||
/* The command line argument: -d is used to determine if the test is being run
|
||||
in debug mode. The regress tool requires only one line output:PASS or FAIL.
|
||||
All of the printfs associated with this test has been handled with a if (debug_mode)
|
||||
test.
|
||||
Usage: test_name -d
|
||||
*/
|
||||
PLOptStatus os;
|
||||
PLOptState *opt = PL_CreateOptState(argc, argv, "d:");
|
||||
while (PL_OPT_EOL != (os = PL_GetNextOpt(opt)))
|
||||
|
||||
/* The command line argument: -d is used to determine if the test is being run
|
||||
in debug mode. The regress tool requires only one line output:PASS or FAIL.
|
||||
All of the printfs associated with this test has been handled with a if (debug_mode)
|
||||
test.
|
||||
Usage: test_name -d
|
||||
*/
|
||||
PLOptStatus os;
|
||||
PLOptState *opt = PL_CreateOptState(argc, argv, "d:");
|
||||
while (PL_OPT_EOL != (os = PL_GetNextOpt(opt)))
|
||||
{
|
||||
if (PL_OPT_BAD == os) continue;
|
||||
if (PL_OPT_BAD == os) {
|
||||
continue;
|
||||
}
|
||||
switch (opt->option)
|
||||
{
|
||||
case 'd': /* debug mode */
|
||||
debug_mode = 1;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
case 'd': /* debug mode */
|
||||
debug_mode = 1;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
PL_DestroyOptState(opt);
|
||||
PL_DestroyOptState(opt);
|
||||
|
||||
/* main test */
|
||||
|
||||
/* main test */
|
||||
|
||||
PR_Init(PR_USER_THREAD, PR_PRIORITY_NORMAL, 0);
|
||||
PR_STDIO_INIT();
|
||||
|
||||
if (argc > 1) loops = atoi(argv[1]);
|
||||
if (loops == 0) loops = 100;
|
||||
if (debug_mode) printf("Lock: Using %d loops\n", loops);
|
||||
if (argc > 1) {
|
||||
loops = atoi(argv[1]);
|
||||
}
|
||||
if (loops == 0) {
|
||||
loops = 100;
|
||||
}
|
||||
if (debug_mode) {
|
||||
printf("Lock: Using %d loops\n", loops);
|
||||
}
|
||||
|
||||
cpus = (argc < 3) ? 2 : atoi(argv[2]);
|
||||
if (cpus == 0) cpus = 2;
|
||||
if (debug_mode) printf("Lock: Using %d cpu(s)\n", cpus);
|
||||
if (cpus == 0) {
|
||||
cpus = 2;
|
||||
}
|
||||
if (debug_mode) {
|
||||
printf("Lock: Using %d cpu(s)\n", cpus);
|
||||
}
|
||||
|
||||
|
||||
for (cpu = 1; cpu <= cpus; ++cpu)
|
||||
{
|
||||
if (debug_mode) printf("\nLockFile: Using %d CPU(s)\n", cpu);
|
||||
if (debug_mode) {
|
||||
printf("\nLockFile: Using %d CPU(s)\n", cpu);
|
||||
}
|
||||
PR_SetConcurrency(cpu);
|
||||
|
||||
|
||||
duration = Test("LockFile non-contentious locking/unlocking", NonContentiousLock, loops, 0);
|
||||
(void)Test("LockFile contentious locking/unlocking", ContentiousLock, loops, duration);
|
||||
}
|
||||
|
||||
PR_Delete(LOCKFILE); /* try to get rid of evidence */
|
||||
|
||||
if (debug_mode) printf("%s: test %s\n", "Lock(mutex) test", ((failed_already) ? "failed" : "passed"));
|
||||
if(failed_already)
|
||||
return 1;
|
||||
else
|
||||
return 0;
|
||||
if (debug_mode) {
|
||||
printf("%s: test %s\n", "Lock(mutex) test", ((failed_already) ? "failed" : "passed"));
|
||||
}
|
||||
if(failed_already) {
|
||||
return 1;
|
||||
}
|
||||
else {
|
||||
return 0;
|
||||
}
|
||||
} /* main */
|
||||
|
||||
/* testlock.c */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue