Lines Matching refs:task
28 static LE_STATUS HandleSignalEvent_(const LoopHandle loop, const TaskHandle task, uint32_t oper)
34 ssize_t s = read(GetSocketFd(task), &fdsi, sizeof(fdsi));
36 SignalTask *sigTask = (SignalTask *)task;
45 BaseTask *task = (BaseTask *)signalHandle;
46 DelTask((EventLoop *)loopHandle, task);
47 CloseTask(loopHandle, task);
48 close(task->taskId.fd);
65 static void DumpSignalTaskInfo_(const TaskHandle task)
67 INIT_CHECK(task != NULL, return);
68 BaseTask *baseTask = (BaseTask *)task;
86 SignalTask *task = (SignalTask *)CreateTask(loopHandle, sfd, &info, sizeof(SignalTask));
87 LE_CHECK(task != NULL, return LE_NO_MEMORY, "Failed to create task");
88 task->base.handleEvent = HandleSignalEvent_;
89 task->base.innerClose = HandleSignalTaskClose_;
90 task->base.dumpTaskInfo = DumpSignalTaskInfo_;
91 task->sigNumber = 0;
92 sigemptyset(&task->mask);
93 task->processSignal = processSignal;
94 *signalHandle = (SignalHandle)task;
102 SignalTask *task = (SignalTask *)signalHandle;
103 LE_LOGI("LE_AddSignal %d %d", signal, task->sigNumber);
104 if (sigismember(&task->mask, signal)) {
107 sigaddset(&task->mask, signal);
108 sigprocmask(SIG_BLOCK, &task->mask, NULL);
109 int sfd = signalfd(GetSocketFd(signalHandle), &task->mask, SFD_NONBLOCK | SFD_CLOEXEC);
111 if (task->sigNumber == 0) {
112 loop->addEvent(loop, (const BaseTask *)task, EVENT_READ);
114 loop->modEvent(loop, (const BaseTask *)task, EVENT_READ);
116 task->sigNumber++;
124 SignalTask *task = (SignalTask *)signalHandle;
125 LE_LOGI("LE_RemoveSignal %d %d", signal, task->sigNumber);
126 if (!sigismember(&task->mask, signal)) {
129 sigdelset(&task->mask, signal);
130 task->sigNumber--;
131 int sfd = signalfd(GetSocketFd(signalHandle), &task->mask, SFD_NONBLOCK | SFD_CLOEXEC);
133 if (task->sigNumber <= 0) {