futex-timeout.c 516 B

123456789101112131415161718192021222324
  1. #include <unistd.h>
  2. #include <stdio.h>
  3. #include <sys/syscall.h>
  4. #include <linux/futex.h>
  5. #include <sys/time.h>
  6. #include <errno.h>
  7. int main (int argc, const char** argv) {
  8. int myfutex = 0;
  9. int ret;
  10. struct timespec t = {
  11. .tv_sec = 1,
  12. .tv_nsec = 0
  13. };
  14. puts("invoke futex syscall with 1-second timeout");
  15. ret = syscall(SYS_futex, &myfutex, FUTEX_WAIT, 0, &t, NULL, 0);
  16. if (ret == -1 && errno == ETIMEDOUT) {
  17. puts("futex correctly timed out");
  18. }
  19. return 0;
  20. }