Lines Matching refs:task
43 [this](CPUEUTask* task) { return this->onTaskDone(static_cast<SCPUEUTask*>(task)), true; });
85 // 2 Get current task's parent
86 auto parent = (ctx->task && ctx->task->type == ffrt_normal_task) ? ctx->task : DependenceManager::Root();
88 // 2.1 Create task ctx
89 SCPUEUTask* task = nullptr;
91 task = reinterpret_cast<SCPUEUTask*>(static_cast<uintptr_t>(
93 new (task)SCPUEUTask(attr, parent, ++parent->childNum, QoS());
95 FFRT_TRACE_BEGIN(("submit|" + std::to_string(task->gid)).c_str());
96 FFRT_LOGD("submit task[%lu], name[%s]", task->gid, task->label.c_str());
99 task->stackId = FFRTCollectAsyncStack();
104 FFRTTraceRecord::TaskSubmit<ffrt_normal_task>(qos, &(task->createTime), &(task->fromTid));
108 RemoveRepeatedDeps(task->in_handles, ins, outs, insNoDup, outsNoDup);
111 if (attr != nullptr && IsValidTimeout(task->gid, attr->timeout_)) {
112 task->isWatchdogEnable = true;
113 AddTaskToWatchdog(task->gid);
114 SendTimeoutWatchdog(task->gid, attr->timeout_, attr->delay_);
118 task->IncDeleteRef();
119 handle = static_cast<ffrt_task_handle_t>(task);
122 task->SetQos(qos);
126 task->IncChildRef();
131 // 3 Put the submitted task into Entity
134 MapSignature2Deps(task, insNoDup, outsNoDup, inDatas, outDatas);
139 i.first->AddConsumer(task, i.second);
146 o.first->AddProducer(task);
149 if (task->dataRefCnt.submitDep != 0) {
150 FFRT_BLOCK_TRACER(task->gid, dep);
157 task->notifyWorker_ = attr->notifyWorker_;
160 FFRT_LOGD("Submit completed, enter ready queue, task[%lu], name[%s]", task->gid, task->label.c_str());
161 task->UpdateState(TaskState::READY);
169 auto baseTask = (ctx->task && ctx->task->type == ffrt_normal_task) ? ctx->task : DependenceManager::Root();
170 auto task = static_cast<SCPUEUTask*>(baseTask);
172 if (ThreadWaitMode(task)) {
173 std::unique_lock<std::mutex> lck(task->mutex_);
174 task->MultiDepenceAdd(Denpence::CALL_DEPENCE);
175 FFRT_LOGD("onWait name:%s gid=%lu", task->label.c_str(), task->gid);
176 if (FFRT_UNLIKELY(LegacyMode(task))) {
177 task->blockType = BlockType::BLOCK_THREAD;
179 task->waitCond_.wait(lck, [task] { return task->childRefCnt == 0; });
183 auto childDepFun = [&](ffrt::CPUEUTask* task) -> bool {
184 auto sTask = static_cast<SCPUEUTask*>(task);
193 FFRT_BLOCK_TRACER(task->gid, chd);
204 auto baseTask = (ctx->task && ctx->task->type == ffrt_normal_task) ? ctx->task : DependenceManager::Root();
205 auto task = static_cast<SCPUEUTask*>(baseTask);
206 task->dataRefCnt.waitDep = 0;
218 // Find the VersionCtx of the parent task level
219 for (auto out : std::as_const(task->outs)) {
234 data->AddDataWaitTaskByThis(task);
238 if (ThreadWaitMode(task)) {
240 std::unique_lock<std::mutex> lck(task->mutex_);
241 task->MultiDepenceAdd(Denpence::DATA_DEPENCE);
242 FFRT_LOGD("onWait name:%s gid=%lu", task->label.c_str(), task->gid);
243 if (FFRT_UNLIKELY(LegacyMode(task))) {
244 task->blockType = BlockType::BLOCK_THREAD;
246 task->waitCond_.wait(lck, [task] { return task->dataRefCnt.waitDep == 0; });
250 auto pendDataDepFun = [&](ffrt::CPUEUTask* task) -> bool {
251 auto sTask = static_cast<SCPUEUTask*>(task);
262 FFRT_BLOCK_TRACER(task->gid, dat);
271 void SDependenceManager::onTaskDone(CPUEUTask* task)
273 auto sTask = static_cast<SCPUEUTask*>(task);
274 FFRTTraceRecord::TaskDone<ffrt_normal_task>(task->GetQos());
275 FFRTTraceRecord::TaskDone<ffrt_normal_task>(task->GetQos(), task);
296 if (task->isWatchdogEnable) {
297 RemoveTaskFromWatchdog(task->gid);
302 void SDependenceManager::MapSignature2Deps(SCPUEUTask* task, const std::vector<const void*>& inDeps,
312 for (auto parentOut : std::as_const(static_cast<SCPUEUTask*>(task->parent)->outs)) {
320 for (auto parentIn : std::as_const(static_cast<SCPUEUTask*>(task->parent)->ins)) {
328 version = en->VA2Ctx(signature, task);
337 for (auto parentOut : std::as_const(static_cast<SCPUEUTask*>(task->parent)->outs)) {
346 for (auto parentIn : std::as_const(static_cast<SCPUEUTask*>(task->parent)->ins)) {
353 version = en->VA2Ctx(signature, task);
361 FFRT_COND_DO_ERR((handle == nullptr), return ffrt_error_inval, "input ffrt task handle is invalid.");
363 ffrt::CPUEUTask *task = static_cast<ffrt::CPUEUTask*>(handle);
365 if (__atomic_compare_exchange_n(&task->skipped, &exp, ffrt::SkipStatus::SKIPPED, 0, __ATOMIC_ACQUIRE,
370 FFRT_LOGE("skip task [%lu] failed", task->gid);