reindent-20030715
[openafs.git] / src / lwp / test / test.c
1 /*
2  * Copyright 2000, International Business Machines Corporation and others.
3  * All Rights Reserved.
4  * 
5  * This software has been released under the terms of the IBM Public
6  * License.  For details, see the LICENSE file in the top-level source
7  * directory or online at http://www.openafs.org/dl/license10.html
8  */
9
10 #include <afsconfig.h>
11 #include <afs/param.h>
12
13 RCSID
14     ("$Header$");
15
16 #include <stdio.h>
17 #include <sys/time.h>
18 #include <potpourri.h>
19 #include "lwp.h"
20
21 char semaphore;
22
23 int
24 OtherProcess()
25 {
26     for (;;) {
27         LWP_SignalProcess(&semaphore);
28     }
29 }
30
31 main(argc, argv)
32      int argc;
33      char *argv[];
34 {
35     struct timeval t1, t2;
36     int pid, otherpid;
37     register int i, count, x;
38     char *waitarray[2];
39     static char c[] = "OtherProcess";
40
41     count = atoi(argv[1]);
42
43     assert(LWP_InitializeProcessSupport(0, (PROCESS *) & pid) == LWP_SUCCESS);
44     assert(LWP_CreateProcess
45            (OtherProcess, 4096, 0, 0, c,
46             (PROCESS *) & otherpid) == LWP_SUCCESS);
47
48     waitarray[0] = &semaphore;
49     waitarray[1] = 0;
50     gettimeofday(&t1, NULL);
51     for (i = 0; i < count; i++) {
52         LWP_MwaitProcess(1, waitarray, 1);
53     }
54     gettimeofday(&t2, NULL);
55
56     x = (t2.tv_sec - t1.tv_sec) * 1000000 + (t2.tv_usec - t1.tv_usec);
57     printf("%d milliseconds for %d MWaits (%f usec per Mwait and Signal)\n",
58            x / 1000, count, (float)(x / count));
59 }