Searched refs:wait_queue (Results 1 – 15 of 15) sorted by relevance
/DragonOS-0.1.8/kernel/src/sched/ |
D | completion.c | 12 wait_queue_head_init(&x->wait_queue); in completion_init() 23 spin_lock(&x->wait_queue.lock); in complete() 27 wait_queue_wakeup_on_stack(&x->wait_queue, -1UL); // -1UL代表所有节点都满足条件,暂时这么写 in complete() 29 spin_unlock(&x->wait_queue.lock); in complete() 39 spin_lock(&x->wait_queue.lock); in complete_all() 42 while (!list_empty(&x->wait_queue.wait_list)) in complete_all() 43 wait_queue_wakeup_on_stack(&x->wait_queue, -1UL); // -1UL代表所有节点都满足条件,暂时这么写 in complete_all() 45 spin_unlock(&x->wait_queue.lock); in complete_all() 67 list_append(&x->wait_queue.wait_list, &wait.wait_list); in __wait_for_common() 70 spin_unlock(&x->wait_queue.lock); in __wait_for_common() [all …]
|
/DragonOS-0.1.8/docs/kernel/sched/ |
D | c_waiting.md | 11 ## 一. wait_queue等待队列 13   wait_queue是一种进程同步机制,中文名为“等待队列”。它可以将当前进程挂起,并在时机成熟时,由另一个进程唤醒他们。 15   当您需要等待一个事件完成时,使用wait_queue机制能减少进程同步的开销。相比于滥用自旋锁以及信号量,或者是循环使用usleep(1000)这样的函数来完成同步,wait… 18 `wait_queue.h`中的等待队列的实现并没有把队列头独立出来,同时没有考虑为等待队列加锁。所以在后来的开发中加入了`wait_queue_head_t`的队列头实现,实质上就是链表+自旋锁。… 29   要使用wait_queue,您需要`#include<common/wait_queue.h>`,并创建一个`wait_queue_node_t`类型的变量,作为等待队列的头… 49 …; 函数`wait_queue_init(wait_queue_node_t *wait_queue, struct process_control_block *pcb)`提供了初始化… 51   当您初始化队列头部时,您仅需要将wait_queue首部的结点指针传入,第二个参数请设置为NULL 90    等待队列头的使用逻辑与等待队列实际是一样的,因为他同样也是等待队列的节点(仅仅多了一把锁)。且wait_queue_head的函数基本上与wait_queue一致,只不过多… 92    同时,wait_queue.h文件中提供了很多的宏,可以方便您的工作。 97 | DECLARE_WAIT_ON_STACK(name, pcb) | 在栈上声明一个wait_queue节点,同时把pcb所代表的进程与该节点绑定 | [all …]
|
/DragonOS-0.1.8/kernel/src/libs/ |
D | semaphore.rs | 5 use super::wait_queue::WaitQueue; 11 wait_queue: WaitQueue, field 25 wait_queue: WaitQueue::INIT, in new() 37 self.wait_queue.sleep(); in down() 46 if self.wait_queue.len() > 0 { in up() 50 if !self.wait_queue.wakeup(0x_ffff_ffff_ffff_ffff) { in up()
|
D | semaphore.c | 18 list_append(&sema->wait_queue.wait_list, &wait.wait_list); in semaphore_down() 28 if (list_empty(&sema->wait_queue.wait_list)) // 没有进程在等待资源 in semaphore_up() 35 …wait_queue_node_t *wq = container_of(list_next(&sema->wait_queue.wait_list), wait_queue_node_t, wa… in semaphore_up()
|
D | wait_queue.c | 13 void wait_queue_init(wait_queue_node_t *wait_queue, struct process_control_block *pcb) in wait_queue_init() argument 15 list_init(&wait_queue->wait_list); in wait_queue_init() 16 wait_queue->pcb = pcb; in wait_queue_init()
|
D | wait_queue_head.c | 11 void wait_queue_head_init(wait_queue_head_t *wait_queue) in wait_queue_head_init() argument 13 list_init(&wait_queue->wait_list); in wait_queue_head_init() 14 spin_init(&wait_queue->lock); in wait_queue_head_init()
|
D | mod.rs | 24 pub mod wait_queue; module
|
/DragonOS-0.1.8/kernel/src/common/ |
D | semaphore.h | 24 wait_queue_node_t wait_queue; member 37 wait_queue_init(&sema->wait_queue, NULL); in semaphore_init()
|
D | wait_queue.h | 24 void wait_queue_init(wait_queue_node_t *wait_queue, struct process_control_block *pcb); 85 void wait_queue_head_init(wait_queue_head_t *wait_queue);
|
D | completion.h | 13 wait_queue_head_t wait_queue; member
|
/DragonOS-0.1.8/docs/community/ChangeLog/V0.1.x/ |
D | V0.1.4.md | 39 - WaitQueue: update: C版本的wait_queue的唤醒,改为立即唤醒 (#158) 133 3、wait_queue的唤醒,改为立即唤醒。
|
D | V0.1.0.md | 110 - wait_queue 等待队列
|
/DragonOS-0.1.8/docs/introduction/ |
D | features.md | 46 - [x] wait_queue等待队列
|
/DragonOS-0.1.8/kernel/src/ipc/ |
D | pipe.rs | 9 libs::{spinlock::SpinLock, wait_queue::WaitQueue},
|
/DragonOS-0.1.8/kernel/src/net/ |
D | socket.rs | 17 wait_queue::WaitQueue,
|