add Trusty FTrace Events

Bug: 179312495
Change-Id: I59d7f04b715b18fe61fcf50a058a482182f621d6
diff --git a/Android.bp b/Android.bp
index 4f9a16ab..917009f 100644
--- a/Android.bp
+++ b/Android.bp
@@ -4790,6 +4790,7 @@
         "protos/perfetto/trace/ftrace/tcp.proto",
         "protos/perfetto/trace/ftrace/test_bundle_wrapper.proto",
         "protos/perfetto/trace/ftrace/thermal.proto",
+        "protos/perfetto/trace/ftrace/trusty.proto",
         "protos/perfetto/trace/ftrace/ufs.proto",
         "protos/perfetto/trace/ftrace/v4l2.proto",
         "protos/perfetto/trace/ftrace/virtio_video.proto",
@@ -5025,6 +5026,7 @@
         "protos/perfetto/trace/ftrace/tcp.proto",
         "protos/perfetto/trace/ftrace/test_bundle_wrapper.proto",
         "protos/perfetto/trace/ftrace/thermal.proto",
+        "protos/perfetto/trace/ftrace/trusty.proto",
         "protos/perfetto/trace/ftrace/ufs.proto",
         "protos/perfetto/trace/ftrace/v4l2.proto",
         "protos/perfetto/trace/ftrace/virtio_video.proto",
@@ -5092,6 +5094,7 @@
         "external/perfetto/protos/perfetto/trace/ftrace/tcp.gen.cc",
         "external/perfetto/protos/perfetto/trace/ftrace/test_bundle_wrapper.gen.cc",
         "external/perfetto/protos/perfetto/trace/ftrace/thermal.gen.cc",
+        "external/perfetto/protos/perfetto/trace/ftrace/trusty.gen.cc",
         "external/perfetto/protos/perfetto/trace/ftrace/ufs.gen.cc",
         "external/perfetto/protos/perfetto/trace/ftrace/v4l2.gen.cc",
         "external/perfetto/protos/perfetto/trace/ftrace/virtio_video.gen.cc",
@@ -5159,6 +5162,7 @@
         "protos/perfetto/trace/ftrace/tcp.proto",
         "protos/perfetto/trace/ftrace/test_bundle_wrapper.proto",
         "protos/perfetto/trace/ftrace/thermal.proto",
+        "protos/perfetto/trace/ftrace/trusty.proto",
         "protos/perfetto/trace/ftrace/ufs.proto",
         "protos/perfetto/trace/ftrace/v4l2.proto",
         "protos/perfetto/trace/ftrace/virtio_video.proto",
@@ -5226,6 +5230,7 @@
         "external/perfetto/protos/perfetto/trace/ftrace/tcp.gen.h",
         "external/perfetto/protos/perfetto/trace/ftrace/test_bundle_wrapper.gen.h",
         "external/perfetto/protos/perfetto/trace/ftrace/thermal.gen.h",
+        "external/perfetto/protos/perfetto/trace/ftrace/trusty.gen.h",
         "external/perfetto/protos/perfetto/trace/ftrace/ufs.gen.h",
         "external/perfetto/protos/perfetto/trace/ftrace/v4l2.gen.h",
         "external/perfetto/protos/perfetto/trace/ftrace/virtio_video.gen.h",
@@ -5297,6 +5302,7 @@
         "protos/perfetto/trace/ftrace/tcp.proto",
         "protos/perfetto/trace/ftrace/test_bundle_wrapper.proto",
         "protos/perfetto/trace/ftrace/thermal.proto",
+        "protos/perfetto/trace/ftrace/trusty.proto",
         "protos/perfetto/trace/ftrace/ufs.proto",
         "protos/perfetto/trace/ftrace/v4l2.proto",
         "protos/perfetto/trace/ftrace/virtio_video.proto",
@@ -5363,6 +5369,7 @@
         "external/perfetto/protos/perfetto/trace/ftrace/tcp.pb.cc",
         "external/perfetto/protos/perfetto/trace/ftrace/test_bundle_wrapper.pb.cc",
         "external/perfetto/protos/perfetto/trace/ftrace/thermal.pb.cc",
+        "external/perfetto/protos/perfetto/trace/ftrace/trusty.pb.cc",
         "external/perfetto/protos/perfetto/trace/ftrace/ufs.pb.cc",
         "external/perfetto/protos/perfetto/trace/ftrace/v4l2.pb.cc",
         "external/perfetto/protos/perfetto/trace/ftrace/virtio_video.pb.cc",
@@ -5430,6 +5437,7 @@
         "protos/perfetto/trace/ftrace/tcp.proto",
         "protos/perfetto/trace/ftrace/test_bundle_wrapper.proto",
         "protos/perfetto/trace/ftrace/thermal.proto",
+        "protos/perfetto/trace/ftrace/trusty.proto",
         "protos/perfetto/trace/ftrace/ufs.proto",
         "protos/perfetto/trace/ftrace/v4l2.proto",
         "protos/perfetto/trace/ftrace/virtio_video.proto",
@@ -5496,6 +5504,7 @@
         "external/perfetto/protos/perfetto/trace/ftrace/tcp.pb.h",
         "external/perfetto/protos/perfetto/trace/ftrace/test_bundle_wrapper.pb.h",
         "external/perfetto/protos/perfetto/trace/ftrace/thermal.pb.h",
+        "external/perfetto/protos/perfetto/trace/ftrace/trusty.pb.h",
         "external/perfetto/protos/perfetto/trace/ftrace/ufs.pb.h",
         "external/perfetto/protos/perfetto/trace/ftrace/v4l2.pb.h",
         "external/perfetto/protos/perfetto/trace/ftrace/virtio_video.pb.h",
@@ -5567,6 +5576,7 @@
         "protos/perfetto/trace/ftrace/tcp.proto",
         "protos/perfetto/trace/ftrace/test_bundle_wrapper.proto",
         "protos/perfetto/trace/ftrace/thermal.proto",
+        "protos/perfetto/trace/ftrace/trusty.proto",
         "protos/perfetto/trace/ftrace/ufs.proto",
         "protos/perfetto/trace/ftrace/v4l2.proto",
         "protos/perfetto/trace/ftrace/virtio_video.proto",
@@ -5634,6 +5644,7 @@
         "external/perfetto/protos/perfetto/trace/ftrace/tcp.pbzero.cc",
         "external/perfetto/protos/perfetto/trace/ftrace/test_bundle_wrapper.pbzero.cc",
         "external/perfetto/protos/perfetto/trace/ftrace/thermal.pbzero.cc",
+        "external/perfetto/protos/perfetto/trace/ftrace/trusty.pbzero.cc",
         "external/perfetto/protos/perfetto/trace/ftrace/ufs.pbzero.cc",
         "external/perfetto/protos/perfetto/trace/ftrace/v4l2.pbzero.cc",
         "external/perfetto/protos/perfetto/trace/ftrace/virtio_video.pbzero.cc",
@@ -5701,6 +5712,7 @@
         "protos/perfetto/trace/ftrace/tcp.proto",
         "protos/perfetto/trace/ftrace/test_bundle_wrapper.proto",
         "protos/perfetto/trace/ftrace/thermal.proto",
+        "protos/perfetto/trace/ftrace/trusty.proto",
         "protos/perfetto/trace/ftrace/ufs.proto",
         "protos/perfetto/trace/ftrace/v4l2.proto",
         "protos/perfetto/trace/ftrace/virtio_video.proto",
@@ -5768,6 +5780,7 @@
         "external/perfetto/protos/perfetto/trace/ftrace/tcp.pbzero.h",
         "external/perfetto/protos/perfetto/trace/ftrace/test_bundle_wrapper.pbzero.h",
         "external/perfetto/protos/perfetto/trace/ftrace/thermal.pbzero.h",
+        "external/perfetto/protos/perfetto/trace/ftrace/trusty.pbzero.h",
         "external/perfetto/protos/perfetto/trace/ftrace/ufs.pbzero.h",
         "external/perfetto/protos/perfetto/trace/ftrace/v4l2.pbzero.h",
         "external/perfetto/protos/perfetto/trace/ftrace/virtio_video.pbzero.h",
@@ -10649,6 +10662,7 @@
         "protos/perfetto/trace/ftrace/tcp.proto",
         "protos/perfetto/trace/ftrace/test_bundle_wrapper.proto",
         "protos/perfetto/trace/ftrace/thermal.proto",
+        "protos/perfetto/trace/ftrace/trusty.proto",
         "protos/perfetto/trace/ftrace/ufs.proto",
         "protos/perfetto/trace/ftrace/v4l2.proto",
         "protos/perfetto/trace/ftrace/virtio_video.proto",
diff --git a/BUILD b/BUILD
index d81c6ee..ed8c442 100644
--- a/BUILD
+++ b/BUILD
@@ -3440,6 +3440,7 @@
         "protos/perfetto/trace/ftrace/tcp.proto",
         "protos/perfetto/trace/ftrace/test_bundle_wrapper.proto",
         "protos/perfetto/trace/ftrace/thermal.proto",
+        "protos/perfetto/trace/ftrace/trusty.proto",
         "protos/perfetto/trace/ftrace/ufs.proto",
         "protos/perfetto/trace/ftrace/v4l2.proto",
         "protos/perfetto/trace/ftrace/virtio_video.proto",
diff --git a/protos/perfetto/trace/ftrace/all_protos.gni b/protos/perfetto/trace/ftrace/all_protos.gni
index efb0f9a..5b7c738 100644
--- a/protos/perfetto/trace/ftrace/all_protos.gni
+++ b/protos/perfetto/trace/ftrace/all_protos.gni
@@ -70,6 +70,7 @@
   "task.proto",
   "tcp.proto",
   "thermal.proto",
+  "trusty.proto",
   "ufs.proto",
   "v4l2.proto",
   "virtio_video.proto",
diff --git a/protos/perfetto/trace/ftrace/ftrace_event.proto b/protos/perfetto/trace/ftrace/ftrace_event.proto
index b13f37f..d3f2ae4 100644
--- a/protos/perfetto/trace/ftrace/ftrace_event.proto
+++ b/protos/perfetto/trace/ftrace/ftrace_event.proto
@@ -70,6 +70,7 @@
 import "protos/perfetto/trace/ftrace/task.proto";
 import "protos/perfetto/trace/ftrace/tcp.proto";
 import "protos/perfetto/trace/ftrace/thermal.proto";
+import "protos/perfetto/trace/ftrace/trusty.proto";
 import "protos/perfetto/trace/ftrace/ufs.proto";
 import "protos/perfetto/trace/ftrace/v4l2.proto";
 import "protos/perfetto/trace/ftrace/virtio_video.proto";
@@ -550,5 +551,25 @@
         442;
     MmShrinkSlabStartFtraceEvent mm_shrink_slab_start = 443;
     MmShrinkSlabEndFtraceEvent mm_shrink_slab_end = 444;
+    TrustySmcFtraceEvent trusty_smc = 445;
+    TrustySmcDoneFtraceEvent trusty_smc_done = 446;
+    TrustyStdCall32FtraceEvent trusty_std_call32 = 447;
+    TrustyStdCall32DoneFtraceEvent trusty_std_call32_done = 448;
+    TrustyShareMemoryFtraceEvent trusty_share_memory = 449;
+    TrustyShareMemoryDoneFtraceEvent trusty_share_memory_done = 450;
+    TrustyReclaimMemoryFtraceEvent trusty_reclaim_memory = 451;
+    TrustyReclaimMemoryDoneFtraceEvent trusty_reclaim_memory_done = 452;
+    TrustyIrqFtraceEvent trusty_irq = 453;
+    TrustyIpcHandleEventFtraceEvent trusty_ipc_handle_event = 454;
+    TrustyIpcConnectFtraceEvent trusty_ipc_connect = 455;
+    TrustyIpcConnectEndFtraceEvent trusty_ipc_connect_end = 456;
+    TrustyIpcWriteFtraceEvent trusty_ipc_write = 457;
+    TrustyIpcPollFtraceEvent trusty_ipc_poll = 458;
+    TrustyIpcPollEndFtraceEvent trusty_ipc_poll_end = 459;
+    TrustyIpcReadFtraceEvent trusty_ipc_read = 460;
+    TrustyIpcReadEndFtraceEvent trusty_ipc_read_end = 461;
+    TrustyIpcRxFtraceEvent trusty_ipc_rx = 462;
+    TrustyIpcTxFtraceEvent trusty_ipc_tx = 463;
+    TrustyEnqueueNopFtraceEvent trusty_enqueue_nop = 464;
   }
 }
diff --git a/protos/perfetto/trace/ftrace/trusty.proto b/protos/perfetto/trace/ftrace/trusty.proto
new file mode 100644
index 0000000..d3739ce
--- /dev/null
+++ b/protos/perfetto/trace/ftrace/trusty.proto
@@ -0,0 +1,98 @@
+// Autogenerated by:
+// ../../src/tools/ftrace_proto_gen/ftrace_proto_gen.cc
+// Do not edit.
+
+syntax = "proto2";
+package perfetto.protos;
+
+message TrustySmcFtraceEvent {
+  optional uint64 r0 = 1;
+  optional uint64 r1 = 2;
+  optional uint64 r2 = 3;
+  optional uint64 r3 = 4;
+}
+message TrustySmcDoneFtraceEvent {
+  optional uint64 ret = 1;
+}
+message TrustyStdCall32FtraceEvent {
+  optional uint64 r0 = 1;
+  optional uint64 r1 = 2;
+  optional uint64 r2 = 3;
+  optional uint64 r3 = 4;
+}
+message TrustyStdCall32DoneFtraceEvent {
+  optional int64 ret = 1;
+}
+message TrustyShareMemoryFtraceEvent {
+  optional uint64 len = 1;
+  optional uint32 lend = 2;
+  optional uint32 nents = 3;
+}
+message TrustyShareMemoryDoneFtraceEvent {
+  optional uint64 handle = 1;
+  optional uint64 len = 2;
+  optional uint32 lend = 3;
+  optional uint32 nents = 4;
+  optional int32 ret = 5;
+}
+message TrustyReclaimMemoryFtraceEvent {
+  optional uint64 id = 1;
+}
+message TrustyReclaimMemoryDoneFtraceEvent {
+  optional uint64 id = 1;
+  optional int32 ret = 2;
+}
+message TrustyIrqFtraceEvent {
+  optional int32 irq = 1;
+}
+message TrustyIpcHandleEventFtraceEvent {
+  optional uint32 chan = 1;
+  optional uint32 event_id = 2;
+  optional string srv_name = 3;
+}
+message TrustyIpcConnectFtraceEvent {
+  optional uint32 chan = 1;
+  optional string port = 2;
+  optional int32 state = 3;
+}
+message TrustyIpcConnectEndFtraceEvent {
+  optional uint32 chan = 1;
+  optional int32 err = 2;
+  optional int32 state = 3;
+}
+message TrustyIpcWriteFtraceEvent {
+  optional uint64 buf_id = 1;
+  optional uint32 chan = 2;
+  optional int32 kind_shm = 3;
+  optional int32 len_or_err = 4;
+  optional uint64 shm_cnt = 5;
+  optional string srv_name = 6;
+}
+message TrustyIpcPollFtraceEvent {
+  optional uint32 chan = 1;
+  optional uint32 poll_mask = 2;
+  optional string srv_name = 3;
+}
+message TrustyIpcPollEndFtraceEvent {}
+message TrustyIpcReadFtraceEvent {
+  optional uint32 chan = 1;
+  optional string srv_name = 2;
+}
+message TrustyIpcReadEndFtraceEvent {
+  optional uint64 buf_id = 1;
+  optional uint32 chan = 2;
+  optional int32 len_or_err = 3;
+  optional uint64 shm_cnt = 4;
+  optional string srv_name = 5;
+}
+message TrustyIpcRxFtraceEvent {
+  optional uint64 buf_id = 1;
+  optional uint32 chan = 2;
+  optional string srv_name = 3;
+}
+message TrustyIpcTxFtraceEvent {}
+message TrustyEnqueueNopFtraceEvent {
+  optional uint32 arg1 = 1;
+  optional uint32 arg2 = 2;
+  optional uint32 arg3 = 3;
+}
diff --git a/protos/perfetto/trace/perfetto_trace.proto b/protos/perfetto/trace/perfetto_trace.proto
index 016c5b8..377e62f 100644
--- a/protos/perfetto/trace/perfetto_trace.proto
+++ b/protos/perfetto/trace/perfetto_trace.proto
@@ -6940,6 +6940,102 @@
 
 // End of protos/perfetto/trace/ftrace/thermal.proto
 
+// Begin of protos/perfetto/trace/ftrace/trusty.proto
+
+message TrustySmcFtraceEvent {
+  optional uint64 r0 = 1;
+  optional uint64 r1 = 2;
+  optional uint64 r2 = 3;
+  optional uint64 r3 = 4;
+}
+message TrustySmcDoneFtraceEvent {
+  optional uint64 ret = 1;
+}
+message TrustyStdCall32FtraceEvent {
+  optional uint64 r0 = 1;
+  optional uint64 r1 = 2;
+  optional uint64 r2 = 3;
+  optional uint64 r3 = 4;
+}
+message TrustyStdCall32DoneFtraceEvent {
+  optional int64 ret = 1;
+}
+message TrustyShareMemoryFtraceEvent {
+  optional uint64 len = 1;
+  optional uint32 lend = 2;
+  optional uint32 nents = 3;
+}
+message TrustyShareMemoryDoneFtraceEvent {
+  optional uint64 handle = 1;
+  optional uint64 len = 2;
+  optional uint32 lend = 3;
+  optional uint32 nents = 4;
+  optional int32 ret = 5;
+}
+message TrustyReclaimMemoryFtraceEvent {
+  optional uint64 id = 1;
+}
+message TrustyReclaimMemoryDoneFtraceEvent {
+  optional uint64 id = 1;
+  optional int32 ret = 2;
+}
+message TrustyIrqFtraceEvent {
+  optional int32 irq = 1;
+}
+message TrustyIpcHandleEventFtraceEvent {
+  optional uint32 chan = 1;
+  optional uint32 event_id = 2;
+  optional string srv_name = 3;
+}
+message TrustyIpcConnectFtraceEvent {
+  optional uint32 chan = 1;
+  optional string port = 2;
+  optional int32 state = 3;
+}
+message TrustyIpcConnectEndFtraceEvent {
+  optional uint32 chan = 1;
+  optional int32 err = 2;
+  optional int32 state = 3;
+}
+message TrustyIpcWriteFtraceEvent {
+  optional uint64 buf_id = 1;
+  optional uint32 chan = 2;
+  optional int32 kind_shm = 3;
+  optional int32 len_or_err = 4;
+  optional uint64 shm_cnt = 5;
+  optional string srv_name = 6;
+}
+message TrustyIpcPollFtraceEvent {
+  optional uint32 chan = 1;
+  optional uint32 poll_mask = 2;
+  optional string srv_name = 3;
+}
+message TrustyIpcPollEndFtraceEvent {}
+message TrustyIpcReadFtraceEvent {
+  optional uint32 chan = 1;
+  optional string srv_name = 2;
+}
+message TrustyIpcReadEndFtraceEvent {
+  optional uint64 buf_id = 1;
+  optional uint32 chan = 2;
+  optional int32 len_or_err = 3;
+  optional uint64 shm_cnt = 4;
+  optional string srv_name = 5;
+}
+message TrustyIpcRxFtraceEvent {
+  optional uint64 buf_id = 1;
+  optional uint32 chan = 2;
+  optional string srv_name = 3;
+}
+message TrustyIpcTxFtraceEvent {}
+message TrustyEnqueueNopFtraceEvent {
+  optional uint32 arg1 = 1;
+  optional uint32 arg2 = 2;
+  optional uint32 arg3 = 3;
+}
+
+// End of protos/perfetto/trace/ftrace/trusty.proto
+
 // Begin of protos/perfetto/trace/ftrace/ufs.proto
 
 message UfshcdCommandFtraceEvent {
@@ -7646,6 +7742,26 @@
         442;
     MmShrinkSlabStartFtraceEvent mm_shrink_slab_start = 443;
     MmShrinkSlabEndFtraceEvent mm_shrink_slab_end = 444;
+    TrustySmcFtraceEvent trusty_smc = 445;
+    TrustySmcDoneFtraceEvent trusty_smc_done = 446;
+    TrustyStdCall32FtraceEvent trusty_std_call32 = 447;
+    TrustyStdCall32DoneFtraceEvent trusty_std_call32_done = 448;
+    TrustyShareMemoryFtraceEvent trusty_share_memory = 449;
+    TrustyShareMemoryDoneFtraceEvent trusty_share_memory_done = 450;
+    TrustyReclaimMemoryFtraceEvent trusty_reclaim_memory = 451;
+    TrustyReclaimMemoryDoneFtraceEvent trusty_reclaim_memory_done = 452;
+    TrustyIrqFtraceEvent trusty_irq = 453;
+    TrustyIpcHandleEventFtraceEvent trusty_ipc_handle_event = 454;
+    TrustyIpcConnectFtraceEvent trusty_ipc_connect = 455;
+    TrustyIpcConnectEndFtraceEvent trusty_ipc_connect_end = 456;
+    TrustyIpcWriteFtraceEvent trusty_ipc_write = 457;
+    TrustyIpcPollFtraceEvent trusty_ipc_poll = 458;
+    TrustyIpcPollEndFtraceEvent trusty_ipc_poll_end = 459;
+    TrustyIpcReadFtraceEvent trusty_ipc_read = 460;
+    TrustyIpcReadEndFtraceEvent trusty_ipc_read_end = 461;
+    TrustyIpcRxFtraceEvent trusty_ipc_rx = 462;
+    TrustyIpcTxFtraceEvent trusty_ipc_tx = 463;
+    TrustyEnqueueNopFtraceEvent trusty_enqueue_nop = 464;
   }
 }
 
diff --git a/src/tools/ftrace_proto_gen/event_list b/src/tools/ftrace_proto_gen/event_list
index 2c33ba0..0e72acb 100644
--- a/src/tools/ftrace_proto_gen/event_list
+++ b/src/tools/ftrace_proto_gen/event_list
@@ -438,4 +438,24 @@
 virtio_video/virtio_video_resource_queue
 virtio_video/virtio_video_resource_queue_done
 vmscan/mm_shrink_slab_start
-vmscan/mm_shrink_slab_end
\ No newline at end of file
+vmscan/mm_shrink_slab_end
+trusty/trusty_smc
+trusty/trusty_smc_done
+trusty/trusty_std_call32
+trusty/trusty_std_call32_done
+trusty/trusty_share_memory
+trusty/trusty_share_memory_done
+trusty/trusty_reclaim_memory
+trusty/trusty_reclaim_memory_done
+trusty/trusty_irq
+trusty/trusty_ipc_handle_event
+trusty/trusty_ipc_connect
+trusty/trusty_ipc_connect_end
+trusty/trusty_ipc_write
+trusty/trusty_ipc_poll
+trusty/trusty_ipc_poll_end
+trusty/trusty_ipc_read
+trusty/trusty_ipc_read_end
+trusty/trusty_ipc_rx
+trusty/trusty_ipc_tx
+trusty/trusty_enqueue_nop
diff --git a/src/trace_processor/importers/ftrace/ftrace_parser.cc b/src/trace_processor/importers/ftrace/ftrace_parser.cc
index 5e511b2..691f170 100644
--- a/src/trace_processor/importers/ftrace/ftrace_parser.cc
+++ b/src/trace_processor/importers/ftrace/ftrace_parser.cc
@@ -17,6 +17,7 @@
 #include "src/trace_processor/importers/ftrace/ftrace_parser.h"
 
 #include "perfetto/base/logging.h"
+#include "perfetto/ext/base/string_writer.h"
 #include "perfetto/protozero/proto_decoder.h"
 #include "src/trace_processor/importers/common/args_tracker.h"
 #include "src/trace_processor/importers/common/process_tracker.h"
@@ -69,6 +70,7 @@
 #include "protos/perfetto/trace/ftrace/task.pbzero.h"
 #include "protos/perfetto/trace/ftrace/tcp.pbzero.h"
 #include "protos/perfetto/trace/ftrace/thermal.pbzero.h"
+#include "protos/perfetto/trace/ftrace/trusty.pbzero.h"
 #include "protos/perfetto/trace/ftrace/ufs.pbzero.h"
 #include "protos/perfetto/trace/ftrace/vmscan.pbzero.h"
 #include "protos/perfetto/trace/ftrace/workqueue.pbzero.h"
@@ -280,7 +282,11 @@
       shrink_name_id_(context->storage->InternString("shrink_name")),
       shrink_total_scan_id_(context->storage->InternString("total_scan")),
       shrink_freed_id_(context->storage->InternString("freed")),
-      shrink_priority_id_(context->storage->InternString("priority")) {
+      shrink_priority_id_(context->storage->InternString("priority")),
+      trusty_category_id_(context_->storage->InternString("tipc")),
+      trusty_name_trusty_std_id_(context_->storage->InternString("trusty_std")),
+      trusty_name_tipc_tx_id_(context_->storage->InternString("tipc_tx")),
+      trusty_name_tipc_rx_id_(context_->storage->InternString("tipc_rx")) {
   // Build the lookup table for the strings inside ftrace events (e.g. the
   // name of ftrace event fields and the names of their args).
   for (size_t i = 0; i < GetDescriptorsSize(); i++) {
@@ -867,6 +873,86 @@
             fld.id(), ts, fld_bytes);
         break;
       }
+      case FtraceEvent::kTrustySmcFieldNumber: {
+        ParseTrustySmc(pid, ts, fld_bytes);
+        break;
+      }
+      case FtraceEvent::kTrustySmcDoneFieldNumber: {
+        ParseTrustySmcDone(pid, ts, fld_bytes);
+        break;
+      }
+      case FtraceEvent::kTrustyStdCall32FieldNumber: {
+        ParseTrustyStdCall32(pid, ts, fld_bytes);
+        break;
+      }
+      case FtraceEvent::kTrustyStdCall32DoneFieldNumber: {
+        ParseTrustyStdCall32Done(pid, ts, fld_bytes);
+        break;
+      }
+      case FtraceEvent::kTrustyShareMemoryFieldNumber: {
+        ParseTrustyShareMemory(pid, ts, fld_bytes);
+        break;
+      }
+      case FtraceEvent::kTrustyShareMemoryDoneFieldNumber: {
+        ParseTrustyShareMemoryDone(pid, ts, fld_bytes);
+        break;
+      }
+      case FtraceEvent::kTrustyReclaimMemoryFieldNumber: {
+        ParseTrustyReclaimMemory(pid, ts, fld_bytes);
+        break;
+      }
+      case FtraceEvent::kTrustyReclaimMemoryDoneFieldNumber: {
+        ParseTrustyReclaimMemoryDone(pid, ts, fld_bytes);
+        break;
+      }
+      case FtraceEvent::kTrustyIrqFieldNumber: {
+        ParseTrustyIrq(pid, ts, fld_bytes);
+        break;
+      }
+      case FtraceEvent::kTrustyIpcHandleEventFieldNumber: {
+        ParseTrustyIpcHandleEvent(pid, ts, fld_bytes);
+        break;
+      }
+      case FtraceEvent::kTrustyIpcConnectFieldNumber: {
+        ParseTrustyIpcConnect(pid, ts, fld_bytes);
+        break;
+      }
+      case FtraceEvent::kTrustyIpcConnectEndFieldNumber: {
+        ParseTrustyIpcConnectEnd(pid, ts, fld_bytes);
+        break;
+      }
+      case FtraceEvent::kTrustyIpcWriteFieldNumber: {
+        ParseTrustyIpcWrite(pid, ts, fld_bytes);
+        break;
+      }
+      case FtraceEvent::kTrustyIpcReadFieldNumber: {
+        ParseTrustyIpcRead(pid, ts, fld_bytes);
+        break;
+      }
+      case FtraceEvent::kTrustyIpcReadEndFieldNumber: {
+        ParseTrustyIpcReadEnd(pid, ts, fld_bytes);
+        break;
+      }
+      case FtraceEvent::kTrustyIpcPollFieldNumber: {
+        ParseTrustyIpcPoll(pid, ts, fld_bytes);
+        break;
+      }
+      case FtraceEvent::kTrustyIpcPollEndFieldNumber: {
+        ParseTrustyIpcPollEnd(pid, ts, fld_bytes);
+        break;
+      }
+      case FtraceEvent::kTrustyIpcTxFieldNumber: {
+        ParseTrustyIpcTx(pid, ts, fld_bytes);
+        break;
+      }
+      case FtraceEvent::kTrustyIpcRxFieldNumber: {
+        ParseTrustyIpcRx(pid, ts, fld_bytes);
+        break;
+      }
+      case FtraceEvent::kTrustyEnqueueNopFieldNumber: {
+        ParseTrustyEnqueueNop(pid, ts, fld_bytes);
+        break;
+      }
       default:
         break;
     }
@@ -2236,6 +2322,337 @@
                                        static_cast<double>(clk_state), track);
 }
 
+void FtraceParser::ParseTrustySmc(uint32_t pid,
+                                  int64_t timestamp,
+                                  protozero::ConstBytes blob) {
+  protos::pbzero::TrustySmcFtraceEvent::Decoder evt(blob.data, blob.size);
+
+  UniqueTid utid = context_->process_tracker->GetOrCreateThread(pid);
+  TrackId track = context_->track_tracker->InternThreadTrack(utid);
+
+  base::StackString<48> name("trusty_smc:r0= %" PRIu64, evt.r0());
+  StringId name_generic = context_->storage->InternString(name.string_view());
+
+  context_->slice_tracker->Begin(timestamp, track, trusty_category_id_,
+                                 name_generic);
+}
+
+void FtraceParser::ParseTrustySmcDone(uint32_t pid,
+                                      int64_t timestamp,
+                                      protozero::ConstBytes blob) {
+  protos::pbzero::TrustySmcDoneFtraceEvent::Decoder evt(blob.data, blob.size);
+
+  UniqueTid utid = context_->process_tracker->GetOrCreateThread(pid);
+  TrackId track = context_->track_tracker->InternThreadTrack(utid);
+
+  context_->slice_tracker->End(timestamp, track, trusty_category_id_);
+  base::StackString<256> name("trusty_smc_done:r0= %" PRIu64, evt.ret());
+  StringId name_generic = context_->storage->InternString(name.string_view());
+  context_->slice_tracker->Scoped(timestamp, track, trusty_category_id_,
+                                  name_generic, 0);
+}
+
+void FtraceParser::ParseTrustyStdCall32(uint32_t pid,
+                                        int64_t timestamp,
+                                        protozero::ConstBytes blob) {
+  protos::pbzero::TrustyStdCall32FtraceEvent::Decoder evt(blob.data, blob.size);
+
+  UniqueTid utid = context_->process_tracker->GetOrCreateThread(pid);
+  TrackId track = context_->track_tracker->InternThreadTrack(utid);
+
+  context_->slice_tracker->Begin(timestamp, track, trusty_category_id_,
+                                 trusty_name_trusty_std_id_);
+}
+
+void FtraceParser::ParseTrustyStdCall32Done(uint32_t pid,
+                                            int64_t timestamp,
+                                            protozero::ConstBytes blob) {
+  protos::pbzero::TrustyStdCall32DoneFtraceEvent::Decoder evt(blob.data,
+                                                              blob.size);
+
+  UniqueTid utid = context_->process_tracker->GetOrCreateThread(pid);
+  TrackId track = context_->track_tracker->InternThreadTrack(utid);
+
+  context_->slice_tracker->End(timestamp, track, trusty_category_id_);
+  if (evt.ret() < 0) {
+    base::StackString<256> name("trusty_err_std: err= %" PRIi64, evt.ret());
+    StringId name_generic = context_->storage->InternString(name.string_view());
+    context_->slice_tracker->Scoped(timestamp, track, trusty_category_id_,
+                                    name_generic, 0);
+  }
+}
+
+void FtraceParser::ParseTrustyShareMemory(uint32_t pid,
+                                          int64_t timestamp,
+                                          protozero::ConstBytes blob) {
+  protos::pbzero::TrustyShareMemoryFtraceEvent::Decoder evt(blob.data,
+                                                            blob.size);
+
+  UniqueTid utid = context_->process_tracker->GetOrCreateThread(pid);
+  TrackId track = context_->track_tracker->InternThreadTrack(utid);
+
+  base::StackString<256> name(
+      "trusty_share_mem: len= %" PRIu64 " nents= %" PRIu32 " lend= %" PRIu32,
+      static_cast<uint64_t>(evt.len()), evt.nents(), evt.lend());
+  StringId name_generic = context_->storage->InternString(name.string_view());
+
+  context_->slice_tracker->Begin(timestamp, track, trusty_category_id_,
+                                 name_generic);
+}
+
+void FtraceParser::ParseTrustyShareMemoryDone(uint32_t pid,
+                                              int64_t timestamp,
+                                              protozero::ConstBytes blob) {
+  protos::pbzero::TrustyShareMemoryDoneFtraceEvent::Decoder evt(blob.data,
+                                                                blob.size);
+
+  UniqueTid utid = context_->process_tracker->GetOrCreateThread(pid);
+  TrackId track = context_->track_tracker->InternThreadTrack(utid);
+  context_->slice_tracker->End(timestamp, track, trusty_category_id_);
+
+  base::StackString<256> name("trusty_share_mem: handle= %" PRIu64
+                              " ret= %" PRIi32,
+                              evt.handle(), evt.ret());
+  StringId name_generic = context_->storage->InternString(name.string_view());
+  context_->slice_tracker->Scoped(timestamp, track, trusty_category_id_,
+                                  name_generic, 0);
+}
+
+void FtraceParser::ParseTrustyReclaimMemory(uint32_t pid,
+                                            int64_t timestamp,
+                                            protozero::ConstBytes blob) {
+  protos::pbzero::TrustyReclaimMemoryFtraceEvent::Decoder evt(blob.data,
+                                                              blob.size);
+
+  UniqueTid utid = context_->process_tracker->GetOrCreateThread(pid);
+  TrackId track = context_->track_tracker->InternThreadTrack(utid);
+
+  base::StackString<256> name("trusty_reclaim_mem: id=%" PRIu64, evt.id());
+  StringId name_generic = context_->storage->InternString(name.string_view());
+
+  context_->slice_tracker->Begin(timestamp, track, trusty_category_id_,
+                                 name_generic);
+}
+
+void FtraceParser::ParseTrustyReclaimMemoryDone(uint32_t pid,
+                                                int64_t timestamp,
+                                                protozero::ConstBytes blob) {
+  protos::pbzero::TrustyReclaimMemoryDoneFtraceEvent::Decoder evt(blob.data,
+                                                                  blob.size);
+
+  UniqueTid utid = context_->process_tracker->GetOrCreateThread(pid);
+  TrackId track = context_->track_tracker->InternThreadTrack(utid);
+  context_->slice_tracker->End(timestamp, track, trusty_category_id_);
+
+  if (evt.ret() < 0) {
+    base::StackString<256> name("trusty_reclaim_mem_err: err= %" PRIi32,
+                                evt.ret());
+    StringId name_generic = context_->storage->InternString(name.string_view());
+    context_->slice_tracker->Scoped(timestamp, track, trusty_category_id_,
+                                    name_generic, 0);
+  }
+}
+
+void FtraceParser::ParseTrustyIrq(uint32_t pid,
+                                  int64_t timestamp,
+                                  protozero::ConstBytes blob) {
+  protos::pbzero::TrustyIrqFtraceEvent::Decoder evt(blob.data, blob.size);
+
+  UniqueTid utid = context_->process_tracker->GetOrCreateThread(pid);
+  TrackId track = context_->track_tracker->InternThreadTrack(utid);
+
+  base::StackString<256> name("trusty_irq: irq= %" PRIi32, evt.irq());
+  StringId name_generic = context_->storage->InternString(name.string_view());
+
+  context_->slice_tracker->Scoped(timestamp, track, trusty_category_id_,
+                                  name_generic, 0);
+}
+
+void FtraceParser::ParseTrustyIpcHandleEvent(uint32_t pid,
+                                             int64_t timestamp,
+                                             protozero::ConstBytes blob) {
+  protos::pbzero::TrustyIpcHandleEventFtraceEvent::Decoder evt(blob.data,
+                                                               blob.size);
+
+  UniqueTid utid = context_->process_tracker->GetOrCreateThread(pid);
+  TrackId track = context_->track_tracker->InternThreadTrack(utid);
+
+  base::StackString<256> name(
+      "trusty_ipc_handle_event: chan=%" PRIu32 " srv_name=%s event=%" PRIu32,
+      evt.chan(), evt.srv_name().ToStdString().c_str(), evt.event_id());
+  StringId name_generic = context_->storage->InternString(name.string_view());
+
+  context_->slice_tracker->Scoped(timestamp, track, trusty_category_id_,
+                                  name_generic, 0);
+}
+
+void FtraceParser::ParseTrustyEnqueueNop(uint32_t pid,
+                                         int64_t timestamp,
+                                         protozero::ConstBytes blob) {
+  protos::pbzero::TrustyEnqueueNopFtraceEvent::Decoder evt(blob.data,
+                                                           blob.size);
+
+  UniqueTid utid = context_->process_tracker->GetOrCreateThread(pid);
+  TrackId track = context_->track_tracker->InternThreadTrack(utid);
+
+  base::StackString<256> name("trusty_enqueue_nop: arg1= %" PRIu32
+                              " arg2= %" PRIu32 " arg3=%" PRIu32,
+                              evt.arg1(), evt.arg2(), evt.arg3());
+  StringId name_generic = context_->storage->InternString(name.string_view());
+  context_->slice_tracker->Scoped(timestamp, track, trusty_category_id_,
+                                  name_generic, 0);
+}
+
+void FtraceParser::ParseTrustyIpcConnect(uint32_t pid,
+                                         int64_t timestamp,
+                                         protozero::ConstBytes blob) {
+  protos::pbzero::TrustyIpcConnectFtraceEvent::Decoder evt(blob.data,
+                                                           blob.size);
+
+  UniqueTid utid = context_->process_tracker->GetOrCreateThread(pid);
+  TrackId track = context_->track_tracker->InternThreadTrack(utid);
+
+  base::StackString<256> name("tipc_connect: %s",
+                              evt.port().ToStdString().c_str());
+  StringId name_generic = context_->storage->InternString(name.string_view());
+
+  context_->slice_tracker->Begin(timestamp, track, trusty_category_id_,
+                                 name_generic);
+}
+
+void FtraceParser::ParseTrustyIpcConnectEnd(uint32_t pid,
+                                            int64_t timestamp,
+                                            protozero::ConstBytes blob) {
+  protos::pbzero::TrustyIpcConnectEndFtraceEvent::Decoder evt(blob.data,
+                                                              blob.size);
+
+  UniqueTid utid = context_->process_tracker->GetOrCreateThread(pid);
+  TrackId track = context_->track_tracker->InternThreadTrack(utid);
+
+  context_->slice_tracker->End(timestamp, track, trusty_category_id_);
+  if (evt.err()) {
+    base::StackString<256> name("tipc_err_connect:err= %" PRIi32, evt.err());
+    StringId name_generic = context_->storage->InternString(name.string_view());
+    context_->slice_tracker->Scoped(timestamp, track, trusty_category_id_,
+                                    name_generic, 0);
+  }
+}
+
+void FtraceParser::ParseTrustyIpcWrite(uint32_t pid,
+                                       int64_t timestamp,
+                                       protozero::ConstBytes blob) {
+  protos::pbzero::TrustyIpcWriteFtraceEvent::Decoder evt(blob.data, blob.size);
+
+  StringId name_generic = kNullStringId;
+  UniqueTid utid = context_->process_tracker->GetOrCreateThread(pid);
+  TrackId track = context_->track_tracker->InternThreadTrack(utid);
+
+  if (evt.shm_cnt() > 0) {
+    base::StackString<256> name("tipc_write: %s shm_cnt:[%" PRIu64 "]",
+                                evt.srv_name().ToStdString().c_str(),
+                                evt.shm_cnt());
+    name_generic = context_->storage->InternString(name.string_view());
+  } else {
+    base::StackString<256> name("tipc_write: %s",
+                                evt.srv_name().ToStdString().c_str());
+    name_generic = context_->storage->InternString(name.string_view());
+  }
+  context_->slice_tracker->Scoped(timestamp, track, trusty_category_id_,
+                                  name_generic, 0);
+
+  if (evt.len_or_err() < 0) {
+    base::StackString<256> name("tipc_err_write:len_or_err= %" PRIi32,
+                                evt.len_or_err());
+    name_generic = context_->storage->InternString(name.string_view());
+    context_->slice_tracker->Scoped(timestamp, track, trusty_category_id_,
+                                    name_generic, 0);
+  }
+}
+
+void FtraceParser::ParseTrustyIpcRead(uint32_t pid,
+                                      int64_t timestamp,
+                                      protozero::ConstBytes blob) {
+  protos::pbzero::TrustyIpcReadFtraceEvent::Decoder evt(blob.data, blob.size);
+
+  UniqueTid utid = context_->process_tracker->GetOrCreateThread(pid);
+  TrackId track = context_->track_tracker->InternThreadTrack(utid);
+
+  base::StackString<256> name("tipc_read: %s",
+                              evt.srv_name().ToStdString().c_str());
+  StringId name_generic = context_->storage->InternString(name.string_view());
+  context_->slice_tracker->Begin(timestamp, track, trusty_category_id_,
+                                 name_generic);
+}
+
+void FtraceParser::ParseTrustyIpcReadEnd(uint32_t pid,
+                                         int64_t timestamp,
+                                         protozero::ConstBytes blob) {
+  protos::pbzero::TrustyIpcReadEndFtraceEvent::Decoder evt(blob.data,
+                                                           blob.size);
+
+  UniqueTid utid = context_->process_tracker->GetOrCreateThread(pid);
+  TrackId track = context_->track_tracker->InternThreadTrack(utid);
+  context_->slice_tracker->End(timestamp, track, trusty_category_id_);
+
+  if (evt.len_or_err() <= 0) {
+    base::StackString<256> name("tipc_err_read:len_or_err= %" PRIi32,
+                                evt.len_or_err());
+    StringId name_generic = context_->storage->InternString(name.string_view());
+    context_->slice_tracker->Scoped(timestamp, track, trusty_category_id_,
+                                    name_generic, 0);
+  }
+}
+
+void FtraceParser::ParseTrustyIpcPoll(uint32_t pid,
+                                      int64_t timestamp,
+                                      protozero::ConstBytes blob) {
+  protos::pbzero::TrustyIpcPollFtraceEvent::Decoder evt(blob.data, blob.size);
+
+  UniqueTid utid = context_->process_tracker->GetOrCreateThread(pid);
+  TrackId track = context_->track_tracker->InternThreadTrack(utid);
+
+  base::StackString<256> name("tipc_poll: %s",
+                              evt.srv_name().ToStdString().c_str());
+  StringId name_generic = context_->storage->InternString(name.string_view());
+  context_->slice_tracker->Begin(timestamp, track, trusty_category_id_,
+                                 name_generic);
+}
+
+void FtraceParser::ParseTrustyIpcPollEnd(uint32_t pid,
+                                         int64_t timestamp,
+                                         protozero::ConstBytes blob) {
+  protos::pbzero::TrustyIpcPollEndFtraceEvent::Decoder evt(blob.data,
+                                                           blob.size);
+
+  UniqueTid utid = context_->process_tracker->GetOrCreateThread(pid);
+  TrackId track = context_->track_tracker->InternThreadTrack(utid);
+  context_->slice_tracker->End(timestamp, track, trusty_category_id_);
+}
+
+void FtraceParser::ParseTrustyIpcTx(uint32_t pid,
+                                    int64_t ts,
+                                    protozero::ConstBytes blob) {
+  protos::pbzero::TrustyIpcTxFtraceEvent::Decoder evt(blob.data, blob.size);
+
+  UniqueTid utid = context_->process_tracker->GetOrCreateThread(pid);
+  TrackId track = context_->track_tracker->InternThreadTrack(utid);
+
+  context_->slice_tracker->Scoped(ts, track, trusty_category_id_,
+                                  trusty_name_tipc_tx_id_, 0);
+}
+
+void FtraceParser::ParseTrustyIpcRx(uint32_t pid,
+                                    int64_t ts,
+                                    protozero::ConstBytes blob) {
+  protos::pbzero::TrustyIpcRxFtraceEvent::Decoder evt(blob.data, blob.size);
+
+  UniqueTid utid = context_->process_tracker->GetOrCreateThread(pid);
+  TrackId track = context_->track_tracker->InternThreadTrack(utid);
+
+  context_->slice_tracker->Scoped(ts, track, trusty_category_id_,
+                                  trusty_name_tipc_rx_id_, 0);
+}
+
 void FtraceParser::ParseUfshcdCommand(int64_t timestamp,
                                       protozero::ConstBytes blob) {
   protos::pbzero::UfshcdCommandFtraceEvent::Decoder evt(blob.data, blob.size);
diff --git a/src/trace_processor/importers/ftrace/ftrace_parser.h b/src/trace_processor/importers/ftrace/ftrace_parser.h
index 242fbf7..65a66d1 100644
--- a/src/trace_processor/importers/ftrace/ftrace_parser.h
+++ b/src/trace_processor/importers/ftrace/ftrace_parser.h
@@ -197,6 +197,7 @@
   void ParseUfshcdClkGating(int64_t timestamp, protozero::ConstBytes);
 
   void ParseCrosEcSensorhubData(int64_t timestamp, protozero::ConstBytes);
+
   void ParseWakeSourceActivate(int64_t timestamp, protozero::ConstBytes);
   void ParseWakeSourceDeactivate(int64_t timestamp, protozero::ConstBytes);
   void ParseSuspendResume(int64_t timestamp, protozero::ConstBytes);
@@ -215,6 +216,43 @@
   StringId InternedKernelSymbolOrFallback(
       uint64_t key,
       PacketSequenceStateGeneration* seq_state);
+  void ParseTrustySmc(uint32_t pid, int64_t timestamp, protozero::ConstBytes);
+  void ParseTrustySmcDone(uint32_t pid,
+                          int64_t timestamp,
+                          protozero::ConstBytes);
+  void ParseTrustyStdCall32(uint32_t pid,
+                            int64_t ts,
+                            protozero::ConstBytes data);
+  void ParseTrustyStdCall32Done(uint32_t pid,
+                                int64_t ts,
+                                protozero::ConstBytes data);
+  void ParseTrustyShareMemory(uint32_t pid, int64_t ts, protozero::ConstBytes);
+  void ParseTrustyShareMemoryDone(uint32_t pid,
+                                  int64_t ts,
+                                  protozero::ConstBytes);
+  void ParseTrustyReclaimMemory(uint32_t pid,
+                                int64_t ts,
+                                protozero::ConstBytes);
+  void ParseTrustyReclaimMemoryDone(uint32_t pid,
+                                    int64_t ts,
+                                    protozero::ConstBytes);
+  void ParseTrustyIrq(uint32_t pid, int64_t ts, protozero::ConstBytes);
+  void ParseTrustyIpcHandleEvent(uint32_t pid,
+                                 int64_t ts,
+                                 protozero::ConstBytes);
+  void ParseTrustyIpcConnect(uint32_t pid, int64_t ts, protozero::ConstBytes);
+  void ParseTrustyIpcConnectEnd(uint32_t pid,
+                                int64_t ts,
+                                protozero::ConstBytes);
+  void ParseTrustyIpcWrite(uint32_t pid, int64_t ts, protozero::ConstBytes);
+  void ParseTrustyIpcWriteEnd(uint32_t pid, int64_t ts, protozero::ConstBytes);
+  void ParseTrustyIpcRead(uint32_t pid, int64_t ts, protozero::ConstBytes);
+  void ParseTrustyIpcReadEnd(uint32_t pid, int64_t ts, protozero::ConstBytes);
+  void ParseTrustyIpcPoll(uint32_t pid, int64_t ts, protozero::ConstBytes);
+  void ParseTrustyIpcPollEnd(uint32_t pid, int64_t ts, protozero::ConstBytes);
+  void ParseTrustyIpcTx(uint32_t pid, int64_t ts, protozero::ConstBytes);
+  void ParseTrustyIpcRx(uint32_t pid, int64_t ts, protozero::ConstBytes);
+  void ParseTrustyEnqueueNop(uint32_t pid, int64_t ts, protozero::ConstBytes);
 
   TraceProcessorContext* context_;
   RssStatTracker rss_stat_tracker_;
@@ -275,6 +313,10 @@
   const StringId shrink_total_scan_id_;
   const StringId shrink_freed_id_;
   const StringId shrink_priority_id_;
+  const StringId trusty_category_id_;
+  const StringId trusty_name_trusty_std_id_;
+  const StringId trusty_name_tipc_tx_id_;
+  const StringId trusty_name_tipc_rx_id_;
 
   struct FtraceMessageStrings {
     // The string id of name of the event field (e.g. sched_switch's id).
diff --git a/src/traced/probes/ftrace/event_info.cc b/src/traced/probes/ftrace/event_info.cc
index 7d66fa6..0c14376 100644
--- a/src/traced/probes/ftrace/event_info.cc
+++ b/src/traced/probes/ftrace/event_info.cc
@@ -8058,6 +8058,293 @@
        kUnsetFtraceId,
        342,
        kUnsetSize},
+      {"trusty_smc",
+       "trusty",
+       {
+           {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+            "r0", 1, ProtoSchemaType::kUint64,
+            TranslationStrategy::kInvalidTranslationStrategy},
+           {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+            "r1", 2, ProtoSchemaType::kUint64,
+            TranslationStrategy::kInvalidTranslationStrategy},
+           {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+            "r2", 3, ProtoSchemaType::kUint64,
+            TranslationStrategy::kInvalidTranslationStrategy},
+           {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+            "r3", 4, ProtoSchemaType::kUint64,
+            TranslationStrategy::kInvalidTranslationStrategy},
+       },
+       kUnsetFtraceId,
+       445,
+       kUnsetSize},
+      {"trusty_smc_done",
+       "trusty",
+       {
+           {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+            "ret", 1, ProtoSchemaType::kUint64,
+            TranslationStrategy::kInvalidTranslationStrategy},
+       },
+       kUnsetFtraceId,
+       446,
+       kUnsetSize},
+      {"trusty_std_call32",
+       "trusty",
+       {
+           {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+            "r0", 1, ProtoSchemaType::kUint64,
+            TranslationStrategy::kInvalidTranslationStrategy},
+           {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+            "r1", 2, ProtoSchemaType::kUint64,
+            TranslationStrategy::kInvalidTranslationStrategy},
+           {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+            "r2", 3, ProtoSchemaType::kUint64,
+            TranslationStrategy::kInvalidTranslationStrategy},
+           {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+            "r3", 4, ProtoSchemaType::kUint64,
+            TranslationStrategy::kInvalidTranslationStrategy},
+       },
+       kUnsetFtraceId,
+       447,
+       kUnsetSize},
+      {"trusty_std_call32_done",
+       "trusty",
+       {
+           {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+            "ret", 1, ProtoSchemaType::kInt64,
+            TranslationStrategy::kInvalidTranslationStrategy},
+       },
+       kUnsetFtraceId,
+       448,
+       kUnsetSize},
+      {"trusty_share_memory",
+       "trusty",
+       {
+           {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+            "len", 1, ProtoSchemaType::kUint64,
+            TranslationStrategy::kInvalidTranslationStrategy},
+           {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+            "lend", 2, ProtoSchemaType::kUint32,
+            TranslationStrategy::kInvalidTranslationStrategy},
+           {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+            "nents", 3, ProtoSchemaType::kUint32,
+            TranslationStrategy::kInvalidTranslationStrategy},
+       },
+       kUnsetFtraceId,
+       449,
+       kUnsetSize},
+      {"trusty_share_memory_done",
+       "trusty",
+       {
+           {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+            "handle", 1, ProtoSchemaType::kUint64,
+            TranslationStrategy::kInvalidTranslationStrategy},
+           {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+            "len", 2, ProtoSchemaType::kUint64,
+            TranslationStrategy::kInvalidTranslationStrategy},
+           {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+            "lend", 3, ProtoSchemaType::kUint32,
+            TranslationStrategy::kInvalidTranslationStrategy},
+           {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+            "nents", 4, ProtoSchemaType::kUint32,
+            TranslationStrategy::kInvalidTranslationStrategy},
+           {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+            "ret", 5, ProtoSchemaType::kInt32,
+            TranslationStrategy::kInvalidTranslationStrategy},
+       },
+       kUnsetFtraceId,
+       450,
+       kUnsetSize},
+      {"trusty_reclaim_memory",
+       "trusty",
+       {
+           {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+            "id", 1, ProtoSchemaType::kUint64,
+            TranslationStrategy::kInvalidTranslationStrategy},
+       },
+       kUnsetFtraceId,
+       451,
+       kUnsetSize},
+      {"trusty_reclaim_memory_done",
+       "trusty",
+       {
+           {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+            "id", 1, ProtoSchemaType::kUint64,
+            TranslationStrategy::kInvalidTranslationStrategy},
+           {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+            "ret", 2, ProtoSchemaType::kInt32,
+            TranslationStrategy::kInvalidTranslationStrategy},
+       },
+       kUnsetFtraceId,
+       452,
+       kUnsetSize},
+      {"trusty_irq",
+       "trusty",
+       {
+           {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+            "irq", 1, ProtoSchemaType::kInt32,
+            TranslationStrategy::kInvalidTranslationStrategy},
+       },
+       kUnsetFtraceId,
+       453,
+       kUnsetSize},
+      {"trusty_ipc_handle_event",
+       "trusty",
+       {
+           {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+            "chan", 1, ProtoSchemaType::kUint32,
+            TranslationStrategy::kInvalidTranslationStrategy},
+           {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+            "event_id", 2, ProtoSchemaType::kUint32,
+            TranslationStrategy::kInvalidTranslationStrategy},
+           {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+            "srv_name", 3, ProtoSchemaType::kString,
+            TranslationStrategy::kInvalidTranslationStrategy},
+       },
+       kUnsetFtraceId,
+       454,
+       kUnsetSize},
+      {"trusty_ipc_connect",
+       "trusty",
+       {
+           {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+            "chan", 1, ProtoSchemaType::kUint32,
+            TranslationStrategy::kInvalidTranslationStrategy},
+           {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+            "port", 2, ProtoSchemaType::kString,
+            TranslationStrategy::kInvalidTranslationStrategy},
+           {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+            "state", 3, ProtoSchemaType::kInt32,
+            TranslationStrategy::kInvalidTranslationStrategy},
+       },
+       kUnsetFtraceId,
+       455,
+       kUnsetSize},
+      {"trusty_ipc_connect_end",
+       "trusty",
+       {
+           {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+            "chan", 1, ProtoSchemaType::kUint32,
+            TranslationStrategy::kInvalidTranslationStrategy},
+           {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+            "err", 2, ProtoSchemaType::kInt32,
+            TranslationStrategy::kInvalidTranslationStrategy},
+           {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+            "state", 3, ProtoSchemaType::kInt32,
+            TranslationStrategy::kInvalidTranslationStrategy},
+       },
+       kUnsetFtraceId,
+       456,
+       kUnsetSize},
+      {"trusty_ipc_write",
+       "trusty",
+       {
+           {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+            "buf_id", 1, ProtoSchemaType::kUint64,
+            TranslationStrategy::kInvalidTranslationStrategy},
+           {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+            "chan", 2, ProtoSchemaType::kUint32,
+            TranslationStrategy::kInvalidTranslationStrategy},
+           {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+            "kind_shm", 3, ProtoSchemaType::kInt32,
+            TranslationStrategy::kInvalidTranslationStrategy},
+           {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+            "len_or_err", 4, ProtoSchemaType::kInt32,
+            TranslationStrategy::kInvalidTranslationStrategy},
+           {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+            "shm_cnt", 5, ProtoSchemaType::kUint64,
+            TranslationStrategy::kInvalidTranslationStrategy},
+           {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+            "srv_name", 6, ProtoSchemaType::kString,
+            TranslationStrategy::kInvalidTranslationStrategy},
+       },
+       kUnsetFtraceId,
+       457,
+       kUnsetSize},
+      {"trusty_ipc_poll",
+       "trusty",
+       {
+           {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+            "chan", 1, ProtoSchemaType::kUint32,
+            TranslationStrategy::kInvalidTranslationStrategy},
+           {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+            "poll_mask", 2, ProtoSchemaType::kUint32,
+            TranslationStrategy::kInvalidTranslationStrategy},
+           {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+            "srv_name", 3, ProtoSchemaType::kString,
+            TranslationStrategy::kInvalidTranslationStrategy},
+       },
+       kUnsetFtraceId,
+       458,
+       kUnsetSize},
+      {"trusty_ipc_poll_end", "trusty", {}, kUnsetFtraceId, 459, kUnsetSize},
+      {"trusty_ipc_read",
+       "trusty",
+       {
+           {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+            "chan", 1, ProtoSchemaType::kUint32,
+            TranslationStrategy::kInvalidTranslationStrategy},
+           {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+            "srv_name", 2, ProtoSchemaType::kString,
+            TranslationStrategy::kInvalidTranslationStrategy},
+       },
+       kUnsetFtraceId,
+       460,
+       kUnsetSize},
+      {"trusty_ipc_read_end",
+       "trusty",
+       {
+           {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+            "buf_id", 1, ProtoSchemaType::kUint64,
+            TranslationStrategy::kInvalidTranslationStrategy},
+           {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+            "chan", 2, ProtoSchemaType::kUint32,
+            TranslationStrategy::kInvalidTranslationStrategy},
+           {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+            "len_or_err", 3, ProtoSchemaType::kInt32,
+            TranslationStrategy::kInvalidTranslationStrategy},
+           {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+            "shm_cnt", 4, ProtoSchemaType::kUint64,
+            TranslationStrategy::kInvalidTranslationStrategy},
+           {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+            "srv_name", 5, ProtoSchemaType::kString,
+            TranslationStrategy::kInvalidTranslationStrategy},
+       },
+       kUnsetFtraceId,
+       461,
+       kUnsetSize},
+      {"trusty_ipc_rx",
+       "trusty",
+       {
+           {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+            "buf_id", 1, ProtoSchemaType::kUint64,
+            TranslationStrategy::kInvalidTranslationStrategy},
+           {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+            "chan", 2, ProtoSchemaType::kUint32,
+            TranslationStrategy::kInvalidTranslationStrategy},
+           {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+            "srv_name", 3, ProtoSchemaType::kString,
+            TranslationStrategy::kInvalidTranslationStrategy},
+       },
+       kUnsetFtraceId,
+       462,
+       kUnsetSize},
+      {"trusty_ipc_tx", "trusty", {}, kUnsetFtraceId, 463, kUnsetSize},
+      {"trusty_enqueue_nop",
+       "trusty",
+       {
+           {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+            "arg1", 1, ProtoSchemaType::kUint32,
+            TranslationStrategy::kInvalidTranslationStrategy},
+           {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+            "arg2", 2, ProtoSchemaType::kUint32,
+            TranslationStrategy::kInvalidTranslationStrategy},
+           {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+            "arg3", 3, ProtoSchemaType::kUint32,
+            TranslationStrategy::kInvalidTranslationStrategy},
+       },
+       kUnsetFtraceId,
+       464,
+       kUnsetSize},
       {"ufshcd_command",
        "ufs",
        {
diff --git a/src/traced/probes/ftrace/test/data/synthetic/events/trusty/format b/src/traced/probes/ftrace/test/data/synthetic/events/trusty/format
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/traced/probes/ftrace/test/data/synthetic/events/trusty/format
diff --git a/src/traced/probes/ftrace/test/data/synthetic/events/trusty/trusty_enqueue_nop/format b/src/traced/probes/ftrace/test/data/synthetic/events/trusty/trusty_enqueue_nop/format
new file mode 100644
index 0000000..a9dd874
--- /dev/null
+++ b/src/traced/probes/ftrace/test/data/synthetic/events/trusty/trusty_enqueue_nop/format
@@ -0,0 +1,13 @@
+name: trusty_enqueue_nop
+ID: 844
+format:
+	field:unsigned short common_type;	offset:0;	size:2;	signed:0;
+	field:unsigned char common_flags;	offset:2;	size:1;	signed:0;
+	field:unsigned char common_preempt_count;	offset:3;	size:1;	signed:0;
+	field:int common_pid;	offset:4;	size:4;	signed:1;
+
+	field:u32 arg1;	offset:8;	size:4;	signed:0;
+	field:u32 arg2;	offset:12;	size:4;	signed:0;
+	field:u32 arg3;	offset:16;	size:4;	signed:0;
+
+print fmt: "arg1=0x%x, arg2=0x%x, arg3=0x%x", REC->arg1, REC->arg2, REC->arg3
diff --git a/src/traced/probes/ftrace/test/data/synthetic/events/trusty/trusty_ipc_connect/format b/src/traced/probes/ftrace/test/data/synthetic/events/trusty/trusty_ipc_connect/format
new file mode 100644
index 0000000..6305bb5
--- /dev/null
+++ b/src/traced/probes/ftrace/test/data/synthetic/events/trusty/trusty_ipc_connect/format
@@ -0,0 +1,13 @@
+name: trusty_ipc_connect
+ID: 848
+format:
+	field:unsigned short common_type;	offset:0;	size:2;	signed:0;
+	field:unsigned char common_flags;	offset:2;	size:1;	signed:0;
+	field:unsigned char common_preempt_count;	offset:3;	size:1;	signed:0;
+	field:int common_pid;	offset:4;	size:4;	signed:1;
+
+	field:u32 chan;	offset:8;	size:4;	signed:0;
+	field:__data_loc char[] port;	offset:12;	size:4;	signed:0;
+	field:int state;	offset:16;	size:4;	signed:1;
+
+print fmt: "chan=%u port=%s state=%d", REC->chan, __get_str(port), REC->state
diff --git a/src/traced/probes/ftrace/test/data/synthetic/events/trusty/trusty_ipc_connect_end/format b/src/traced/probes/ftrace/test/data/synthetic/events/trusty/trusty_ipc_connect_end/format
new file mode 100644
index 0000000..abd2217
--- /dev/null
+++ b/src/traced/probes/ftrace/test/data/synthetic/events/trusty/trusty_ipc_connect_end/format
@@ -0,0 +1,13 @@
+name: trusty_ipc_connect_end
+ID: 849
+format:
+	field:unsigned short common_type;	offset:0;	size:2;	signed:0;
+	field:unsigned char common_flags;	offset:2;	size:1;	signed:0;
+	field:unsigned char common_preempt_count;	offset:3;	size:1;	signed:0;
+	field:int common_pid;	offset:4;	size:4;	signed:1;
+
+	field:u32 chan;	offset:8;	size:4;	signed:0;
+	field:int err;	offset:12;	size:4;	signed:1;
+	field:int state;	offset:16;	size:4;	signed:1;
+
+print fmt: "chan=%u err=%d state=%d", REC->chan, REC->err, REC->state
diff --git a/src/traced/probes/ftrace/test/data/synthetic/events/trusty/trusty_ipc_handle_event/format b/src/traced/probes/ftrace/test/data/synthetic/events/trusty/trusty_ipc_handle_event/format
new file mode 100644
index 0000000..9c1d164
--- /dev/null
+++ b/src/traced/probes/ftrace/test/data/synthetic/events/trusty/trusty_ipc_handle_event/format
@@ -0,0 +1,13 @@
+name: trusty_ipc_handle_event
+ID: 850
+format:
+	field:unsigned short common_type;	offset:0;	size:2;	signed:0;
+	field:unsigned char common_flags;	offset:2;	size:1;	signed:0;
+	field:unsigned char common_preempt_count;	offset:3;	size:1;	signed:0;
+	field:int common_pid;	offset:4;	size:4;	signed:1;
+
+	field:u32 chan;	offset:8;	size:4;	signed:0;
+	field:char srv_name[256];	offset:12;	size:256;	signed:0;
+	field:u32 event_id;	offset:268;	size:4;	signed:0;
+
+print fmt: "chan=%u srv_name=%s event=%s", REC->chan, REC->srv_name, __print_symbolic(REC->event_id, { 1, "CONNECTED" }, { 2, "DISCONNECTED" }, { 3, "SHUTDOWN" })
diff --git a/src/traced/probes/ftrace/test/data/synthetic/events/trusty/trusty_ipc_poll/format b/src/traced/probes/ftrace/test/data/synthetic/events/trusty/trusty_ipc_poll/format
new file mode 100644
index 0000000..0034ae3
--- /dev/null
+++ b/src/traced/probes/ftrace/test/data/synthetic/events/trusty/trusty_ipc_poll/format
@@ -0,0 +1,13 @@
+name: trusty_ipc_poll
+ID: 854
+format:
+	field:unsigned short common_type;	offset:0;	size:2;	signed:0;
+	field:unsigned char common_flags;	offset:2;	size:1;	signed:0;
+	field:unsigned char common_preempt_count;	offset:3;	size:1;	signed:0;
+	field:int common_pid;	offset:4;	size:4;	signed:1;
+
+	field:unsigned int poll_mask;	offset:8;	size:4;	signed:0;
+	field:u32 chan;	offset:12;	size:4;	signed:0;
+	field:char srv_name[256];	offset:16;	size:256;	signed:0;
+
+print fmt: "poll_mask=%u chan=%u srv_name=%s", REC->poll_mask, REC->chan, REC->srv_name
diff --git a/src/traced/probes/ftrace/test/data/synthetic/events/trusty/trusty_ipc_read/format b/src/traced/probes/ftrace/test/data/synthetic/events/trusty/trusty_ipc_read/format
new file mode 100644
index 0000000..a3b41c5
--- /dev/null
+++ b/src/traced/probes/ftrace/test/data/synthetic/events/trusty/trusty_ipc_read/format
@@ -0,0 +1,12 @@
+name: trusty_ipc_read
+ID: 852
+format:
+	field:unsigned short common_type;	offset:0;	size:2;	signed:0;
+	field:unsigned char common_flags;	offset:2;	size:1;	signed:0;
+	field:unsigned char common_preempt_count;	offset:3;	size:1;	signed:0;
+	field:int common_pid;	offset:4;	size:4;	signed:1;
+
+	field:u32 chan;	offset:8;	size:4;	signed:0;
+	field:char srv_name[256];	offset:12;	size:256;	signed:0;
+
+print fmt: "chan=%u srv_name=%s", REC->chan, REC->srv_name
diff --git a/src/traced/probes/ftrace/test/data/synthetic/events/trusty/trusty_ipc_read_end/format b/src/traced/probes/ftrace/test/data/synthetic/events/trusty/trusty_ipc_read_end/format
new file mode 100644
index 0000000..89b3707
--- /dev/null
+++ b/src/traced/probes/ftrace/test/data/synthetic/events/trusty/trusty_ipc_read_end/format
@@ -0,0 +1,15 @@
+name: trusty_ipc_read_end
+ID: 853
+format:
+	field:unsigned short common_type;	offset:0;	size:2;	signed:0;
+	field:unsigned char common_flags;	offset:2;	size:1;	signed:0;
+	field:unsigned char common_preempt_count;	offset:3;	size:1;	signed:0;
+	field:int common_pid;	offset:4;	size:4;	signed:1;
+
+	field:int len_or_err;	offset:8;	size:4;	signed:1;
+	field:u32 chan;	offset:12;	size:4;	signed:0;
+	field:char srv_name[256];	offset:16;	size:256;	signed:0;
+	field:u64 buf_id;	offset:272;	size:8;	signed:0;
+	field:size_t shm_cnt;	offset:280;	size:8;	signed:0;
+
+print fmt: "len_or_err=%d chan=%u srv_name=%s buf_id=0x%llx shm_cnt=%zu", REC->len_or_err, REC->chan, REC->srv_name, REC->buf_id, REC->shm_cnt
diff --git a/src/traced/probes/ftrace/test/data/synthetic/events/trusty/trusty_ipc_rx/format b/src/traced/probes/ftrace/test/data/synthetic/events/trusty/trusty_ipc_rx/format
new file mode 100644
index 0000000..8081d2f
--- /dev/null
+++ b/src/traced/probes/ftrace/test/data/synthetic/events/trusty/trusty_ipc_rx/format
@@ -0,0 +1,13 @@
+name: trusty_ipc_rx
+ID: 855
+format:
+	field:unsigned short common_type;	offset:0;	size:2;	signed:0;
+	field:unsigned char common_flags;	offset:2;	size:1;	signed:0;
+	field:unsigned char common_preempt_count;	offset:3;	size:1;	signed:0;
+	field:int common_pid;	offset:4;	size:4;	signed:1;
+
+	field:u32 chan;	offset:8;	size:4;	signed:0;
+	field:char srv_name[256];	offset:12;	size:256;	signed:0;
+	field:u64 buf_id;	offset:272;	size:8;	signed:0;
+
+print fmt: "chan=%u srv_name=%s buf_id=0x%llx", REC->chan, REC->srv_name, REC->buf_id
diff --git a/src/traced/probes/ftrace/test/data/synthetic/events/trusty/trusty_ipc_write/format b/src/traced/probes/ftrace/test/data/synthetic/events/trusty/trusty_ipc_write/format
new file mode 100644
index 0000000..c2082d1
--- /dev/null
+++ b/src/traced/probes/ftrace/test/data/synthetic/events/trusty/trusty_ipc_write/format
@@ -0,0 +1,16 @@
+name: trusty_ipc_write
+ID: 851
+format:
+	field:unsigned short common_type;	offset:0;	size:2;	signed:0;
+	field:unsigned char common_flags;	offset:2;	size:1;	signed:0;
+	field:unsigned char common_preempt_count;	offset:3;	size:1;	signed:0;
+	field:int common_pid;	offset:4;	size:4;	signed:1;
+
+	field:int len_or_err;	offset:8;	size:4;	signed:1;
+	field:u32 chan;	offset:12;	size:4;	signed:0;
+	field:char srv_name[256];	offset:16;	size:256;	signed:0;
+	field:u64 buf_id;	offset:272;	size:8;	signed:0;
+	field:size_t shm_cnt;	offset:280;	size:8;	signed:0;
+	field:__data_loc int[] kind_shm;	offset:288;	size:4;	signed:1;
+
+print fmt: "len_or_err=%d chan=%u srv_name=%s buf_id=0x%llx shm_cnt=%zu kind_shm=%s", REC->len_or_err, REC->chan, REC->srv_name, REC->buf_id, REC->shm_cnt, __print_array(__get_dynamic_array(kind_shm), __get_dynamic_array_len(kind_shm) / sizeof(int), sizeof(int))
diff --git a/src/traced/probes/ftrace/test/data/synthetic/events/trusty/trusty_irq/format b/src/traced/probes/ftrace/test/data/synthetic/events/trusty/trusty_irq/format
new file mode 100644
index 0000000..d9b5950
--- /dev/null
+++ b/src/traced/probes/ftrace/test/data/synthetic/events/trusty/trusty_irq/format
@@ -0,0 +1,11 @@
+name: trusty_irq
+ID: 847
+format:
+	field:unsigned short common_type;	offset:0;	size:2;	signed:0;
+	field:unsigned char common_flags;	offset:2;	size:1;	signed:0;
+	field:unsigned char common_preempt_count;	offset:3;	size:1;	signed:0;
+	field:int common_pid;	offset:4;	size:4;	signed:1;
+
+	field:int irq;	offset:8;	size:4;	signed:1;
+
+print fmt: "irq=%d", REC->irq
diff --git a/src/traced/probes/ftrace/test/data/synthetic/events/trusty/trusty_reclaim_memory/format b/src/traced/probes/ftrace/test/data/synthetic/events/trusty/trusty_reclaim_memory/format
new file mode 100644
index 0000000..06247f2
--- /dev/null
+++ b/src/traced/probes/ftrace/test/data/synthetic/events/trusty/trusty_reclaim_memory/format
@@ -0,0 +1,11 @@
+name: trusty_reclaim_memory
+ID: 845
+format:
+	field:unsigned short common_type;	offset:0;	size:2;	signed:0;
+	field:unsigned char common_flags;	offset:2;	size:1;	signed:0;
+	field:unsigned char common_preempt_count;	offset:3;	size:1;	signed:0;
+	field:int common_pid;	offset:4;	size:4;	signed:1;
+
+	field:u64 id;	offset:8;	size:8;	signed:0;
+
+print fmt: "id=%llu", REC->id
diff --git a/src/traced/probes/ftrace/test/data/synthetic/events/trusty/trusty_reclaim_memory_done/format b/src/traced/probes/ftrace/test/data/synthetic/events/trusty/trusty_reclaim_memory_done/format
new file mode 100644
index 0000000..149c79f
--- /dev/null
+++ b/src/traced/probes/ftrace/test/data/synthetic/events/trusty/trusty_reclaim_memory_done/format
@@ -0,0 +1,12 @@
+name: trusty_reclaim_memory_done
+ID: 846
+format:
+	field:unsigned short common_type;	offset:0;	size:2;	signed:0;
+	field:unsigned char common_flags;	offset:2;	size:1;	signed:0;
+	field:unsigned char common_preempt_count;	offset:3;	size:1;	signed:0;
+	field:int common_pid;	offset:4;	size:4;	signed:1;
+
+	field:u64 id;	offset:8;	size:8;	signed:0;
+	field:int ret;	offset:16;	size:4;	signed:1;
+
+print fmt: "id=%llu ret=%d (0x%x)", REC->id, REC->ret, REC->ret
diff --git a/src/traced/probes/ftrace/test/data/synthetic/events/trusty/trusty_share_memory/format b/src/traced/probes/ftrace/test/data/synthetic/events/trusty/trusty_share_memory/format
new file mode 100644
index 0000000..2e1c233
--- /dev/null
+++ b/src/traced/probes/ftrace/test/data/synthetic/events/trusty/trusty_share_memory/format
@@ -0,0 +1,13 @@
+name: trusty_share_memory
+ID: 842
+format:
+	field:unsigned short common_type;	offset:0;	size:2;	signed:0;
+	field:unsigned char common_flags;	offset:2;	size:1;	signed:0;
+	field:unsigned char common_preempt_count;	offset:3;	size:1;	signed:0;
+	field:int common_pid;	offset:4;	size:4;	signed:1;
+
+	field:size_t len;	offset:8;	size:8;	signed:0;
+	field:unsigned int nents;	offset:16;	size:4;	signed:0;
+	field:bool lend;	offset:20;	size:1;	signed:0;
+
+print fmt: "len=%zu, nents=%u, lend=%u", REC->len, REC->nents, REC->lend
diff --git a/src/traced/probes/ftrace/test/data/synthetic/events/trusty/trusty_share_memory_done/format b/src/traced/probes/ftrace/test/data/synthetic/events/trusty/trusty_share_memory_done/format
new file mode 100644
index 0000000..3ed0469
--- /dev/null
+++ b/src/traced/probes/ftrace/test/data/synthetic/events/trusty/trusty_share_memory_done/format
@@ -0,0 +1,15 @@
+name: trusty_share_memory_done
+ID: 843
+format:
+	field:unsigned short common_type;	offset:0;	size:2;	signed:0;
+	field:unsigned char common_flags;	offset:2;	size:1;	signed:0;
+	field:unsigned char common_preempt_count;	offset:3;	size:1;	signed:0;
+	field:int common_pid;	offset:4;	size:4;	signed:1;
+
+	field:size_t len;	offset:8;	size:8;	signed:0;
+	field:unsigned int nents;	offset:16;	size:4;	signed:0;
+	field:bool lend;	offset:20;	size:1;	signed:0;
+	field:u64 handle;	offset:24;	size:8;	signed:0;
+	field:int ret;	offset:32;	size:4;	signed:1;
+
+print fmt: "len=%zu, nents=%u, lend=%u, ffa_handle=0x%llx, ret=%d", REC->len, REC->nents, REC->lend, REC->handle, REC->ret
diff --git a/src/traced/probes/ftrace/test/data/synthetic/events/trusty/trusty_smc/format b/src/traced/probes/ftrace/test/data/synthetic/events/trusty/trusty_smc/format
new file mode 100644
index 0000000..4f6bf88
--- /dev/null
+++ b/src/traced/probes/ftrace/test/data/synthetic/events/trusty/trusty_smc/format
@@ -0,0 +1,14 @@
+name: trusty_smc
+ID: 839
+format:
+	field:unsigned short common_type;	offset:0;	size:2;	signed:0;
+	field:unsigned char common_flags;	offset:2;	size:1;	signed:0;
+	field:unsigned char common_preempt_count;	offset:3;	size:1;	signed:0;
+	field:int common_pid;	offset:4;	size:4;	signed:1;
+
+	field:unsigned long r0;	offset:8;	size:8;	signed:0;
+	field:unsigned long r1;	offset:16;	size:8;	signed:0;
+	field:unsigned long r2;	offset:24;	size:8;	signed:0;
+	field:unsigned long r3;	offset:32;	size:8;	signed:0;
+
+print fmt: "smcnr=%s r0=0x%lx r1=0x%lx r2=0x%lx r3=0x%lx", __print_symbolic(REC->r0, { ((((0) & 0x1U) << 31) | (((0) & 0x1U) << 30) | ((((60)) & 0x3FU) << 24) | (((0)) & 0xFFFFU) ), "SC_RESTART_LAST" }, { ((((0) & 0x1U) << 31) | (((0) & 0x1U) << 30) | ((((60)) & 0x3FU) << 24) | (((1)) & 0xFFFFU) ), "SC_LOCKED_NOP" }, { ((((0) & 0x1U) << 31) | (((0) & 0x1U) << 30) | ((((60)) & 0x3FU) << 24) | (((2)) & 0xFFFFU) ), "SC_RESTART_FIQ" }, { ((((0) & 0x1U) << 31) | (((0) & 0x1U) << 30) | ((((60)) & 0x3FU) << 24) | (((3)) & 0xFFFFU) ), "SC_NOP" }, { ((((1) & 0x1U) << 31) | (((0) & 0x1U) << 30) | ((((60)) & 0x3FU) << 24) | (((0)) & 0xFFFFU) ), "FC_RESERVED" }, { ((((1) & 0x1U) << 31) | (((0) & 0x1U) << 30) | ((((60)) & 0x3FU) << 24) | (((1)) & 0xFFFFU) ), "FC_FIQ_EXIT" }, { ((((1) & 0x1U) << 31) | (((0) & 0x1U) << 30) | ((((60)) & 0x3FU) << 24) | (((2)) & 0xFFFFU) ), "FC_REQUEST_FIQ" }, { ((((1) & 0x1U) << 31) | (((0) & 0x1U) << 30) | ((((60)) & 0x3FU) << 24) | (((3)) & 0xFFFFU) ), "FC_GET_NEXT_IRQ" }, { ((((1) & 0x1U) << 31) | (((0) & 0x1U) << 30) | ((((60)) & 0x3FU) << 24) | (((7)) & 0xFFFFU) ), "FC_CPU_SUSPEND" }, { ((((1) & 0x1U) << 31) | (((0) & 0x1U) << 30) | ((((60)) & 0x3FU) << 24) | (((8)) & 0xFFFFU) ), "FC_CPU_RESUME" }, { ((((1) & 0x1U) << 31) | (((0) & 0x1U) << 30) | ((((60)) & 0x3FU) << 24) | (((9)) & 0xFFFFU) ), "FC_AARCH_SWITCH" }, { ((((1) & 0x1U) << 31) | (((0) & 0x1U) << 30) | ((((60)) & 0x3FU) << 24) | (((10)) & 0xFFFFU) ), "FC_GET_VERSION_STR" }, { ((((1) & 0x1U) << 31) | (((0) & 0x1U) << 30) | ((((60)) & 0x3FU) << 24) | (((11)) & 0xFFFFU) ), "FC_API_VERSION" }, { ((((0) & 0x1U) << 31) | (((0) & 0x1U) << 30) | ((((50)) & 0x3FU) << 24) | (((20)) & 0xFFFFU) ), "SC_VIRTIO_GET_DESCR" }, { ((((0) & 0x1U) << 31) | (((0) & 0x1U) << 30) | ((((50)) & 0x3FU) << 24) | (((21)) & 0xFFFFU) ), "SC_VIRTIO_START" }, { ((((0) & 0x1U) << 31) | (((0) & 0x1U) << 30) | ((((50)) & 0x3FU) << 24) | (((22)) & 0xFFFFU) ), "SC_VIRTIO_STOP" }, { ((((0) & 0x1U) << 31) | (((0) & 0x1U) << 30) | ((((50)) & 0x3FU) << 24) | (((23)) & 0xFFFFU) ), "SC_VDEV_RESET" }, { ((((0) & 0x1U) << 31) | (((0) & 0x1U) << 30) | ((((50)) & 0x3FU) << 24) | (((24)) & 0xFFFFU) ), "SC_VDEV_KICK_VQ" }, { ((((0) & 0x1U) << 31) | (((0) & 0x1U) << 30) | ((((50)) & 0x3FU) << 24) | (((25)) & 0xFFFFU) ), "NC_VDEV_KICK_VQ" }), REC->r0, REC->r1, REC->r2, REC->r3
diff --git a/src/traced/probes/ftrace/test/data/synthetic/events/trusty/trusty_smc_done/format b/src/traced/probes/ftrace/test/data/synthetic/events/trusty/trusty_smc_done/format
new file mode 100644
index 0000000..026d17f
--- /dev/null
+++ b/src/traced/probes/ftrace/test/data/synthetic/events/trusty/trusty_smc_done/format
@@ -0,0 +1,11 @@
+name: trusty_smc_done
+ID: 841
+format:
+	field:unsigned short common_type;	offset:0;	size:2;	signed:0;
+	field:unsigned char common_flags;	offset:2;	size:1;	signed:0;
+	field:unsigned char common_preempt_count;	offset:3;	size:1;	signed:0;
+	field:int common_pid;	offset:4;	size:4;	signed:1;
+
+	field:unsigned long ret;	offset:8;	size:8;	signed:0;
+
+print fmt: "ret=%d (0x%x)", REC->ret, REC->ret
diff --git a/src/traced/probes/ftrace/test/data/synthetic/events/trusty/trusty_std_call32/format b/src/traced/probes/ftrace/test/data/synthetic/events/trusty/trusty_std_call32/format
new file mode 100644
index 0000000..03b5932
--- /dev/null
+++ b/src/traced/probes/ftrace/test/data/synthetic/events/trusty/trusty_std_call32/format
@@ -0,0 +1,14 @@
+name: trusty_std_call32
+ID: 838
+format:
+	field:unsigned short common_type;	offset:0;	size:2;	signed:0;
+	field:unsigned char common_flags;	offset:2;	size:1;	signed:0;
+	field:unsigned char common_preempt_count;	offset:3;	size:1;	signed:0;
+	field:int common_pid;	offset:4;	size:4;	signed:1;
+
+	field:unsigned long r0;	offset:8;	size:8;	signed:0;
+	field:unsigned long r1;	offset:16;	size:8;	signed:0;
+	field:unsigned long r2;	offset:24;	size:8;	signed:0;
+	field:unsigned long r3;	offset:32;	size:8;	signed:0;
+
+print fmt: "smcnr=%s r0=0x%lx r1=0x%lx r2=0x%lx r3=0x%lx", __print_symbolic(REC->r0, { ((((0) & 0x1U) << 31) | (((0) & 0x1U) << 30) | ((((60)) & 0x3FU) << 24) | (((0)) & 0xFFFFU) ), "SC_RESTART_LAST" }, { ((((0) & 0x1U) << 31) | (((0) & 0x1U) << 30) | ((((60)) & 0x3FU) << 24) | (((1)) & 0xFFFFU) ), "SC_LOCKED_NOP" }, { ((((0) & 0x1U) << 31) | (((0) & 0x1U) << 30) | ((((60)) & 0x3FU) << 24) | (((2)) & 0xFFFFU) ), "SC_RESTART_FIQ" }, { ((((0) & 0x1U) << 31) | (((0) & 0x1U) << 30) | ((((60)) & 0x3FU) << 24) | (((3)) & 0xFFFFU) ), "SC_NOP" }, { ((((1) & 0x1U) << 31) | (((0) & 0x1U) << 30) | ((((60)) & 0x3FU) << 24) | (((0)) & 0xFFFFU) ), "FC_RESERVED" }, { ((((1) & 0x1U) << 31) | (((0) & 0x1U) << 30) | ((((60)) & 0x3FU) << 24) | (((1)) & 0xFFFFU) ), "FC_FIQ_EXIT" }, { ((((1) & 0x1U) << 31) | (((0) & 0x1U) << 30) | ((((60)) & 0x3FU) << 24) | (((2)) & 0xFFFFU) ), "FC_REQUEST_FIQ" }, { ((((1) & 0x1U) << 31) | (((0) & 0x1U) << 30) | ((((60)) & 0x3FU) << 24) | (((3)) & 0xFFFFU) ), "FC_GET_NEXT_IRQ" }, { ((((1) & 0x1U) << 31) | (((0) & 0x1U) << 30) | ((((60)) & 0x3FU) << 24) | (((7)) & 0xFFFFU) ), "FC_CPU_SUSPEND" }, { ((((1) & 0x1U) << 31) | (((0) & 0x1U) << 30) | ((((60)) & 0x3FU) << 24) | (((8)) & 0xFFFFU) ), "FC_CPU_RESUME" }, { ((((1) & 0x1U) << 31) | (((0) & 0x1U) << 30) | ((((60)) & 0x3FU) << 24) | (((9)) & 0xFFFFU) ), "FC_AARCH_SWITCH" }, { ((((1) & 0x1U) << 31) | (((0) & 0x1U) << 30) | ((((60)) & 0x3FU) << 24) | (((10)) & 0xFFFFU) ), "FC_GET_VERSION_STR" }, { ((((1) & 0x1U) << 31) | (((0) & 0x1U) << 30) | ((((60)) & 0x3FU) << 24) | (((11)) & 0xFFFFU) ), "FC_API_VERSION" }, { ((((0) & 0x1U) << 31) | (((0) & 0x1U) << 30) | ((((50)) & 0x3FU) << 24) | (((20)) & 0xFFFFU) ), "SC_VIRTIO_GET_DESCR" }, { ((((0) & 0x1U) << 31) | (((0) & 0x1U) << 30) | ((((50)) & 0x3FU) << 24) | (((21)) & 0xFFFFU) ), "SC_VIRTIO_START" }, { ((((0) & 0x1U) << 31) | (((0) & 0x1U) << 30) | ((((50)) & 0x3FU) << 24) | (((22)) & 0xFFFFU) ), "SC_VIRTIO_STOP" }, { ((((0) & 0x1U) << 31) | (((0) & 0x1U) << 30) | ((((50)) & 0x3FU) << 24) | (((23)) & 0xFFFFU) ), "SC_VDEV_RESET" }, { ((((0) & 0x1U) << 31) | (((0) & 0x1U) << 30) | ((((50)) & 0x3FU) << 24) | (((24)) & 0xFFFFU) ), "SC_VDEV_KICK_VQ" }, { ((((0) & 0x1U) << 31) | (((0) & 0x1U) << 30) | ((((50)) & 0x3FU) << 24) | (((25)) & 0xFFFFU) ), "NC_VDEV_KICK_VQ" }), REC->r0, REC->r1, REC->r2, REC->r3
diff --git a/src/traced/probes/ftrace/test/data/synthetic/events/trusty/trusty_std_call32_done/format b/src/traced/probes/ftrace/test/data/synthetic/events/trusty/trusty_std_call32_done/format
new file mode 100644
index 0000000..866da41
--- /dev/null
+++ b/src/traced/probes/ftrace/test/data/synthetic/events/trusty/trusty_std_call32_done/format
@@ -0,0 +1,11 @@
+name: trusty_std_call32_done
+ID: 840
+format:
+	field:unsigned short common_type;	offset:0;	size:2;	signed:0;
+	field:unsigned char common_flags;	offset:2;	size:1;	signed:0;
+	field:unsigned char common_preempt_count;	offset:3;	size:1;	signed:0;
+	field:int common_pid;	offset:4;	size:4;	signed:1;
+
+	field:long ret;	offset:8;	size:8;	signed:1;
+
+print fmt: "ret=%d (0x%x)", REC->ret, REC->ret