diff options
Diffstat (limited to 'src/libstd/sys/unix/thread_local.rs')
| -rw-r--r-- | src/libstd/sys/unix/thread_local.rs | 45 |
1 files changed, 8 insertions, 37 deletions
diff --git a/src/libstd/sys/unix/thread_local.rs b/src/libstd/sys/unix/thread_local.rs index e9bf214e816..d22118d4d79 100644 --- a/src/libstd/sys/unix/thread_local.rs +++ b/src/libstd/sys/unix/thread_local.rs @@ -8,62 +8,33 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -#![allow(dead_code)] // sys isn't exported yet +#![allow(dead_code)] // not used on all platforms -use libc::c_int; +use mem; +use libc; -pub type Key = pthread_key_t; +pub type Key = libc::pthread_key_t; #[inline] pub unsafe fn create(dtor: Option<unsafe extern fn(*mut u8)>) -> Key { let mut key = 0; - assert_eq!(pthread_key_create(&mut key, dtor), 0); + assert_eq!(libc::pthread_key_create(&mut key, mem::transmute(dtor)), 0); key } #[inline] pub unsafe fn set(key: Key, value: *mut u8) { - let r = pthread_setspecific(key, value); + let r = libc::pthread_setspecific(key, value as *mut _); debug_assert_eq!(r, 0); } #[inline] pub unsafe fn get(key: Key) -> *mut u8 { - pthread_getspecific(key) + libc::pthread_getspecific(key) as *mut u8 } #[inline] pub unsafe fn destroy(key: Key) { - let r = pthread_key_delete(key); + let r = libc::pthread_key_delete(key); debug_assert_eq!(r, 0); } - -#[cfg(any(target_os = "macos", - target_os = "ios"))] -type pthread_key_t = ::libc::c_ulong; - -#[cfg(any(target_os = "freebsd", - target_os = "dragonfly", - target_os = "bitrig", - target_os = "netbsd", - target_os = "openbsd", - target_os = "nacl"))] -type pthread_key_t = ::libc::c_int; - -#[cfg(not(any(target_os = "macos", - target_os = "ios", - target_os = "freebsd", - target_os = "dragonfly", - target_os = "bitrig", - target_os = "netbsd", - target_os = "openbsd", - target_os = "nacl")))] -type pthread_key_t = ::libc::c_uint; - -extern { - fn pthread_key_create(key: *mut pthread_key_t, - dtor: Option<unsafe extern fn(*mut u8)>) -> c_int; - fn pthread_key_delete(key: pthread_key_t) -> c_int; - fn pthread_getspecific(key: pthread_key_t) -> *mut u8; - fn pthread_setspecific(key: pthread_key_t, value: *mut u8) -> c_int; -} |
