timer.h 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. #include <syscall.h>
  2. #include <bits/time.h>
  3. #include <bits/sigevent.h>
  4. #define ITIMER_REAL 0
  5. #define ITIMER_VIRTUAL 1
  6. #define ITIMER_PROF 2
  7. struct itimerval {
  8. struct timeval interval;
  9. struct timeval value;
  10. };
  11. struct itimerspec {
  12. struct timespec interval;
  13. struct timespec value;
  14. };
  15. inline static long sys_getitimer(int which, struct itimerval* itv)
  16. {
  17. return syscall2(NR_setitimer, which, (long)itv);
  18. }
  19. inline static long sys_setitimer(int which, struct itimerval* itv, struct itimerval* old)
  20. {
  21. return syscall3(NR_setitimer, which, (long)itv, (long)old);
  22. }
  23. inline static long sys_alarm(unsigned int seconds)
  24. {
  25. struct itimerval itv = { { 0, 0 }, { seconds, 0 } };
  26. return syscall3(NR_setitimer, ITIMER_REAL, (long)&itv, 0);
  27. }
  28. inline static int sys_timer_create(int which, struct sigevent* sevt, int* timerid)
  29. {
  30. return syscall3(NR_timer_create, which, (long)sevt, (long)timerid);
  31. }
  32. inline static int sys_timer_delete(int timerid)
  33. {
  34. return syscall1(NR_timer_delete, timerid);
  35. }
  36. inline static int sys_timer_settime(int timerid, int flags,
  37. const struct itimerspec* newtime, struct itimerspec* oldtime)
  38. {
  39. return syscall4(NR_timer_settime, timerid, flags,
  40. (long)newtime, (long)oldtime);
  41. }
  42. inline static int sys_timer_gettime(int timerid, struct itimerspec* curtime)
  43. {
  44. return syscall2(NR_timer_gettime, timerid, (long)curtime);
  45. }