os_compat.h 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. // Define missing macros when compiling on older kernels
  2. #ifndef FUTEX_WAIT_BITSET
  3. # define FUTEX_WAIT_BITSET 9
  4. #endif
  5. #ifndef FUTEX_WAKE_BITSET
  6. # define FUTEX_WAKE_BITSET 10
  7. #endif
  8. #ifndef FUTEX_BITSET_MATCH_ANY
  9. # define FUTEX_BITSET_MATCH_ANY 0xffffffff
  10. #endif
  11. #ifndef FUTEX_PRIVATE_FLAG
  12. // On older kernels that don't know about FUTEX_PRIVATE_FLAG: don't use it
  13. // (Might be slightly slower but should still work)
  14. # define FUTEX_PRIVATE_FLAG 0
  15. #endif
  16. // Older kernels only cut out the flags they know about, we want just the lower bits
  17. #undef FUTEX_CMD_MASK
  18. #define FUTEX_CMD_MASK 0x7f
  19. #ifndef CLOCK_MONOTONIC_RAW
  20. #define CLOCK_MONOTONIC_RAW 4
  21. #endif
  22. #ifndef CLOCK_MONOTONIC_COARSE
  23. #define CLOCK_MONOTONIC_COARSE 6
  24. #endif
  25. #ifndef CPU_SET_S
  26. # define CPU_SET_S(cpu, setsize, cpusetp) __CPU_SET_S (cpu, setsize, cpusetp)
  27. # define CPU_CLR_S(cpu, setsize, cpusetp) __CPU_CLR_S (cpu, setsize, cpusetp)
  28. # define CPU_ISSET_S(cpu, setsize, cpusetp) __CPU_ISSET_S (cpu, setsize, \
  29. cpusetp)
  30. # define CPU_ZERO_S(setsize, cpusetp) __CPU_ZERO_S (setsize, cpusetp)
  31. # define CPU_COUNT_S(setsize, cpusetp) __CPU_COUNT_S (setsize, cpusetp)
  32. # define __CPU_SET_S(cpu, setsize, cpusetp) \
  33. (__extension__ \
  34. ({ size_t __cpu = (cpu); \
  35. __cpu < 8 * (setsize) \
  36. ? (((__cpu_mask *) ((cpusetp)->__bits))[__CPUELT (__cpu)] \
  37. |= __CPUMASK (__cpu)) \
  38. : 0; }))
  39. # define __CPU_CLR_S(cpu, setsize, cpusetp) \
  40. (__extension__ \
  41. ({ size_t __cpu = (cpu); \
  42. __cpu < 8 * (setsize) \
  43. ? (((__cpu_mask *) ((cpusetp)->__bits))[__CPUELT (__cpu)] \
  44. &= ~__CPUMASK (__cpu)) \
  45. : 0; }))
  46. # define __CPU_ISSET_S(cpu, setsize, cpusetp) \
  47. (__extension__ \
  48. ({ size_t __cpu = (cpu); \
  49. __cpu < 8 * (setsize) \
  50. ? ((((__const __cpu_mask *) ((cpusetp)->__bits))[__CPUELT (__cpu)] \
  51. & __CPUMASK (__cpu))) != 0 \
  52. : 0; }))
  53. # define __CPU_ZERO_S(setsize, cpusetp) \
  54. do __builtin_memset (cpusetp, '\0', setsize); while (0)
  55. # define __CPU_COUNT_S(setsize, cpusetp) \
  56. __sched_cpucount (setsize, cpusetp)
  57. #endif