time.c 904 B

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