xref: /xnu-11417.101.15/tests/sched/sched_test_harness/sched_harness_impl.h (revision e3723e1f17661b24996789d8afc084c0c3303b26)
1 // Copyright (c) 2024 Apple Inc.  All rights reserved.
2 
3 #pragma once
4 
5 #include <stdint.h>
6 #include <stdbool.h>
7 
8 #include "sched_runqueue_harness.h"
9 #include "sched_migration_harness.h"
10 
11 extern void                  impl_init_runqueue(void);
12 extern struct thread_group  *impl_create_tg(int interactivity_score);
13 extern test_thread_t         impl_create_thread(int th_sched_bucket, struct thread_group *tg, int pri);
14 extern void                  impl_set_thread_sched_mode(test_thread_t thread, int mode);
15 extern void                  impl_set_thread_processor_bound(test_thread_t thread, int cpu_id);
16 extern void                  impl_cpu_set_thread_current(int cpu_id, test_thread_t thread);
17 extern void                  impl_cpu_clear_thread_current(int cpu_id);
18 extern void                  impl_cpu_enqueue_thread(int cpu_id, test_thread_t thread);
19 extern test_thread_t         impl_cpu_dequeue_thread(int cpu_id);
20 extern test_thread_t         impl_cpu_dequeue_thread_compare_current(int cpu_id);
21 extern bool                  impl_processor_csw_check(int cpu_id);
22 extern void                  impl_pop_tracepoint(uint64_t *trace_code, uint64_t *arg1, uint64_t *arg2, uint64_t *arg3, uint64_t *arg4);
23 extern bool                  impl_thread_should_yield(int cpu_id);
24 extern void                  impl_pop_ipi(int *cpu_id, test_ipi_type_t *ipi_type);
25 extern void                  impl_send_ipi(int cpu_id, test_thread_t thread, test_ipi_event_t event);
26 
27 /* Migration-specific functions */
28 extern void                  impl_init_migration_harness(test_hw_topology_t hw_topology);
29 extern void                  impl_set_tg_sched_bucket_preferred_pset(struct thread_group *tg, int sched_bucket, int cluster_id);
30 extern void                  impl_set_thread_cluster_bound(test_thread_t thread, int cluster_id);
31 extern int                   impl_choose_pset_for_thread(test_thread_t thread);
32 extern void                  impl_set_current_processor(int cpu_id);
33 extern void                  impl_set_pset_load_avg(int cluster_id, int QoS, uint64_t load_avg);
34 extern void                  impl_set_pset_derecommended(int cluster_id);
35 extern void                  impl_set_pset_recommended(int cluster_id);
36 extern uint32_t              impl_qos_max_parallelism(int qos, uint64_t options);
37