X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/4d15aeb193b2c68f1d38666c317f8d3734f5f083..5ba3f43ea354af8ad55bea84372a2bc834d8757c:/osfmk/kern/telemetry.c diff --git a/osfmk/kern/telemetry.c b/osfmk/kern/telemetry.c index 2e292d1dd..68f2f7f9a 100644 --- a/osfmk/kern/telemetry.c +++ b/osfmk/kern/telemetry.c @@ -161,7 +161,11 @@ void telemetry_init(void) */ 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) */ } @@ -302,7 +306,7 @@ void telemetry_mark_curthread(boolean_t interrupted_userspace) telemetry_needs_record = FALSE; thread_ast_set(thread, ast_bits); - ast_propagate(thread->ast); + ast_propagate(thread); } void compute_telemetry(void *arg __unused) @@ -334,12 +338,17 @@ telemetry_notify_user(void) 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;