int benchmark(void *tsd, result_t *res) { tsd_t *ts = (tsd_t *)tsd; int i; for (i = 0; i < lm_optB; i++) { ts->ts_pids[i] = fork(); switch (ts->ts_pids[i]) { case 0: (void) barrier_queue(b, NULL); exit(0); break; case -1: res->re_errors++; break; default: continue; } } res->re_count = lm_optB; (void) barrier_queue(b, NULL); return (0); }
/*ARGSUSED*/ int benchmark(void *tsd, result_t *res) { int i; /* * start them all exiting */ (void) barrier_queue(b, NULL); /* * wait for them all to exit */ for (i = 0; i < lm_optB; i++) { switch (waitpid((pid_t)-1, NULL, 0)) { case 0: continue; case -1: res->re_errors++; } } res->re_count = i; return (0); }
int benchmark_pre(void *tsd) { tsd_t *ts = (tsd_t *)tsd; if (ts->ts_once++ == 0) { ts->ts_pids = (int *)malloc(sizeof (pid_t)); LM_CHK(ts->ts_pids != NULL); } /* * create processes to exit */ LM_CHK((ts->ts_pids[0] = fork()) != -1); switch (ts->ts_pids[0]) { case 0: (void) barrier_queue(b, NULL); if (opte) _exit(0); exit(0); break; default: break; } return (0); }
/*ARGSUSED*/ int benchmark(void *tsd, result_t *res) { /* * Start them all exiting. */ (void) barrier_queue(b, NULL); LM_CHK(waitpid((pid_t)-1, NULL, 0) != -1); return (0); }
int benchmark_initbatch(void *tsd) { tsd_t *ts = (tsd_t *)tsd; int i; int errors = 0; if (ts->ts_once++ == 0) { ts->ts_pids = (int *)malloc(lm_optB * sizeof (pid_t)); if (ts->ts_pids == NULL) { errors ++; } } /* * create processes to exit */ for (i = 0; i < lm_optB; i++) { ts->ts_pids[i] = fork(); switch (ts->ts_pids[i]) { case 0: (void) barrier_queue(b, NULL); if (opte) _exit(0); exit(0); break; case -1: errors ++; break; default: continue; } } return (errors); }