]> Kevux Git Server - fll/commitdiff
Update: f_thread_lock_read() should return F_resource_not.
authorKevin Day <thekevinday@gmail.com>
Wed, 14 Apr 2021 17:04:52 +0000 (12:04 -0500)
committerKevin Day <thekevinday@gmail.com>
Wed, 14 Apr 2021 17:07:39 +0000 (12:07 -0500)
The pthread_rwlock_rdlock() potentially returns EAGAIN.
This needs to be handled, translated into F_resource_not (with error bit), and then returned.

level_0/f_thread/c/thread.c
level_0/f_thread/c/thread.h

index be58bd87a9df10101c049be223ebc109bc581b0c..5f8c9c12c61ecc6ce65fca1268b160cf31be7c29 100644 (file)
@@ -1766,6 +1766,7 @@ extern "C" {
     const int error = pthread_rwlock_rdlock(lock);
 
     if (error) {
+      if (error == EAGAIN) return F_status_set_error(F_resource_not);
       if (error == EDEADLK) return F_status_set_error(F_deadlock);
       if (error == EINVAL) return F_status_set_error(F_parameter);
       if (error == ETIMEDOUT) return F_time;
index 65003e698b6515919c2288f9bb6483d9b4c3cb30..b8acf2019c350b9d8f1bfae6129dddc0bf66dd0b 100644 (file)
@@ -2398,6 +2398,7 @@ extern "C" {
  *
  *   F_deadlock (with error bit) if operation would cause a deadlock.
  *   F_parameter (with error bit) if a parameter is invalid.
+ *   F_resource_not (with error bit) if max number of read locks allowed is reached.
  *
  *   F_failure (with error bit) on any other error.
  *
@@ -2449,7 +2450,7 @@ extern "C" {
  *   F_busy on success, but the lock is already locked.
  *
  *   F_parameter (with error bit) if a parameter is invalid.
- *   F_resource_not (with error bit) if max locks is reached.
+ *   F_resource_not (with error bit) if max number of read locks allowed is reached.
  *
  *   F_failure (with error bit) on any other error.
  *