@@ -1076,6 +1076,30 @@ impl PerfettoTracer {
10761076 tracer. write_word ( pid as u64 ) ;
10771077 tracer. write_word ( 1u64 ) ;
10781078
1079+ // Kernel object record for process: type=7, obj_type=1 (ZX_OBJ_TYPE_PROCESS), no args
1080+ let process_name_ref = tracer. intern_string ( "ruby" ) ;
1081+ let ko_process_header: u64 = 7u64
1082+ | ( 2u64 << 4 ) // size = 2 words
1083+ | ( 1u64 << 16 ) // obj_type = ZX_OBJ_TYPE_PROCESS
1084+ | ( ( process_name_ref as u64 ) << 24 ) ; // name
1085+ tracer. write_word ( ko_process_header) ;
1086+ tracer. write_word ( pid as u64 ) ; // koid = process id
1087+
1088+ // Kernel object record for thread: type=7, obj_type=2 (ZX_OBJ_TYPE_THREAD), 1 arg
1089+ let thread_name_ref = tracer. intern_string ( "main" ) ;
1090+ let process_arg_name_ref = tracer. intern_string ( "process" ) ;
1091+ let ko_thread_header: u64 = 7u64
1092+ | ( 4u64 << 4 ) // size = 4 words (header + koid + 2-word arg)
1093+ | ( 2u64 << 16 ) // obj_type = ZX_OBJ_TYPE_THREAD
1094+ | ( ( thread_name_ref as u64 ) << 24 ) // name
1095+ | ( 1u64 << 40 ) ; // n_args = 1
1096+ tracer. write_word ( ko_thread_header) ;
1097+ tracer. write_word ( 1u64 ) ; // koid = thread id (matches thread record)
1098+ // Koid argument: type=8, size=2, name="process", value=pid
1099+ let arg_header: u64 = 8u64 | ( 2u64 << 4 ) | ( ( process_arg_name_ref as u64 ) << 16 ) ;
1100+ tracer. write_word ( arg_header) ;
1101+ tracer. write_word ( pid as u64 ) ;
1102+
10791103 // Pre-intern common strings
10801104 tracer. intern_string ( "side_exit" ) ;
10811105 tracer. intern_string ( "compile" ) ;
0 commit comments