]> git.lizzy.rs Git - rust.git/blobdiff - src/librustrt/mutex.rs
auto merge of #15999 : Kimundi/rust/fix_folder, r=nikomatsakis
[rust.git] / src / librustrt / mutex.rs
index ee696f2cf7c086d736c148fa0c48ac3f69fee346..f24c2609d09e81b93f6f7a1af38ba0201c9ee4d0 100644 (file)
@@ -341,18 +341,18 @@ mod imp {
     use libc;
     use self::os::{PTHREAD_MUTEX_INITIALIZER, PTHREAD_COND_INITIALIZER,
                    pthread_mutex_t, pthread_cond_t};
-    use core::ty::Unsafe;
-    use core::kinds::marker;
+    use core::cell::UnsafeCell;
 
     type pthread_mutexattr_t = libc::c_void;
     type pthread_condattr_t = libc::c_void;
 
     #[cfg(target_os = "freebsd")]
+    #[cfg(target_os = "dragonfly")]
     mod os {
         use libc;
 
-        pub type pthread_mutex_t = *libc::c_void;
-        pub type pthread_cond_t = *libc::c_void;
+        pub type pthread_mutex_t = *mut libc::c_void;
+        pub type pthread_cond_t = *mut libc::c_void;
 
         pub static PTHREAD_MUTEX_INITIALIZER: pthread_mutex_t =
             0 as pthread_mutex_t;
@@ -415,6 +415,8 @@ mod os {
         static __SIZEOF_PTHREAD_MUTEX_T: uint = 24 - 8;
         #[cfg(target_arch = "mips")]
         static __SIZEOF_PTHREAD_MUTEX_T: uint = 24 - 8;
+        #[cfg(target_arch = "mipsel")]
+        static __SIZEOF_PTHREAD_MUTEX_T: uint = 24 - 8;
         #[cfg(target_arch = "x86_64")]
         static __SIZEOF_PTHREAD_COND_T: uint = 48 - 8;
         #[cfg(target_arch = "x86")]
@@ -423,6 +425,8 @@ mod os {
         static __SIZEOF_PTHREAD_COND_T: uint = 48 - 8;
         #[cfg(target_arch = "mips")]
         static __SIZEOF_PTHREAD_COND_T: uint = 48 - 8;
+        #[cfg(target_arch = "mipsel")]
+        static __SIZEOF_PTHREAD_COND_T: uint = 48 - 8;
 
         #[repr(C)]
         pub struct pthread_mutex_t {
@@ -462,19 +466,13 @@ pub struct pthread_cond_t { value: libc::c_int }
     }
 
     pub struct Mutex {
-        lock: Unsafe<pthread_mutex_t>,
-        cond: Unsafe<pthread_cond_t>,
+        lock: UnsafeCell<pthread_mutex_t>,
+        cond: UnsafeCell<pthread_cond_t>,
     }
 
     pub static MUTEX_INIT: Mutex = Mutex {
-        lock: Unsafe {
-            value: PTHREAD_MUTEX_INITIALIZER,
-            marker1: marker::InvariantType,
-        },
-        cond: Unsafe {
-            value: PTHREAD_COND_INITIALIZER,
-            marker1: marker::InvariantType,
-        },
+        lock: UnsafeCell { value: PTHREAD_MUTEX_INITIALIZER },
+        cond: UnsafeCell { value: PTHREAD_COND_INITIALIZER },
     };
 
     impl Mutex {
@@ -483,8 +481,8 @@ pub unsafe fn new() -> Mutex {
             // is better to avoid initialization of potentially
             // opaque OS data before it landed
             let m = Mutex {
-                lock: Unsafe::new(PTHREAD_MUTEX_INITIALIZER),
-                cond: Unsafe::new(PTHREAD_COND_INITIALIZER),
+                lock: UnsafeCell::new(PTHREAD_MUTEX_INITIALIZER),
+                cond: UnsafeCell::new(PTHREAD_COND_INITIALIZER),
             };
 
             return m;