]> git.saurik.com Git - apple/xnu.git/blobdiff - osfmk/kern/telemetry.c
xnu-4570.1.46.tar.gz
[apple/xnu.git] / osfmk / kern / telemetry.c
index 2e292d1dd9580b92d269b11aa83ccadfc34f599b..68f2f7f9afc3b3c50241bfcb137badb64f7b5caf 100644 (file)
@@ -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;