time.c 986 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. /* $Id: time.c,v 1.7 2001/05/06 07:23:34 kilobug Exp $ */
  2. #include <stdio.h>
  3. #include <signal.h>
  4. #include <sys/time.h>
  5. #include <sys/types.h>
  6. #include <unistd.h>
  7. #include <server.h>
  8. void timer_timeout(int foo)
  9. {
  10. printf("%d: timeout.\n", gl_player->team_id);
  11. fflush(stdout);
  12. kill(getpid(), SIGKILL);
  13. }
  14. int time_left()
  15. {
  16. struct itimerval it;
  17. getitimer(ITIMER_PROF, &it);
  18. return it.it_value.tv_sec * 1000 + it.it_value.tv_usec / 1000;
  19. }
  20. void start_timer()
  21. {
  22. struct itimerval it;
  23. it.it_value.tv_sec = gl_config->turn_msec / 1000;
  24. it.it_value.tv_usec = (gl_config->turn_msec % 1000) * 1000;
  25. it.it_interval.tv_sec = 0;
  26. it.it_interval.tv_usec = 0;
  27. signal(SIGPROF, timer_timeout);
  28. setitimer(ITIMER_PROF, &it, NULL);
  29. }
  30. void stop_timer()
  31. {
  32. struct itimerval it;
  33. it.it_value.tv_sec = 0;
  34. it.it_value.tv_usec = 0;
  35. it.it_interval.tv_sec = 0;
  36. it.it_interval.tv_usec = 0;
  37. setitimer(ITIMER_PROF, &it, NULL);
  38. signal(SIGPROF, SIG_IGN);
  39. }