Searched refs:WRITER (Results 1 – 2 of 2) sorted by relevance
/DragonOS-0.1.9/docs/kernel/locking/ |
D | rwlock.md | 16 …k的数据结构进行访问和修改. 每个要访问共享数据的会获得一个守卫(guard), 只读进程获得READER(读者守卫),需要修改共享变量的进程获得WRITER(写者守卫),作为RwLock的"影子… 18 …WRITER, 还增加了UPGRADER; 这是一种介于READER和WRITER之间的守卫, 这个守卫的作用就是防止WRITER的饿死(Staration).当进程获得UPGRADER时,进程把… 23 …DER, 即可以同时有多个进程对共享数据进行访问;同一时间只能存在一个WRITER,而且当有一个进程获得WRITER时,不能存在READER和UPGRADER;进程获得UPGRADER的前提条件是… 50 #### 2.3.4 WRITER守卫的数据结构 75   (从右到左)第0位表征WRITER是否有效,若WRITER_BIT=1, 则存在一个进程获得了WRITER守卫; 若UPGRADER_BIT=1, 则存在一个进程获得了UPG… 93 ///功能: 获得WRITER守卫 97 ///功能: 尝试获得WRITER守卫 108 ### 3.2 WRITER守卫RwLockWriteGuard的主要API 110 ///功能: 将WRITER降级为READER 114 ///功能: 将WRITER降级为UPGRADER [all …]
|
/DragonOS-0.1.9/kernel/src/libs/ |
D | rwlock.rs | 27 const WRITER: u32 = 1; constant 143 if value & (WRITER | UPGRADED) != 0 { in inner_try_read() 204 return (self.lock.load(Ordering::Relaxed) & WRITER) / WRITER; in writer_count() 243 .compare_exchange(0, WRITER, Ordering::Acquire, Ordering::Relaxed) in inner_try_write() 315 if self.lock.fetch_or(UPGRADED, Ordering::Acquire) & (WRITER | UPGRADED) == 0 { in inner_try_upgradeable_read() 358 debug_assert!(self.lock.load(Ordering::Relaxed) & !WRITER > 0); in force_read_decrement() 367 debug_assert_eq!(self.lock.load(Ordering::Relaxed) & !(WRITER | UPGRADED), 0); in force_write_unlock() 368 self.lock.fetch_and(!(WRITER | UPGRADED), Ordering::Release); in force_write_unlock() 414 WRITER, in try_upgrade() 528 self.inner.lock.load(Ordering::Acquire) & (WRITER | UPGRADED), in downgrade_to_upgradeable() [all …]
|