Home
last modified time | relevance | path

Searched refs:READER (Results 1 – 2 of 2) sorted by relevance

/DragonOS/docs/kernel/locking/
H A Drwlock.md16 …Lock的数据结构中, 一切的访问必须通过RwLock的数据结构进行访问和修改. 每个要访问共享数据的会获得一个守卫(guard), 只读进程获得READER(读者守卫),需要修改共享变量的进程获…
18 …p; 在实践中, 读写锁除了READER, WRITER, 还增加了UPGRADER; 这是一种介于READER和WRITER之间的守卫, 这个守卫的作用就是防止WRITER的饿死(St…
23READER, 即可以同时有多个进程对共享数据进行访问;同一时间只能存在一个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 Drwlock.rs21 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()