| 2767 | } |
| 2768 | |
| 2769 | void KProcess::signalFd(KThread* thread, U32 signal) { |
| 2770 | BOXEDWINE_CRITICAL_SECTION_WITH_MUTEX(fdsMutex); |
| 2771 | for (auto& n : this->fds) { |
| 2772 | KFileDescriptorPtr fd = n.value; |
| 2773 | if (fd->kobject->type == KTYPE_SIGNAL) { |
| 2774 | std::shared_ptr<KSignal> p = std::dynamic_pointer_cast<KSignal>(fd->kobject); |
| 2775 | if ((p->mask & signal) && (!thread || thread->waitingCond == p->lockCond)) { |
| 2776 | BOXEDWINE_CRITICAL_SECTION_WITH_CONDITION(p->lockCond); |
| 2777 | p->sigAction = this->sigActions[signal]; |
| 2778 | p->signalingPid = this->id; |
| 2779 | p->signalingUid = this->userId; |
| 2780 | BOXEDWINE_CONDITION_SIGNAL(p->lockCond); |
| 2781 | } |
| 2782 | } |
| 2783 | } |
| 2784 | } |
| 2785 | |
| 2786 | MappedFilePtr KProcess::getMappedFile(U32 key) { |
| 2787 | BOXEDWINE_CRITICAL_SECTION_WITH_MUTEX(mappedFilesMutex); |
no outgoing calls
no test coverage detected