Lines Matching refs:task

119 void QueueHandler::Submit(QueueTask* task)  in Submit()  argument
122 FFRT_COND_DO_ERR((task == nullptr), return, "input invalid, serial task is nullptr"); in Submit()
125 if (task->GetQos() == qos_inherit || task->GetQos() == qos_default) { in Submit()
126 task->SetQos(qos_); in Submit()
129 uint64_t gid = task->gid; in Submit()
131 FFRTTraceRecord::TaskSubmit(&(task->createTime), &(task->fromTid)); in Submit()
134 task->fromTid = ExecuteCtx::Cur()->tid; in Submit()
139 if (task->GetSchedTimeout() > 0) { in Submit()
140 AddSchedDeadline(task); in Submit()
146 int ret = queue_->Push(task); in Submit()
160 if (task->GetDelay() == 0) { in Submit()
162 TransferTask(task); in Submit()
164 … FFRT_LOGD("task [%llu] with delay [%llu] activate %s", gid, task->GetDelay(), name_.c_str()); in Submit()
166 queue_->Push(task); in Submit()
200 int QueueHandler::Cancel(QueueTask* task) in Cancel() argument
204 FFRT_COND_DO_ERR((task == nullptr), return INACTIVE, "input invalid, serial task is nullptr"); in Cancel()
206 if (task->GetSchedTimeout() > 0) { in Cancel()
207 RemoveSchedDeadline(task); in Cancel()
210 int ret = queue_->Remove(task); in Cancel()
212 FFRT_LOGD("cancel task[%llu] %s succ", task->gid, task->label.c_str()); in Cancel()
213 task->Notify(); in Cancel()
214 task->Destroy(); in Cancel()
216 …FFRT_LOGD("cancel task[%llu] %s failed, task may have been executed", task->gid, task->label.c_str… in Cancel()
224 for (QueueTask* task = inTask; task != nullptr; task = nextTask) { in Dispatch() local
226 SetTimeoutMonitor(task); in Dispatch()
227 FFRTFacade::GetQMInstance().UpdateQueueInfo(GetQueueId(), task->gid); in Dispatch()
228 execTaskId_.store(task->gid); in Dispatch()
231 FFRT_LOGD("run task [gid=%llu], queueId=%u", task->gid, GetQueueId()); in Dispatch()
232 auto f = reinterpret_cast<ffrt_function_header_t*>(task->func_storage); in Dispatch()
233 FFRT_SERIAL_QUEUE_TASK_EXECUTE_MARKER(task->gid); in Dispatch()
234 FFRTTraceRecord::TaskExecute(&(task->executeTime)); in Dispatch()
235 if (task->GetSchedTimeout() > 0) { in Dispatch()
236 RemoveSchedDeadline(task); in Dispatch()
246 FFRTTraceRecord::TaskDone<ffrt_queue_task>(task->GetQos(), task); in Dispatch()
250 …reinterpret_cast<EventHandlerAdapterQueue*>(queue_.get())->PushHistoryTask(task, triggerTime, comp… in Dispatch()
254 task->Notify(); in Dispatch()
257 nextTask = task->GetNextTask(); in Dispatch()
265 task->DecDeleteRef(); in Dispatch()
271 QueueTask* task = queue_->Pull(); in Deliver() local
272 if (task != nullptr) { in Deliver()
273 TransferTask(task); in Deliver()
279 void QueueHandler::TransferTask(QueueTask* task) in TransferTask() argument
281 auto entry = &task->fq_we; in TransferTask()
283 reinterpret_cast<EventHandlerAdapterQueue*>(queue_.get())->SetCurrentRunningTask(task); in TransferTask()
286 FFRT_READY_MARKER(task->gid); // ffrt queue task ready to enque in TransferTask()
287 if (!sch->InsertNode(&entry->node, task->GetQos())) { in TransferTask()
288 FFRT_LOGE("failed to insert task [%llu] into %s", task->gid, GetQueueId(), name_.c_str()); in TransferTask()
303 void QueueHandler::SetTimeoutMonitor(QueueTask* task) in SetTimeoutMonitor() argument
309 task->IncDeleteRef(); in SetTimeoutMonitor()
312 we->cb = ([this, task](WaitEntry* we) { in SetTimeoutMonitor()
313 if (!task->GetFinishStatus()) { in SetTimeoutMonitor()
314 RunTimeOutCallback(task); in SetTimeoutMonitor()
317 task->DecDeleteRef(); in SetTimeoutMonitor()
327 task->DecDeleteRef(); in SetTimeoutMonitor()
329 … FFRT_LOGW("failed to set watchdog for task gid=%llu in %s with timeout [%llu us] ", task->gid, in SetTimeoutMonitor()
335 FFRT_LOGD("set watchdog of task gid=%llu of %s succ", task->gid, name_.c_str()); in SetTimeoutMonitor()
338 void QueueHandler::RunTimeOutCallback(QueueTask* task) in RunTimeOutCallback() argument
348 … name_ << "], queueId:[" << GetQueueId() << "], serial task gid:[" << task->gid << "], task name:[" in RunTimeOutCallback()
349 << task->label << "], execution time exceeds[" << timeout_ << "] us"; in RunTimeOutCallback()
462 void QueueHandler::AddSchedDeadline(QueueTask* task) in AddSchedDeadline() argument
470 schedDeadline_.insert({task, task->GetSchedTimeout() + task->GetUptime()}); in AddSchedDeadline()
477 std::chrono::microseconds timeout(schedDeadline_[task]); in AddSchedDeadline()
485 void QueueHandler::RemoveSchedDeadline(QueueTask* task) in RemoveSchedDeadline() argument
488 schedDeadline_.erase(task); in RemoveSchedDeadline()