Last change
on this file since 413 was 398, checked in by coas-nagasima, 5 years ago |
mbedTLS版Azure IoT Hub接続サンプルのソースコードを追加
|
-
Property svn:eol-style
set to
native
-
Property svn:mime-type
set to
text/x-csrc;charset=UTF-8
|
File size:
604 bytes
|
Rev | Line | |
---|
[398] | 1 | #include "pthread_impl.h"
|
---|
| 2 |
|
---|
| 3 | int pthread_rwlock_timedwrlock(pthread_rwlock_t *restrict rw, const struct timespec *restrict at)
|
---|
| 4 | {
|
---|
| 5 | int r, t;
|
---|
| 6 |
|
---|
| 7 | r = pthread_rwlock_trywrlock(rw);
|
---|
| 8 | if (r != EBUSY) return r;
|
---|
| 9 |
|
---|
| 10 | int spins = 100;
|
---|
| 11 | while (spins-- && rw->_rw_lock && !rw->_rw_waiters) a_spin();
|
---|
| 12 |
|
---|
| 13 | while ((r=pthread_rwlock_trywrlock(rw))==EBUSY) {
|
---|
| 14 | if (!(r=rw->_rw_lock)) continue;
|
---|
| 15 | t = r | 0x80000000;
|
---|
| 16 | a_inc(&rw->_rw_waiters);
|
---|
| 17 | a_cas(&rw->_rw_lock, r, t);
|
---|
| 18 | r = __timedwait(&rw->_rw_lock, t, CLOCK_REALTIME, at, rw->_rw_shared^128);
|
---|
| 19 | a_dec(&rw->_rw_waiters);
|
---|
| 20 | if (r && r != EINTR) return r;
|
---|
| 21 | }
|
---|
| 22 | return r;
|
---|
| 23 | }
|
---|
Note:
See
TracBrowser
for help on using the repository browser.