Back to index

lightning-sunbird  0.9+nobinonly
Functions | Variables
joinkk.c File Reference
#include "plgetopt.h"
#include "nspr.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

Go to the source code of this file.

Functions

static void lowPriority (void *arg)
static void highPriority (void *arg)
void runTest (PRThreadScope scope1, PRThreadScope scope2)
static PRIntn PR_CALLBACK RealMain (PRIntn argc, char **argv)
PRIntn main (PRIntn argc, char **argv)

Variables

PRIntn failed_already = 0
PRIntn debug_mode

Function Documentation

static void highPriority ( void arg) [static]

Definition at line 86 of file joinkk.c.

{
}

Here is the caller graph for this function:

static void lowPriority ( void arg) [static]

Definition at line 82 of file joinkk.c.

{
}

Here is the caller graph for this function:

PRIntn main ( PRIntn  argc,
char **  argv 
)

Definition at line 186 of file joinkk.c.

{
    PRIntn rv;
    
    PR_STDIO_INIT();
    rv = PR_Initialize(RealMain, argc, argv, 0);
    return rv;
}  /* main */

Here is the call graph for this function:

static PRIntn PR_CALLBACK RealMain ( PRIntn  argc,
char **  argv 
) [static]

Definition at line 137 of file joinkk.c.

{
       /* 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;
        switch (opt->option)
        {
        case 'd':  /* debug mode */
                     debug_mode = 1;
            break;
         default:
            break;
        }
    }
       PL_DestroyOptState(opt);

#ifdef XP_MAC
       SetupMacPrintfLog("join.log");
#endif

       
       
 /* main test */

    if (debug_mode) printf("Kernel-Kernel test\n");
    runTest(PR_GLOBAL_THREAD, PR_GLOBAL_THREAD);

       if(failed_already)   
       {
        printf("FAIL\n");
              return 1;
       }
       else
       {
        printf("PASS\n");
              return 0;
       }

}

Here is the call graph for this function:

Here is the caller graph for this function:

void runTest ( PRThreadScope  scope1,
PRThreadScope  scope2 
)

Definition at line 90 of file joinkk.c.

{
       PRThread *low,*high;

       /* create the low and high priority threads */
       
       low = PR_CreateThread(PR_USER_THREAD,
                                  lowPriority, 0, 
                                  PR_PRIORITY_LOW,
                                  scope1,
                              PR_JOINABLE_THREAD,
                                  0);
       if (!low) {
              if (debug_mode) printf("\tcannot create low priority thread\n");
              else failed_already=1;
              return;
       }

       high = PR_CreateThread(PR_USER_THREAD,
                                  highPriority, 0, 
                                  PR_PRIORITY_HIGH,
                                  scope2,
                              PR_JOINABLE_THREAD,
                                  0);
       if (!high) {
              if (debug_mode) printf("\tcannot create high priority thread\n");
              else failed_already=1;
              return;
       }

       /* Do the joining for both threads */
       if (PR_JoinThread(low) == PR_FAILURE) {
              if (debug_mode) printf("\tcannot join low priority thread\n");
              else  failed_already=1;
              return;
       } else {
       if (debug_mode) printf("\tjoined low priority thread\n");
    }
       if (PR_JoinThread(high) == PR_FAILURE) {
              if (debug_mode) printf("\tcannot join high priority thread\n");
              else failed_already=1;
              return;
       } else {
       if (debug_mode) printf("\tjoined high priority thread\n");
    }
}

Here is the call graph for this function:


Variable Documentation

PRIntn debug_mode

Definition at line 74 of file joinkk.c.

PRIntn failed_already = 0

Definition at line 73 of file joinkk.c.