@@ -54,7 +54,7 @@ pub struct ReentrantMutex {
5454
5555impl ReentrantMutex {
5656 pub unsafe fn uninitialized ( ) -> ReentrantMutex {
57- ReentrantMutex {
57+ ReentrantMutex {
5858 lock : UnsafeCell :: new ( MaybeUninit :: uninit ( ) ) ,
5959 recursion : UnsafeCell :: new ( MaybeUninit :: uninit ( ) )
6060 }
@@ -67,9 +67,9 @@ impl ReentrantMutex {
6767
6868 pub unsafe fn try_lock ( & self ) -> bool {
6969 // Attempt to acquire the lock.
70- let lock = self . lock . get ( ) ;
71- let recursion = self . recursion . get ( ) ;
72- if let Err ( old) = ( * ( * lock) . as_mut_ptr ( ) ) . compare_exchange (
70+ let lock = ( * self . lock . get ( ) ) . as_mut_ptr ( ) ;
71+ let recursion = ( * self . recursion . get ( ) ) . as_mut_ptr ( ) ;
72+ if let Err ( old) = ( * lock) . compare_exchange (
7373 abi:: LOCK_UNLOCKED . 0 ,
7474 __pthread_thread_id. 0 | abi:: LOCK_WRLOCKED . 0 ,
7575 Ordering :: Acquire ,
@@ -78,14 +78,14 @@ impl ReentrantMutex {
7878 // If we fail to acquire the lock, it may be the case
7979 // that we've already acquired it and may need to recurse.
8080 if old & !abi:: LOCK_KERNEL_MANAGED . 0 == __pthread_thread_id. 0 | abi:: LOCK_WRLOCKED . 0 {
81- * ( * recursion) . as_mut_ptr ( ) += 1 ;
81+ * recursion += 1 ;
8282 true
8383 } else {
8484 false
8585 }
8686 } else {
8787 // Success.
88- assert_eq ! ( * ( * recursion) . as_mut_ptr ( ) , 0 , "Mutex has invalid recursion count" ) ;
88+ assert_eq ! ( * recursion, 0 , "Mutex has invalid recursion count" ) ;
8989 true
9090 }
9191 }
@@ -113,17 +113,17 @@ impl ReentrantMutex {
113113 }
114114
115115 pub unsafe fn unlock ( & self ) {
116- let lock = self . lock . get ( ) ;
117- let recursion = self . recursion . get ( ) ;
116+ let lock = ( * self . lock . get ( ) ) . as_mut_ptr ( ) ;
117+ let recursion = ( * self . recursion . get ( ) ) . as_mut_ptr ( ) ;
118118 assert_eq ! (
119- ( * ( * lock) . as_mut_ptr ( ) ) . load( Ordering :: Relaxed ) & !abi:: LOCK_KERNEL_MANAGED . 0 ,
119+ ( * lock) . load( Ordering :: Relaxed ) & !abi:: LOCK_KERNEL_MANAGED . 0 ,
120120 __pthread_thread_id. 0 | abi:: LOCK_WRLOCKED . 0 ,
121121 "This mutex is locked by a different thread"
122122 ) ;
123123
124- if * ( * recursion) . as_mut_ptr ( ) > 0 {
125- * ( * recursion) . as_mut_ptr ( ) -= 1 ;
126- } else if !( * ( * lock) . as_mut_ptr ( ) )
124+ if * recursion > 0 {
125+ * recursion -= 1 ;
126+ } else if !( * lock)
127127 . compare_exchange (
128128 __pthread_thread_id. 0 | abi:: LOCK_WRLOCKED . 0 ,
129129 abi:: LOCK_UNLOCKED . 0 ,
@@ -140,13 +140,13 @@ impl ReentrantMutex {
140140 }
141141
142142 pub unsafe fn destroy ( & self ) {
143- let lock = self . lock . get ( ) ;
144- let recursion = self . recursion . get ( ) ;
143+ let lock = ( * self . lock . get ( ) ) . as_mut_ptr ( ) ;
144+ let recursion = ( * self . recursion . get ( ) ) . as_mut_ptr ( ) ;
145145 assert_eq ! (
146- ( * ( * lock) . as_mut_ptr ( ) ) . load( Ordering :: Relaxed ) ,
146+ ( * lock) . load( Ordering :: Relaxed ) ,
147147 abi:: LOCK_UNLOCKED . 0 ,
148148 "Attempted to destroy locked mutex"
149149 ) ;
150- assert_eq ! ( * ( * recursion) . as_mut_ptr ( ) , 0 , "Recursion counter invalid" ) ;
150+ assert_eq ! ( * recursion, 0 , "Recursion counter invalid" ) ;
151151 }
152152}
0 commit comments