|
|
1.1 root 1: /*
2: * Benchmark program to calculate exec
3: * overhead (approximately). Process
4: * vforks and execs "null" test program.
5: * The time to run the vfork program should
6: * then be deducted from this one to
7: * estimate the overhead for the exec.
8: */
9:
10: main(argc, argv)
11: char *argv[];
12: {
13: register int nexecs, i;
14: char *cp, *sbrk();
15: int pid, child, status, brksize;
16:
17: if (argc < 3) {
18: printf("usage: %s number-of-execs sbrk-size job-name\n",
19: argv[0]);
20: exit(1);
21: }
22: nexecs = atoi(argv[1]);
23: if (nexecs < 0) {
24: printf("%s: bad number of execs\n", argv[1]);
25: exit(2);
26: }
27: brksize = atoi(argv[2]);
28: if (brksize < 0) {
29: printf("%s: bad size to sbrk\n", argv[2]);
30: exit(3);
31: }
32: cp = sbrk();
33: if ((int)cp == -1) {
34: perror("sbrk");
35: exit(4);
36: }
37: for (i = 0; i < brksize; i += 1024)
38: cp[i] = i;
39: while (nexecs-- > 0) {
40: child = vfork();
41: if (child == -1) {
42: perror("vfork");
43: exit(-1);
44: }
45: if (child == 0) {
46: execv(argv[3], argv);
47: perror("execv");
48: _exit(-1);
49: }
50: while ((pid = wait(&status)) != -1 && pid != child)
51: ;
52: }
53: exit(0);
54: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.