Lines Matching defs:sigcb
70 STATIC VOID OsMoveTmpInfoToUnbInfo(sig_cb *sigcb, INT32 signo)
72 SigInfoListNode *tmpInfoNode = sigcb->tmpInfoListHead;
73 SigInfoListNode **prevHook = &sigcb->tmpInfoListHead;
77 (VOID)memcpy_s(&sigcb->sigunbinfo, sizeof(siginfo_t), &tmpInfoNode->info, sizeof(siginfo_t));
88 STATIC INT32 OsAddSigInfoToTmpList(sig_cb *sigcb, siginfo_t *info)
91 SigInfoListNode *tmp = sigcb->tmpInfoListHead;
106 tmp->next = sigcb->tmpInfoListHead;
107 sigcb->tmpInfoListHead = tmp;
115 VOID OsClearSigInfoTmpList(sig_cb *sigcb)
117 while (sigcb->tmpInfoListHead != NULL) {
118 SigInfoListNode *tmpInfoNode = sigcb->tmpInfoListHead;
119 sigcb->tmpInfoListHead = sigcb->tmpInfoListHead->next;
126 sig_cb *sigcb = &taskCB->sig;
128 if (!LOS_ListEmpty(&sigcb->waitList) && OsSigIsMember(&sigcb->sigwaitmask, signo)) {
129 OsMoveTmpInfoToUnbInfo(sigcb, signo);
132 OsSigEmptySet(&sigcb->sigwaitmask);
178 sig_cb *sigcb = &stcb->sig;
180 OS_RETURN_IF_NULL(sigcb);
185 masked = (bool)OsSigIsMember(&sigcb->sigprocmask, info->si_signo);
188 if (LOS_ListEmpty(&sigcb->waitList) ||
189 (!LOS_ListEmpty(&sigcb->waitList) && !OsSigIsMember(&sigcb->sigwaitmask, info->si_signo))) {
190 OsSigAddSet(&sigcb->sigPendFlag, info->si_signo);
194 OsSigAddSet(&sigcb->sigFlag, info->si_signo);
197 if (OsAddSigInfoToTmpList(sigcb, info) == LOS_NOK) {
585 sig_cb *sigcb = NULL;
589 sigcb = &task->sig;
591 if (sigcb->waitList.pstNext == NULL) {
592 LOS_ListInit(&sigcb->waitList);
595 sigset_t clear = sigcb->sigPendFlag & *set;
597 sigcb->sigPendFlag ^= clear;
599 OsMoveTmpInfoToUnbInfo(sigcb, ret);
604 sigcb->sigwaitmask |= *set;
605 OsTaskWaitSetPendMask(OS_TASK_WAIT_SIGNAL, sigcb->sigwaitmask, timeout);
606 ret = task->ops->wait(task, &sigcb->waitList, timeout);
610 sigcb->sigwaitmask = NULL_SIGNAL_SET;
613 (VOID)memcpy_s(info, sizeof(siginfo_t), &sigcb->sigunbinfo, sizeof(siginfo_t));
707 sig_cb *sigcb = &task->sig;
709 (VOID)LOS_AtomicAdd((Atomic *)&sigcb->sigIntLock, 1);
715 sig_cb *sigcb = &task->sig;
717 (VOID)LOS_AtomicSub((Atomic *)&sigcb->sigIntLock, 1);
727 sig_cb *sigcb = &task->sig;
730 if (sigcb->sigIntLock > 0) {
740 if ((sigcb->count == 0) && ((sigcb->sigFlag != 0) || (process->sigShare != 0))) {
743 sigcb->sigFlag = 0;
750 sigcb->sigFlag |= process->sigShare;
751 UINT32 signo = (UINT32)FindFirstSetedBit(sigcb->sigFlag) + 1;
752 UINT32 sigVal = (UINT32)(UINTPTR)(sigcb->sigunbinfo.si_value.sival_ptr);
753 OsMoveTmpInfoToUnbInfo(sigcb, signo);
755 sigcb->sigContext = sp;
760 sigcb->sigFlag ^= 1ULL << (signo - 1);
761 sigcb->count++;
775 sig_cb *sigcb = &task->sig;
778 if (sigcb->count != 1) {
780 PRINT_ERR("sig error count : %d\n", sigcb->count);
785 VOID *saveContext = sigcb->sigContext;
786 sigcb->sigContext = NULL;
787 sigcb->count--;