1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- #include <errno.h>
- #include <pthreadP.h>
- int
- pthread_mutexattr_setprioceiling (
- pthread_mutexattr_t *attr,
- int prioceiling)
- {
- if (__sched_fifo_min_prio == -1)
- __init_sched_fifo_prio ();
- if (__builtin_expect (prioceiling < __sched_fifo_min_prio, 0)
- || __builtin_expect (prioceiling > __sched_fifo_max_prio, 0)
- || __builtin_expect ((prioceiling
- & (PTHREAD_MUTEXATTR_PRIO_CEILING_MASK
- >> PTHREAD_MUTEXATTR_PRIO_CEILING_SHIFT))
- != prioceiling, 0))
- return EINVAL;
- struct pthread_mutexattr *iattr = (struct pthread_mutexattr *) attr;
- iattr->mutexkind = ((iattr->mutexkind & ~PTHREAD_MUTEXATTR_PRIO_CEILING_MASK)
- | (prioceiling << PTHREAD_MUTEXATTR_PRIO_CEILING_SHIFT));
- return 0;
- }
|