Revert "posix: rwlock: Refactor locking using k_timepoint_t"

This reverts commit 833eaccfd1.

Signed-off-by: Anas Nashif <anas.nashif@intel.com>
This commit is contained in:
Anas Nashif 2025-05-30 07:40:18 -04:00
commit 7bbb834deb

View file

@ -359,14 +359,24 @@ static uint32_t read_lock_acquire(struct posix_rwlock *rwl, uint32_t timeout)
static uint32_t write_lock_acquire(struct posix_rwlock *rwl, uint32_t timeout)
{
uint32_t ret = 0U;
k_timepoint_t deadline;
int64_t elapsed_time, st_time = k_uptime_get();
k_timeout_t k_timeout;
deadline = sys_timepoint_calc(SYS_TIMEOUT_MS(timeout));
k_timeout = SYS_TIMEOUT_MS(timeout);
/* waiting for release of write lock */
if (sys_sem_take(&rwl->wr_sem, sys_timepoint_timeout(deadline)) == 0) {
if (sys_sem_take(&rwl->wr_sem, k_timeout) == 0) {
/* update remaining timeout time for 2nd sem */
if (timeout != SYS_FOREVER_MS) {
elapsed_time = k_uptime_get() - st_time;
timeout = timeout <= elapsed_time ? 0 :
timeout - elapsed_time;
}
k_timeout = SYS_TIMEOUT_MS(timeout);
/* waiting for reader to complete operation */
if (sys_sem_take(&rwl->reader_active, sys_timepoint_timeout(deadline)) == 0) {
if (sys_sem_take(&rwl->reader_active, k_timeout) == 0) {
rwl->wr_owner = k_current_get();
} else {
(void)sys_sem_give(&rwl->wr_sem);