11use crate :: ptr;
22use crate :: ffi:: c_void;
3-
4- extern "C" {
5- fn sys_sem_init ( sem : * mut * const c_void , value : u32 ) -> i32 ;
6- fn sys_sem_destroy ( sem : * const c_void ) -> i32 ;
7- fn sys_sem_post ( sem : * const c_void ) -> i32 ;
8- fn sys_sem_trywait ( sem : * const c_void ) -> i32 ;
9- fn sys_sem_timedwait ( sem : * const c_void , ms : u32 ) -> i32 ;
10- fn sys_recmutex_init ( recmutex : * mut * const c_void ) -> i32 ;
11- fn sys_recmutex_destroy ( recmutex : * const c_void ) -> i32 ;
12- fn sys_recmutex_lock ( recmutex : * const c_void ) -> i32 ;
13- fn sys_recmutex_unlock ( recmutex : * const c_void ) -> i32 ;
14- }
3+ use crate :: sys:: hermit:: abi;
154
165pub struct Mutex {
176 inner : * const c_void
@@ -27,28 +16,28 @@ impl Mutex {
2716
2817 #[ inline]
2918 pub unsafe fn init ( & mut self ) {
30- let _ = sys_sem_init ( & mut self . inner as * mut * const c_void , 1 ) ;
19+ let _ = abi :: sem_init ( & mut self . inner as * mut * const c_void , 1 ) ;
3120 }
3221
3322 #[ inline]
3423 pub unsafe fn lock ( & self ) {
35- let _ = sys_sem_timedwait ( self . inner , 0 ) ;
24+ let _ = abi :: sem_timedwait ( self . inner , 0 ) ;
3625 }
3726
3827 #[ inline]
3928 pub unsafe fn unlock ( & self ) {
40- let _ = sys_sem_post ( self . inner ) ;
29+ let _ = abi :: sem_post ( self . inner ) ;
4130 }
4231
4332 #[ inline]
4433 pub unsafe fn try_lock ( & self ) -> bool {
45- let result = sys_sem_trywait ( self . inner ) ;
34+ let result = abi :: sem_trywait ( self . inner ) ;
4635 result == 0
4736 }
4837
4938 #[ inline]
5039 pub unsafe fn destroy ( & self ) {
51- let _ = sys_sem_destroy ( self . inner ) ;
40+ let _ = abi :: sem_destroy ( self . inner ) ;
5241 }
5342}
5443
@@ -63,12 +52,12 @@ impl ReentrantMutex {
6352
6453 #[ inline]
6554 pub unsafe fn init ( & mut self ) {
66- let _ = sys_recmutex_init ( & mut self . inner as * mut * const c_void ) ;
55+ let _ = abi :: recmutex_init ( & mut self . inner as * mut * const c_void ) ;
6756 }
6857
6958 #[ inline]
7059 pub unsafe fn lock ( & self ) {
71- let _ = sys_recmutex_lock ( self . inner ) ;
60+ let _ = abi :: recmutex_lock ( self . inner ) ;
7261 }
7362
7463 #[ inline]
@@ -78,11 +67,11 @@ impl ReentrantMutex {
7867
7968 #[ inline]
8069 pub unsafe fn unlock ( & self ) {
81- let _ = sys_recmutex_unlock ( self . inner ) ;
70+ let _ = abi :: recmutex_unlock ( self . inner ) ;
8271 }
8372
8473 #[ inline]
8574 pub unsafe fn destroy ( & self ) {
86- let _ = sys_recmutex_destroy ( self . inner ) ;
75+ let _ = abi :: recmutex_destroy ( self . inner ) ;
8776 }
8877}
0 commit comments