]> git.saurik.com Git - apple/xnu.git/blobdiff - osfmk/kperf/kperf_kpc.h
xnu-3247.1.106.tar.gz
[apple/xnu.git] / osfmk / kperf / kperf_kpc.h
index 91df04c0fc13bbb6bf856c440edda2c0aba4ee27..d4dc8d814ed6acd1f6980d24699c0462ed151679 100644 (file)
 #include <kern/kpc.h> /* KPC_MAX_COUNTERS */
 #endif
 
+/* controls whether a context-switch handler is invoked */
+extern unsigned kperf_kpc_cswitch_set;
+
+void kperf_kpc_switch_context(thread_t old, thread_t new);
+void kperf_kpc_cswitch_callback_update(void);
+
+/* for osfmk/platform/pcb.c context switches */
+static inline void
+kperf_kpc_cswitch(thread_t old, thread_t new)
+{
+       if (!kperf_kpc_cswitch_set) {
+               return;
+       }
+
+       kperf_kpc_switch_context(old, new);
+}
+
 /* KPC sample data */
 struct kpcdata
 {
@@ -44,8 +61,9 @@ struct kpcdata
        uint64_t configv[KPC_MAX_COUNTERS];
 };
 
-
-void kperf_kpc_cpu_sample( struct kpcdata *, int );
-void kperf_kpc_cpu_log( struct kpcdata * );
+void kperf_kpc_thread_sample(struct kpcdata *, int);
+void kperf_kpc_cpu_sample(struct kpcdata *, int);
+void kperf_kpc_thread_log(const struct kpcdata *);
+void kperf_kpc_cpu_log(const struct kpcdata *);
 
 #endif /* __KPERF_KPC_H__ */