version 1.30.2.3, 2023/02/23 15:41:45
|
version 1.30.2.4, 2023/02/23 17:13:01
|
Line 1123 schedResumeby(sched_root_task_t * __restrict root, u_c
|
Line 1123 schedResumeby(sched_root_task_t * __restrict root, u_c
|
static void * |
static void * |
_sched_sigDisp(void *arg) |
_sched_sigDisp(void *arg) |
{ |
{ |
sched_root_task_t *sched = arg; | sched_root_task_t *root = arg; |
sigset_t ss; | sched_task_t *task, *tmp; |
int sig; | int sig, flg; |
|
|
sigfillset(&ss); | while (root->root_sigthr) { |
while (sched->root_sigthr) { | if (sigwait(&root->root_sigset, &sig)) |
sigwait(&ss, &sig); | continue; |
|
|
|
flg = 0; |
|
TAILQ_FOREACH_SAFE(task, &root->root_signal, task_node, tmp) { |
|
if (TASK_VAL(task) == (uintptr_t) sig) { |
|
if (!flg) { |
|
TASK_RET(task) = 0; |
|
TASK_FLAG(task) = 0; |
|
|
|
/* remove signal handle */ |
|
transit_task2ready(task, &root->root_signal); |
|
} |
|
flg++; |
|
} |
|
} |
|
if (flg < 2) |
|
sigdelset(&root->root_sigset, sig); |
} |
} |
|
|
return NULL; |
return NULL; |