Searched refs:READER (Results 1 – 2 of 2) sorted by relevance
/DragonOS/docs/kernel/locking/ |
H A D | rwlock.md | 16 …Lock的数据结构中, 一切的访问必须通过RwLock的数据结构进行访问和修改. 每个要访问共享数据的会获得一个守卫(guard), 只读进程获得READER(读者守卫),需要修改共享变量的进程获… 18 …p; 在实践中, 读写锁除了READER, WRITER, 还增加了UPGRADER; 这是一种介于READER和WRITER之间的守卫, 这个守卫的作用就是防止WRITER的饿死(St… 23 …READER, 即可以同时有多个进程对共享数据进行访问;同一时间只能存在一个WRITER,而且当有一个进程获得WRITER时,不能存在READER和UPGRADER;进程获得UPGRADER的前提… 34 #### 2.3.2 READER守卫的数据结构 75 …在一个进程获得了WRITER守卫; 若UPGRADER_BIT=1, 则存在一个进程获得了UPGRADER守卫,第2位到第30位用来二进制表示获得READER守卫的进程数; 第31位是溢出判断位,… 85 ///功能: 获得READER守卫 89 ///功能: 尝试获得READER守卫 110 ///功能: 将WRITER降级为READER 123 ///功能: 将UPGRADER降级为READER
|
/DragonOS/kernel/src/libs/ |
H A D | rwlock.rs | 21 const READER: u32 = 1 << 2; constant 106 let value = self.lock.fetch_add(READER, Ordering::Acquire); in current_reader() 110 self.lock.fetch_sub(READER, Ordering::Release); in current_reader() 143 self.lock.fetch_sub(READER, Ordering::Release); in inner_try_read() 196 return state / READER + (state & UPGRADED) / UPGRADED; in reader_count() 358 self.lock.fetch_sub(READER, Ordering::Release); in force_read_decrement() 584 self.lock.fetch_sub(READER, Ordering::Release); in drop()
|