typedef struct workq_threadreq_s {
union {
- struct priority_queue_entry tr_entry;
+ struct priority_queue_entry_sched tr_entry;
thread_t tr_thread;
};
uint16_t tr_count;
struct workq_uthread_head wq_thnewlist;
struct workq_uthread_head wq_thidlelist;
- struct priority_queue wq_overcommit_queue;
- struct priority_queue wq_constrained_queue;
- struct priority_queue wq_special_queue;
+ struct priority_queue_sched_max wq_overcommit_queue;
+ struct priority_queue_sched_max wq_constrained_queue;
+ struct priority_queue_sched_max wq_special_queue;
workq_threadreq_t wq_event_manager_threadreq;
};
void workq_kern_threadreq_redrive(struct proc *p, workq_kern_threadreq_flags_t flags);
+// This enum matches _pthread_set_flags in libpthread's qos_private.h
enum workq_set_self_flags {
- WORKQ_SET_SELF_QOS_FLAG = 0x1,
- WORKQ_SET_SELF_VOUCHER_FLAG = 0x2,
- WORKQ_SET_SELF_FIXEDPRIORITY_FLAG = 0x4,
- WORKQ_SET_SELF_TIMESHARE_FLAG = 0x8,
- WORKQ_SET_SELF_WQ_KEVENT_UNBIND = 0x10,
+ WORKQ_SET_SELF_QOS_FLAG = 0x01,
+ WORKQ_SET_SELF_VOUCHER_FLAG = 0x02,
+ WORKQ_SET_SELF_FIXEDPRIORITY_FLAG = 0x04,
+ WORKQ_SET_SELF_TIMESHARE_FLAG = 0x08,
+ WORKQ_SET_SELF_WQ_KEVENT_UNBIND = 0x10,
};
void workq_proc_suspended(struct proc *p);