xref: /dragonfly/test/sysperf/lockmgr3.c (revision 367612aa80b4fde9fb3dfd4922a93d0547222a7a)
1 /*
2  * varsym..c
3  *
4  * varsym [threads]
5  *
6  * tests shared lock using varsym_get()
7  */
8 
9 #include "blib.h"
10 #include <sys/file.h>
11 #include <assert.h>
12 
13 int
main(int ac,char ** av)14 main(int ac, char **av)
15 {
16           long long count = 0;
17           long long max;
18           char c;
19           int n;
20           int i;
21           int j;
22           int fd;
23           int status;
24           char *path;
25           char buf[256];
26           struct stat st;
27 
28           printf("timing standard fstat() syscall\n");
29 
30           fd = open("/tmp/lockmgr3.test", O_RDWR|O_CREAT, 0666);
31           assert(fd >= 0);
32           start_timing();
33           while (stop_timing(0, NULL) == 0) {
34                     fstat(fd, &st);
35                     fstat(fd, &st);
36                     fstat(fd, &st);
37                     fstat(fd, &st);
38                     ++count;
39           }
40           max = count * 4;
41           close(fd);
42 
43           if (ac > 1)
44                     n = strtol(av[1], NULL, 0);
45           else
46                     n = 1;
47 
48           start_timing();
49           for (i = 0; i < n; ++i) {
50                     if (fork() == 0) {
51                               asprintf(&path, "/tmp/lockmgr.test");
52                               fd = open(path, O_RDWR|O_CREAT, 0666);
53                               assert(fd >= 0);
54                               for (count = 0; count < max; ++count) {
55                                         fstat(fd, &st);
56                                         fstat(fd, &st);
57                                         fstat(fd, &st);
58                                         fstat(fd, &st);
59                               }
60                               _exit(0);
61                     }
62           }
63           while (wait3(&status, 0, NULL) >= 0 || errno == EINTR)
64                     ;
65           stop_timing(max * n * 4, "lockmgr3");
66 
67           return(0);
68 }
69