diff --git a/src/header/pthread/tls.rs b/src/header/pthread/tls.rs index 6a064f971b..57c7c35458 100644 --- a/src/header/pthread/tls.rs +++ b/src/header/pthread/tls.rs @@ -30,7 +30,7 @@ pub unsafe extern "C" fn pthread_getspecific(key: pthread_key_t) -> *mut c_void data } #[no_mangle] -pub unsafe extern "C" fn pthread_key_create(key_ptr: *mut pthread_key_t, destructor: extern "C" fn(value: *mut c_void)) -> c_int { +pub unsafe extern "C" fn pthread_key_create(key_ptr: *mut pthread_key_t, destructor: Option) -> c_int { let key = NEXTKEY.get(); NEXTKEY.set(key + 1); //println!("pthread_key_create new key {:#0x}, dtor {:p}", key, destructor); @@ -82,7 +82,7 @@ pub unsafe extern "C" fn pthread_setspecific(key: pthread_key_t, value: *const c static KEYS: Mutex> = Mutex::new(BTreeMap::new()); struct Dtor { - destructor: extern "C" fn(value: *mut c_void) + destructor: Option, } #[thread_local] @@ -97,8 +97,8 @@ static NEXTKEY: Cell = Cell::new(1); pub(crate) unsafe fn run_all_destructors() { for (key, Record { data }) in VALUES.take() { - let Some(&Dtor { destructor }) = KEYS.lock().get(&key) else { continue }; + let Some(&Dtor { destructor: Some(dtor) }) = KEYS.lock().get(&key) else { continue }; - destructor(data); + dtor(data); } } diff --git a/src/header/semaphore/cbindgen.toml b/src/header/semaphore/cbindgen.toml index 0c01194989..213064b7ac 100644 --- a/src/header/semaphore/cbindgen.toml +++ b/src/header/semaphore/cbindgen.toml @@ -1,7 +1,7 @@ sys_includes = [] include_guard = "_RELIBC_SEMAPHORE_H" language = "C" -style = "Tag" +style = "Type" no_includes = true cpp_compat = true