vtest: add command line option to stop forking

this makes it easier to apitrace this
macos/master
Dave Airlie 11 years ago
parent f17d4783c0
commit b5407f6602
  1. 22
      vtest/vtest_server.c

@ -137,15 +137,26 @@ fail:
fprintf(stderr, "socket failed - closing renderer\n"); fprintf(stderr, "socket failed - closing renderer\n");
vtest_destroy_renderer(); vtest_destroy_renderer();
close(new_fd); close(new_fd);
exit(0); return 0;
} }
int main(void) int main(int argc, char **argv)
{ {
int sock, new_fd, ret; int sock, new_fd, ret;
pid_t pid; pid_t pid;
bool do_fork = true;
struct sigaction sa; struct sigaction sa;
if (argc > 1) {
if (!strcmp(argv[1], "--no-fork"))
do_fork = false;
else {
fprintf(stderr, "illegal command line parameter\n");
exit(-1);
}
}
if (do_fork) {
sa.sa_handler = SIG_IGN; sa.sa_handler = SIG_IGN;
sigemptyset(&sa.sa_mask); sigemptyset(&sa.sa_mask);
sa.sa_flags = 0; sa.sa_flags = 0;
@ -153,20 +164,27 @@ int main(void)
perror(0); perror(0);
exit(1); exit(1);
} }
}
sock = vtest_open_socket("/tmp/.virgl_test"); sock = vtest_open_socket("/tmp/.virgl_test");
restart: restart:
new_fd = wait_for_socket_accept(sock); new_fd = wait_for_socket_accept(sock);
if (do_fork) {
/* fork a renderer process */ /* fork a renderer process */
switch ((pid = fork())) { switch ((pid = fork())) {
case 0: case 0:
run_renderer(new_fd); run_renderer(new_fd);
exit(0);
break; break;
case -1: case -1:
default: default:
close(new_fd); close(new_fd);
goto restart; goto restart;
} }
} else {
run_renderer(new_fd);
goto restart;
}
close(sock); close(sock);
} }

Loading…
Cancel
Save