MCPcopy Create free account
hub / github.com/apache/trafficserver / TSContScheduleEveryOnEntirePool

Function TSContScheduleEveryOnEntirePool

src/api/InkAPI.cc:3564–3604  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3562}
3563
3564std::vector<TSAction>
3565TSContScheduleEveryOnEntirePool(TSCont contp, TSHRTime every, TSThreadPool tp)
3566{
3567 sdk_assert(sdk_sanity_check_iocore_structure(contp) == TS_SUCCESS);
3568
3569 /* ensure we are on a EThread */
3570 sdk_assert(sdk_sanity_check_null_ptr((void *)this_ethread()) == TS_SUCCESS);
3571
3572 sdk_assert(every != 0);
3573
3574 INKContInternal *i = reinterpret_cast<INKContInternal *>(contp);
3575
3576 // This is to allow the continuation to be scheduled on multiple threads
3577 sdk_assert(i->mutex == nullptr);
3578
3579 EventType etype;
3580
3581 switch (tp) {
3582 case TS_THREAD_POOL_NET:
3583 etype = ET_NET;
3584 break;
3585 case TS_THREAD_POOL_TASK:
3586 etype = ET_TASK;
3587 break;
3588 case TS_THREAD_POOL_DNS:
3589 etype = ET_DNS;
3590 break;
3591 case TS_THREAD_POOL_UDP:
3592 etype = ET_UDP;
3593 break;
3594 default:
3595 etype = ET_TASK;
3596 break;
3597 }
3598
3599 if (ink_atomic_increment(static_cast<int *>(&i->m_event_count), eventProcessor.thread_group[etype]._count) < 0) {
3600 ink_assert(!"not reached");
3601 }
3602
3603 return eventProcessor.schedule_entire(i, 0, HRTIME_MSECONDS(every), etype, EVENT_INTERVAL);
3604}
3605
3606TSReturnCode
3607TSContThreadAffinitySet(TSCont contp, TSEventThread ethread)

Callers 1

Calls 5

this_ethreadFunction · 0.85
ink_atomic_incrementFunction · 0.85
schedule_entireMethod · 0.80

Tested by

no test coverage detected