1 //@ignore-target-windows: No libc on Windows
3 use std::cell::UnsafeCell;
7 struct RwLock(UnsafeCell<libc::pthread_rwlock_t>);
9 unsafe impl Send for RwLock {}
10 unsafe impl Sync for RwLock {}
12 fn new_lock() -> Arc<RwLock> {
13 Arc::new(RwLock(UnsafeCell::new(libc::PTHREAD_RWLOCK_INITIALIZER)))
18 let lock = new_lock();
19 assert_eq!(libc::pthread_rwlock_wrlock(lock.0.get() as *mut _), 0);
21 let lock_copy = lock.clone();
22 thread::spawn(move || {
23 assert_eq!(libc::pthread_rwlock_wrlock(lock_copy.0.get() as *mut _), 0); //~ ERROR: deadlock