[RFC,5/12] htl: Fix semaphore reference

Message ID 20230212111044.610942-6-bugaevc@gmail.com
State Committed, archived
Headers
Series Towards glibc on x86_64-gnu |

Checks

Context Check Description
dj/TryBot-apply_patch success Patch applied to master at the time it was sent

Commit Message

Sergey Bugaev Feb. 12, 2023, 11:10 a.m. UTC
  'sem' is the opaque 'sem_t', 'isem' is the actual 'struct new_sem'.

Signed-off-by: Sergey Bugaev <bugaevc@gmail.com>
---
 sysdeps/htl/sem-timedwait.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)
  

Comments

Samuel Thibault Feb. 12, 2023, 2:57 p.m. UTC | #1
Applied, thanks!

Sergey Bugaev, le dim. 12 févr. 2023 14:10:36 +0300, a ecrit:
> 'sem' is the opaque 'sem_t', 'isem' is the actual 'struct new_sem'.
> 
> Signed-off-by: Sergey Bugaev <bugaevc@gmail.com>
> ---
>  sysdeps/htl/sem-timedwait.c | 10 +++++-----
>  1 file changed, 5 insertions(+), 5 deletions(-)
> 
> diff --git a/sysdeps/htl/sem-timedwait.c b/sysdeps/htl/sem-timedwait.c
> index 8f2df6e7..9974e9ae 100644
> --- a/sysdeps/htl/sem-timedwait.c
> +++ b/sysdeps/htl/sem-timedwait.c
> @@ -60,7 +60,7 @@ __sem_timedwait_internal (sem_t *restrict sem,
>    int cancel_oldtype = LIBC_CANCEL_ASYNC();
>  
>  #if __HAVE_64B_ATOMICS
> -  uint64_t d = atomic_fetch_add_relaxed (&sem->data,
> +  uint64_t d = atomic_fetch_add_relaxed (&isem->data,
>  		 (uint64_t) 1 << SEM_NWAITERS_SHIFT);
>  
>    pthread_cleanup_push (__sem_wait_cleanup, isem);
> @@ -72,11 +72,11 @@ __sem_timedwait_internal (sem_t *restrict sem,
>  	  /* No token, sleep.  */
>  	  if (timeout)
>  	    err = __lll_abstimed_wait_intr (
> -		      ((unsigned int *) &sem->data) + SEM_VALUE_OFFSET,
> +		      ((unsigned int *) &isem->data) + SEM_VALUE_OFFSET,
>  		      0, timeout, flags, clock_id);
>  	  else
>  	    err = __lll_wait_intr (
> -		      ((unsigned int *) &sem->data) + SEM_VALUE_OFFSET,
> +		      ((unsigned int *) &isem->data) + SEM_VALUE_OFFSET,
>  		      0, flags);
>  
>  	  if (err != 0 && err != KERN_INVALID_ARGUMENT)
> @@ -92,12 +92,12 @@ __sem_timedwait_internal (sem_t *restrict sem,
>  	    }
>  
>  	  /* Token changed */
> -	  d = atomic_load_relaxed (&sem->data);
> +	  d = atomic_load_relaxed (&isem->data);
>  	}
>        else
>  	{
>  	  /* Try to acquire and dequeue.  */
> -	  if (atomic_compare_exchange_weak_acquire (&sem->data,
> +	  if (atomic_compare_exchange_weak_acquire (&isem->data,
>  	      &d, d - 1 - ((uint64_t) 1 << SEM_NWAITERS_SHIFT)))
>  	    {
>  	      /* Success */
> -- 
> 2.39.1
> 
>
  

Patch

diff --git a/sysdeps/htl/sem-timedwait.c b/sysdeps/htl/sem-timedwait.c
index 8f2df6e7..9974e9ae 100644
--- a/sysdeps/htl/sem-timedwait.c
+++ b/sysdeps/htl/sem-timedwait.c
@@ -60,7 +60,7 @@  __sem_timedwait_internal (sem_t *restrict sem,
   int cancel_oldtype = LIBC_CANCEL_ASYNC();
 
 #if __HAVE_64B_ATOMICS
-  uint64_t d = atomic_fetch_add_relaxed (&sem->data,
+  uint64_t d = atomic_fetch_add_relaxed (&isem->data,
 		 (uint64_t) 1 << SEM_NWAITERS_SHIFT);
 
   pthread_cleanup_push (__sem_wait_cleanup, isem);
@@ -72,11 +72,11 @@  __sem_timedwait_internal (sem_t *restrict sem,
 	  /* No token, sleep.  */
 	  if (timeout)
 	    err = __lll_abstimed_wait_intr (
-		      ((unsigned int *) &sem->data) + SEM_VALUE_OFFSET,
+		      ((unsigned int *) &isem->data) + SEM_VALUE_OFFSET,
 		      0, timeout, flags, clock_id);
 	  else
 	    err = __lll_wait_intr (
-		      ((unsigned int *) &sem->data) + SEM_VALUE_OFFSET,
+		      ((unsigned int *) &isem->data) + SEM_VALUE_OFFSET,
 		      0, flags);
 
 	  if (err != 0 && err != KERN_INVALID_ARGUMENT)
@@ -92,12 +92,12 @@  __sem_timedwait_internal (sem_t *restrict sem,
 	    }
 
 	  /* Token changed */
-	  d = atomic_load_relaxed (&sem->data);
+	  d = atomic_load_relaxed (&isem->data);
 	}
       else
 	{
 	  /* Try to acquire and dequeue.  */
-	  if (atomic_compare_exchange_weak_acquire (&sem->data,
+	  if (atomic_compare_exchange_weak_acquire (&isem->data,
 	      &d, d - 1 - ((uint64_t) 1 << SEM_NWAITERS_SHIFT)))
 	    {
 	      /* Success */