|
|
1.1 ! root 1: /* ! 2: * Benchmark program to calculate exec ! 3: * overhead (approximately). Process ! 4: * forks and execs "null" test program. ! 5: * The time to run the fork 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(brksize); ! 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 = fork(); ! 41: if (child == -1) { ! 42: perror("fork"); ! 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.