*/
if (!PE_parse_boot_argn("telemetry_sample_all_tasks", &telemetry_sample_all_tasks, sizeof(telemetry_sample_all_tasks))) {
+#if CONFIG_EMBEDDED && !(DEVELOPMENT || DEBUG)
+ telemetry_sample_all_tasks = FALSE;
+#else
telemetry_sample_all_tasks = TRUE;
+#endif /* CONFIG_EMBEDDED && !(DEVELOPMENT || DEBUG) */
}
telemetry_needs_record = FALSE;
thread_ast_set(thread, ast_bits);
- ast_propagate(thread->ast);
+ ast_propagate(thread);
}
void compute_telemetry(void *arg __unused)
ipc_port_release_send(user_port);
}
-void telemetry_ast(thread_t thread, boolean_t interrupted_userspace, boolean_t io_telemetry)
+void telemetry_ast(thread_t thread, ast_t reasons)
{
+ assert((reasons & AST_TELEMETRY_ALL) != AST_TELEMETRY_ALL); /* only one is valid at a time */
+
+ boolean_t io_telemetry = (reasons & AST_TELEMETRY_IO) ? TRUE : FALSE;
+ boolean_t interrupted_userspace = (reasons & AST_TELEMETRY_USER) ? TRUE : FALSE;
+
uint8_t microsnapshot_flags = kInterruptRecord;
- if (io_telemetry == TRUE) {
+
+ if (io_telemetry == TRUE)
microsnapshot_flags = kIORecord;
- }
if (interrupted_userspace)
microsnapshot_flags |= kUserMode;