Lines Matching refs:fiberContext
154 FiberContext *fiberContext = task.awaitingFiber; in RequestFiberContext() local
155 if (fiberContext) in RequestFiberContext()
158 return fiberContext; in RequestFiberContext()
163 fiberContext = nullptr; in RequestFiberContext()
169 res = standartFibersAvailable.TryPop(fiberContext); in RequestFiberContext()
174 res = extendedFibersAvailable.TryPop(fiberContext); in RequestFiberContext()
182 …MT_ASSERT(fiberContext != nullptr, "Can't get more fibers. Too many tasks in flight simultaneously… in RequestFiberContext()
184 fiberContext->currentTask = task.desc; in RequestFiberContext()
185 fiberContext->currentGroup = task.group; in RequestFiberContext()
186 fiberContext->parentFiber = task.parentFiber; in RequestFiberContext()
187 fiberContext->stackRequirements = stackRequirements; in RequestFiberContext()
188 return fiberContext; in RequestFiberContext()
191 void TaskScheduler::ReleaseFiberContext(FiberContext*&& fiberContext) in ReleaseFiberContext() argument
193 MT_ASSERT(fiberContext, "Can't release nullptr Fiber. fiberContext is nullptr"); in ReleaseFiberContext()
195 MT::StackRequirements::Type stackRequirements = fiberContext->stackRequirements; in ReleaseFiberContext()
196 fiberContext->Reset(); in ReleaseFiberContext()
198 MT_ASSERT(fiberContext != nullptr, "Fiber context can't be nullptr"); in ReleaseFiberContext()
205 res = standartFibersAvailable.TryPush(std::move(fiberContext)); in ReleaseFiberContext()
208 res = extendedFibersAvailable.TryPush(std::move(fiberContext)); in ReleaseFiberContext()
218 …ext* TaskScheduler::ExecuteTask(internal::ThreadContext& threadContext, FiberContext* fiberContext) in ExecuteTask() argument
222 MT_ASSERT(fiberContext, "Invalid fiber context"); in ExecuteTask()
223 MT_ASSERT(fiberContext->currentTask.IsValid(), "Invalid task"); in ExecuteTask()
226 fiberContext->SetThreadContext(&threadContext); in ExecuteTask()
229 fiberContext->SetStatus(FiberTaskStatus::RUNNED); in ExecuteTask()
231 …MT_ASSERT(fiberContext->GetThreadContext()->threadId.IsEqual(ThreadId::Self()), "Thread context sa… in ExecuteTask()
233 const void* poolUserData = fiberContext->currentTask.userData; in ExecuteTask()
234 TPoolTaskDestroy poolDestroyFunc = fiberContext->currentTask.poolDestroyFunc; in ExecuteTask()
241 Fiber::SwitchTo(threadContext.schedulerFiber, fiberContext->fiber); in ExecuteTask()
248 FiberTaskStatus::Type taskStatus = fiberContext->GetStatus(); in ExecuteTask()
257 TaskGroup taskGroup = fiberContext->currentGroup; in ExecuteTask()
266 fiberContext->currentGroup = TaskGroup::INVALID; in ExecuteTask()
274 FiberContext* parentFiberContext = fiberContext->parentFiber; in ExecuteTask()
315 FiberContext& fiberContext = *(FiberContext*)(userData); in FiberMain() local
318 MT_ASSERT(fiberContext.currentTask.IsValid(), "Invalid task in fiber context"); in FiberMain()
319 MT_ASSERT(fiberContext.GetThreadContext(), "Invalid thread context"); in FiberMain()
320 …MT_ASSERT(fiberContext.GetThreadContext()->threadId.IsEqual(ThreadId::Self()), "Thread context san… in FiberMain()
323 fiberContext.fiber.SetName( MT_SYSTEM_TASK_FIBER_NAME ); in FiberMain()
324 …fiberContext.GetThreadContext()->NotifyTaskExecuteStateChanged( fiberContext.currentTask.debugColo… in FiberMain()
327 fiberContext.currentTask.taskFunc( fiberContext, fiberContext.currentTask.userData ); in FiberMain()
328 fiberContext.SetStatus(FiberTaskStatus::FINISHED); in FiberMain()
331 fiberContext.fiber.SetName( MT_SYSTEM_TASK_FIBER_NAME ); in FiberMain()
332 …fiberContext.GetThreadContext()->NotifyTaskExecuteStateChanged( fiberContext.currentTask.debugColo… in FiberMain()
335 Fiber::SwitchTo(fiberContext.fiber, fiberContext.GetThreadContext()->schedulerFiber); in FiberMain()
548 FiberContext* fiberContext = context.taskScheduler->RequestFiberContext(task); in SchedulerFiberProcessTask() local
549 MT_ASSERT(fiberContext, "Can't get execution context from pool"); in SchedulerFiberProcessTask()
550 MT_ASSERT(fiberContext->currentTask.IsValid(), "Sanity check failed"); in SchedulerFiberProcessTask()
551 MT_ASSERT(fiberContext->stackRequirements == task.desc.stackRequirements, "Sanity check failed"); in SchedulerFiberProcessTask()
553 while(fiberContext) in SchedulerFiberProcessTask()
563 fiberContext->childrenFibersCount.IncFetch(); in SchedulerFiberProcessTask()
565 FiberContext* parentFiber = ExecuteTask(context, fiberContext); in SchedulerFiberProcessTask()
567 FiberTaskStatus::Type taskStatus = fiberContext->GetStatus(); in SchedulerFiberProcessTask()
570 int childrenFibersCount = fiberContext->childrenFibersCount.DecFetch(); in SchedulerFiberProcessTask()
576 context.taskScheduler->ReleaseFiberContext(std::move(fiberContext)); in SchedulerFiberProcessTask()
579 fiberContext = parentFiber; in SchedulerFiberProcessTask()
601 FiberContext* yieldedTask = fiberContext; in SchedulerFiberProcessTask()