123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
- /* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
- /*
- ** File: lazyinit.c
- ** Description: Testing lazy initialization
- **
- ** Since you only get to initialize once, you have to rerun the test
- ** for each test case. The test cases are numbered. If you want to
- ** add more tests, take the next number and add it to the switch
- ** statement.
- **
- ** This test is problematic on systems that don't support the notion
- ** of console output. The workarounds to emulate that feature include
- ** initializations themselves, which defeats the purpose here.
- */
- #include "prcvar.h"
- #include "prenv.h"
- #include "prinit.h"
- #include "prinrval.h"
- #include "prio.h"
- #include "prlock.h"
- #include "prlog.h"
- #include "prthread.h"
- #include "prtypes.h"
- #include <stdio.h>
- #include <stdlib.h>
- static void PR_CALLBACK lazyEntry(void *arg)
- {
- PR_ASSERT(NULL == arg);
- } /* lazyEntry */
- int main(int argc, char **argv)
- {
- PRUintn pdkey;
- PRStatus status;
- char *path = NULL;
- PRDir *dir = NULL;
- PRLock *ml = NULL;
- PRCondVar *cv = NULL;
- PRThread *thread = NULL;
- PRIntervalTime interval = 0;
- PRFileDesc *file, *udp, *tcp, *pair[2];
- PRIntn test;
- if ( argc < 2)
- {
- test = 0;
- }
- else {
- test = atoi(argv[1]);
- }
- switch (test)
- {
- case 0: ml = PR_NewLock();
- break;
- case 1: interval = PR_SecondsToInterval(1);
- break;
- case 2: thread = PR_CreateThread(
- PR_USER_THREAD, lazyEntry, NULL, PR_PRIORITY_NORMAL,
- PR_LOCAL_THREAD, PR_JOINABLE_THREAD, 0);
- break;
- case 3: file = PR_Open("./tmp-", PR_RDONLY, 0);
- break;
- case 4: udp = PR_NewUDPSocket();
- break;
- case 5: tcp = PR_NewTCPSocket();
- break;
- case 6: dir = PR_OpenDir("./tmp-");
- break;
- case 7: (void)PR_NewThreadPrivateIndex(&pdkey, NULL);
- break;
- case 8: path = PR_GetEnv("PATH");
- break;
- case 9: status = PR_NewTCPSocketPair(pair);
- break;
- case 10: PR_SetConcurrency(2);
- break;
- default:
- printf(
- "lazyinit: unrecognized command line argument: %s\n",
- argv[1] );
- printf( "FAIL\n" );
- exit( 1 );
- break;
- } /* switch() */
- return 0;
- } /* Lazy */
- /* lazyinit.c */
|