in src/queue.c [5457:5482]
static void _dispatch_root_queue_drain_deferred_item(
dispatch_deferred_items_t ddi DISPATCH_PERF_MON_ARGS_PROTO);
static void _dispatch_root_queue_drain_deferred_wlh(
dispatch_deferred_items_t ddi DISPATCH_PERF_MON_ARGS_PROTO);
void
_dispatch_kevent_workqueue_init(void)
{
// Initialize kevent workqueue support
_dispatch_root_queues_init();
if (!_dispatch_kevent_workqueue_enabled) return;
dispatch_once_f(&_dispatch_mgr_sched_pred, NULL, _dispatch_mgr_sched_init);
qos_class_t qos = _dispatch_mgr_sched.qos;
int prio = _dispatch_mgr_sched.prio;
pthread_priority_t pp = 0;
if (qos) {
pp = _pthread_qos_class_encode(qos, 0, 0);
}
if (prio > _dispatch_mgr_sched.default_prio) {
pp = (pthread_priority_t)prio | _PTHREAD_PRIORITY_SCHED_PRI_FLAG;
}
if (pp) {
int r = _pthread_workqueue_set_event_manager_priority(pp);
(void)dispatch_assume_zero(r);
}
}