+ printf("fio: Waiting for threads to initialize...\n");
+ gettimeofday(&this_start, NULL);
+ left = this_jobs;
+ while (left) {
+ if (mtime_since_now(&this_start) > JOB_START_TIMEOUT)
+ break;
+
+ usleep(100000);
+
+ for (i = 0; i < this_jobs; i++) {
+ td = map[i];
+ if (!td)
+ continue;
+ if (td->runstate == TD_INITIALIZED ||
+ td->runstate >= TD_EXITED) {
+ map[i] = NULL;
+ left--;
+ continue;
+ }
+ }
+ }
+
+ if (left) {
+ fprintf(stderr, "fio: %d jobs failed to start\n", left);
+ for (i = 0; i < this_jobs; i++) {
+ td = map[i];
+ if (!td)
+ continue;
+ kill(td->pid, SIGTERM);
+ }
+ break;
+ }
+
+ /*
+ * start created threads (TD_INITIALIZED -> TD_RUNNING)
+ */
+ printf("fio: Go for launch\n");