Differences From Artifact [cc03ce6342]:
- File src/platform/windows/condition.m — part of check-in [374e1a1bfa] at 2021-01-02 22:04:26 on branch trunk — Update copyright (user: js, size: 2582) [annotate] [blame] [check-ins using] [more...]
To Artifact [33e65b6da7]:
- File
src/platform/windows/condition.m
— part of check-in
[dfd52d5220]
at
2021-04-17 16:24:13
on branch new-naming-convention
— of_mutex_t -> OFPlainMutex
Also rename of_rmutex_t -> OFPlainRecursiveMutex. (user: js, size: 2594) [annotate] [blame] [check-ins using]
| ︙ | ︙ | |||
63 64 65 66 67 68 69 | } } return 0; } int | | | | | | | | | 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 |
}
}
return 0;
}
int
of_condition_wait(of_condition_t *condition, OFPlainMutex *mutex)
{
int error;
DWORD status;
if ((error = OFPlainMutexUnlock(mutex)) != 0)
return error;
of_atomic_int_inc(&condition->count);
status = WaitForSingleObject(condition->event, INFINITE);
of_atomic_int_dec(&condition->count);
switch (status) {
case WAIT_OBJECT_0:
return OFPlainMutexLock(mutex);
case WAIT_FAILED:
switch (GetLastError()) {
case ERROR_INVALID_HANDLE:
return EINVAL;
default:
OF_ENSURE(0);
}
default:
OF_ENSURE(0);
}
}
int
of_condition_timed_wait(of_condition_t *condition, OFPlainMutex *mutex,
OFTimeInterval timeout)
{
int error;
DWORD status;
if ((error = OFPlainMutexUnlock(mutex)) != 0)
return error;
of_atomic_int_inc(&condition->count);
status = WaitForSingleObject(condition->event, timeout * 1000);
of_atomic_int_dec(&condition->count);
switch (status) {
case WAIT_OBJECT_0:
return OFPlainMutexLock(mutex);
case WAIT_TIMEOUT:
return ETIMEDOUT;
case WAIT_FAILED:
switch (GetLastError()) {
case ERROR_INVALID_HANDLE:
return EINVAL;
default:
|
| ︙ | ︙ |