1
0

pthread_attr_get.c 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. #include "pthread_impl.h"
  2. int pthread_attr_getdetachstate(const pthread_attr_t *a, int *state)
  3. {
  4. *state = a->_a_detach;
  5. return 0;
  6. }
  7. int pthread_attr_getguardsize(const pthread_attr_t *restrict a, size_t *restrict size)
  8. {
  9. *size = a->_a_guardsize;
  10. return 0;
  11. }
  12. int pthread_attr_getinheritsched(const pthread_attr_t *restrict a, int *restrict inherit)
  13. {
  14. *inherit = a->_a_sched;
  15. return 0;
  16. }
  17. int pthread_attr_getschedparam(const pthread_attr_t *restrict a, struct sched_param *restrict param)
  18. {
  19. param->sched_priority = a->_a_prio;
  20. return 0;
  21. }
  22. int pthread_attr_getschedpolicy(const pthread_attr_t *restrict a, int *restrict policy)
  23. {
  24. *policy = a->_a_policy;
  25. return 0;
  26. }
  27. int pthread_attr_getscope(const pthread_attr_t *restrict a, int *restrict scope)
  28. {
  29. *scope = PTHREAD_SCOPE_SYSTEM;
  30. return 0;
  31. }
  32. int pthread_attr_getstack(const pthread_attr_t *restrict a, void **restrict addr, size_t *restrict size)
  33. {
  34. if (!a->_a_stackaddr)
  35. return EINVAL;
  36. *size = a->_a_stacksize;
  37. *addr = (void *)(a->_a_stackaddr - *size);
  38. return 0;
  39. }
  40. int pthread_attr_getstacksize(const pthread_attr_t *restrict a, size_t *restrict size)
  41. {
  42. *size = a->_a_stacksize;
  43. return 0;
  44. }
  45. int pthread_barrierattr_getpshared(const pthread_barrierattr_t *restrict a, int *restrict pshared)
  46. {
  47. *pshared = !!a->__attr;
  48. return 0;
  49. }
  50. int pthread_condattr_getclock(const pthread_condattr_t *restrict a, clockid_t *restrict clk)
  51. {
  52. *clk = a->__attr & 0x7fffffff;
  53. return 0;
  54. }
  55. int pthread_condattr_getpshared(const pthread_condattr_t *restrict a, int *restrict pshared)
  56. {
  57. *pshared = a->__attr>>31;
  58. return 0;
  59. }
  60. int pthread_mutexattr_getprotocol(const pthread_mutexattr_t *restrict a, int *restrict protocol)
  61. {
  62. *protocol = PTHREAD_PRIO_NONE;
  63. return 0;
  64. }
  65. int pthread_mutexattr_getpshared(const pthread_mutexattr_t *restrict a, int *restrict pshared)
  66. {
  67. *pshared = a->__attr / 128U % 2;
  68. return 0;
  69. }
  70. int pthread_mutexattr_getrobust(const pthread_mutexattr_t *restrict a, int *restrict robust)
  71. {
  72. *robust = a->__attr / 4U % 2;
  73. return 0;
  74. }
  75. int pthread_mutexattr_gettype(const pthread_mutexattr_t *restrict a, int *restrict type)
  76. {
  77. *type = a->__attr & 3;
  78. return 0;
  79. }
  80. int pthread_rwlockattr_getpshared(const pthread_rwlockattr_t *restrict a, int *restrict pshared)
  81. {
  82. *pshared = a->__attr[0];
  83. return 0;
  84. }