Home
last modified time | relevance | path

Searched refs:wait_queue (Results 1 – 15 of 15) sorted by relevance

/DragonOS-0.1.8/kernel/src/sched/
Dcompletion.c12 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/
Dc_waiting.md11 ## 一. wait_queue等待队列
13   wait_queue是一种进程同步机制,中文名为“等待队列”。它可以将当前进程挂起,并在时机成熟时,由另一个进程唤醒他们。
15   当您需要等待一个事件完成时,使用wait_queue机制能减少进程同步的开销。相比于滥用自旋锁以及信号量,或者是循环使用usleep(1000)这样的函数来完成同步,wait…
18 `wait_queue.h`中的等待队列的实现并没有把队列头独立出来,同时没有考虑为等待队列加锁。所以在后来的开发中加入了`wait_queue_head_t`的队列头实现,实质上就是链表+自旋锁。…
29 &emsp;&emsp;要使用wait_queue,您需要`#include<common/wait_queue.h>`,并创建一个`wait_queue_node_t`类型的变量,作为等待队列的头…
49 …;&emsp;函数`wait_queue_init(wait_queue_node_t *wait_queue, struct process_control_block *pcb)`提供了初始化
51 &emsp;&emsp;当您初始化队列头部时,您仅需要将wait_queue首部的结点指针传入,第二个参数请设置为NULL
90 &emsp;&emsp; 等待队列头的使用逻辑与等待队列实际是一样的,因为他同样也是等待队列的节点(仅仅多了一把锁)。且wait_queue_head的函数基本上与wait_queue一致,只不过多…
92 &emsp;&emsp; 同时,wait_queue.h文件中提供了很多的宏,可以方便您的工作。
97 | DECLARE_WAIT_ON_STACK(name, pcb) | 在栈上声明一个wait_queue节点,同时把pcb所代表的进程与该节点绑定 |
[all …]
/DragonOS-0.1.8/kernel/src/libs/
Dsemaphore.rs5 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()
Dsemaphore.c18 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()
Dwait_queue.c13 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()
Dwait_queue_head.c11 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()
Dmod.rs24 pub mod wait_queue; module
/DragonOS-0.1.8/kernel/src/common/
Dsemaphore.h24 wait_queue_node_t wait_queue; member
37 wait_queue_init(&sema->wait_queue, NULL); in semaphore_init()
Dwait_queue.h24 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);
Dcompletion.h13 wait_queue_head_t wait_queue; member
/DragonOS-0.1.8/docs/community/ChangeLog/V0.1.x/
DV0.1.4.md39 - WaitQueue: update: C版本的wait_queue的唤醒,改为立即唤醒 (#158)
133 3、wait_queue的唤醒,改为立即唤醒。
DV0.1.0.md110 - wait_queue 等待队列
/DragonOS-0.1.8/docs/introduction/
Dfeatures.md46 - [x] wait_queue等待队列
/DragonOS-0.1.8/kernel/src/ipc/
Dpipe.rs9 libs::{spinlock::SpinLock, wait_queue::WaitQueue},
/DragonOS-0.1.8/kernel/src/net/
Dsocket.rs17 wait_queue::WaitQueue,