Merge "add google_icc_trace and google_irm_trace group ftrace events" into main
diff --git a/Android.bp b/Android.bp
index f8e8b03..dcb6477 100644
--- a/Android.bp
+++ b/Android.bp
@@ -5987,6 +5987,8 @@
         "protos/perfetto/trace/ftrace/ftrace_stats.proto",
         "protos/perfetto/trace/ftrace/g2d.proto",
         "protos/perfetto/trace/ftrace/generic.proto",
+        "protos/perfetto/trace/ftrace/google_icc_trace.proto",
+        "protos/perfetto/trace/ftrace/google_irm_trace.proto",
         "protos/perfetto/trace/ftrace/gpu_mem.proto",
         "protos/perfetto/trace/ftrace/gpu_scheduler.proto",
         "protos/perfetto/trace/ftrace/hyp.proto",
@@ -6409,6 +6411,8 @@
         "protos/perfetto/trace/ftrace/ftrace_stats.proto",
         "protos/perfetto/trace/ftrace/g2d.proto",
         "protos/perfetto/trace/ftrace/generic.proto",
+        "protos/perfetto/trace/ftrace/google_icc_trace.proto",
+        "protos/perfetto/trace/ftrace/google_irm_trace.proto",
         "protos/perfetto/trace/ftrace/gpu_mem.proto",
         "protos/perfetto/trace/ftrace/gpu_scheduler.proto",
         "protos/perfetto/trace/ftrace/hyp.proto",
@@ -6492,6 +6496,8 @@
         "external/perfetto/protos/perfetto/trace/ftrace/ftrace_stats.gen.cc",
         "external/perfetto/protos/perfetto/trace/ftrace/g2d.gen.cc",
         "external/perfetto/protos/perfetto/trace/ftrace/generic.gen.cc",
+        "external/perfetto/protos/perfetto/trace/ftrace/google_icc_trace.gen.cc",
+        "external/perfetto/protos/perfetto/trace/ftrace/google_irm_trace.gen.cc",
         "external/perfetto/protos/perfetto/trace/ftrace/gpu_mem.gen.cc",
         "external/perfetto/protos/perfetto/trace/ftrace/gpu_scheduler.gen.cc",
         "external/perfetto/protos/perfetto/trace/ftrace/hyp.gen.cc",
@@ -6575,6 +6581,8 @@
         "external/perfetto/protos/perfetto/trace/ftrace/ftrace_stats.gen.h",
         "external/perfetto/protos/perfetto/trace/ftrace/g2d.gen.h",
         "external/perfetto/protos/perfetto/trace/ftrace/generic.gen.h",
+        "external/perfetto/protos/perfetto/trace/ftrace/google_icc_trace.gen.h",
+        "external/perfetto/protos/perfetto/trace/ftrace/google_irm_trace.gen.h",
         "external/perfetto/protos/perfetto/trace/ftrace/gpu_mem.gen.h",
         "external/perfetto/protos/perfetto/trace/ftrace/gpu_scheduler.gen.h",
         "external/perfetto/protos/perfetto/trace/ftrace/hyp.gen.h",
@@ -6654,6 +6662,8 @@
         "protos/perfetto/trace/ftrace/ftrace_stats.proto",
         "protos/perfetto/trace/ftrace/g2d.proto",
         "protos/perfetto/trace/ftrace/generic.proto",
+        "protos/perfetto/trace/ftrace/google_icc_trace.proto",
+        "protos/perfetto/trace/ftrace/google_irm_trace.proto",
         "protos/perfetto/trace/ftrace/gpu_mem.proto",
         "protos/perfetto/trace/ftrace/gpu_scheduler.proto",
         "protos/perfetto/trace/ftrace/hyp.proto",
@@ -6736,6 +6746,8 @@
         "external/perfetto/protos/perfetto/trace/ftrace/ftrace_stats.pb.cc",
         "external/perfetto/protos/perfetto/trace/ftrace/g2d.pb.cc",
         "external/perfetto/protos/perfetto/trace/ftrace/generic.pb.cc",
+        "external/perfetto/protos/perfetto/trace/ftrace/google_icc_trace.pb.cc",
+        "external/perfetto/protos/perfetto/trace/ftrace/google_irm_trace.pb.cc",
         "external/perfetto/protos/perfetto/trace/ftrace/gpu_mem.pb.cc",
         "external/perfetto/protos/perfetto/trace/ftrace/gpu_scheduler.pb.cc",
         "external/perfetto/protos/perfetto/trace/ftrace/hyp.pb.cc",
@@ -6818,6 +6830,8 @@
         "external/perfetto/protos/perfetto/trace/ftrace/ftrace_stats.pb.h",
         "external/perfetto/protos/perfetto/trace/ftrace/g2d.pb.h",
         "external/perfetto/protos/perfetto/trace/ftrace/generic.pb.h",
+        "external/perfetto/protos/perfetto/trace/ftrace/google_icc_trace.pb.h",
+        "external/perfetto/protos/perfetto/trace/ftrace/google_irm_trace.pb.h",
         "external/perfetto/protos/perfetto/trace/ftrace/gpu_mem.pb.h",
         "external/perfetto/protos/perfetto/trace/ftrace/gpu_scheduler.pb.h",
         "external/perfetto/protos/perfetto/trace/ftrace/hyp.pb.h",
@@ -6897,6 +6911,8 @@
         "protos/perfetto/trace/ftrace/ftrace_stats.proto",
         "protos/perfetto/trace/ftrace/g2d.proto",
         "protos/perfetto/trace/ftrace/generic.proto",
+        "protos/perfetto/trace/ftrace/google_icc_trace.proto",
+        "protos/perfetto/trace/ftrace/google_irm_trace.proto",
         "protos/perfetto/trace/ftrace/gpu_mem.proto",
         "protos/perfetto/trace/ftrace/gpu_scheduler.proto",
         "protos/perfetto/trace/ftrace/hyp.proto",
@@ -6980,6 +6996,8 @@
         "external/perfetto/protos/perfetto/trace/ftrace/ftrace_stats.pbzero.cc",
         "external/perfetto/protos/perfetto/trace/ftrace/g2d.pbzero.cc",
         "external/perfetto/protos/perfetto/trace/ftrace/generic.pbzero.cc",
+        "external/perfetto/protos/perfetto/trace/ftrace/google_icc_trace.pbzero.cc",
+        "external/perfetto/protos/perfetto/trace/ftrace/google_irm_trace.pbzero.cc",
         "external/perfetto/protos/perfetto/trace/ftrace/gpu_mem.pbzero.cc",
         "external/perfetto/protos/perfetto/trace/ftrace/gpu_scheduler.pbzero.cc",
         "external/perfetto/protos/perfetto/trace/ftrace/hyp.pbzero.cc",
@@ -7063,6 +7081,8 @@
         "external/perfetto/protos/perfetto/trace/ftrace/ftrace_stats.pbzero.h",
         "external/perfetto/protos/perfetto/trace/ftrace/g2d.pbzero.h",
         "external/perfetto/protos/perfetto/trace/ftrace/generic.pbzero.h",
+        "external/perfetto/protos/perfetto/trace/ftrace/google_icc_trace.pbzero.h",
+        "external/perfetto/protos/perfetto/trace/ftrace/google_irm_trace.pbzero.h",
         "external/perfetto/protos/perfetto/trace/ftrace/gpu_mem.pbzero.h",
         "external/perfetto/protos/perfetto/trace/ftrace/gpu_scheduler.pbzero.h",
         "external/perfetto/protos/perfetto/trace/ftrace/hyp.pbzero.h",
@@ -13906,6 +13926,8 @@
         "protos/perfetto/trace/ftrace/ftrace_stats.proto",
         "protos/perfetto/trace/ftrace/g2d.proto",
         "protos/perfetto/trace/ftrace/generic.proto",
+        "protos/perfetto/trace/ftrace/google_icc_trace.proto",
+        "protos/perfetto/trace/ftrace/google_irm_trace.proto",
         "protos/perfetto/trace/ftrace/gpu_mem.proto",
         "protos/perfetto/trace/ftrace/gpu_scheduler.proto",
         "protos/perfetto/trace/ftrace/hyp.proto",
@@ -14124,6 +14146,8 @@
         "protos/perfetto/trace/ftrace/ftrace_stats.proto",
         "protos/perfetto/trace/ftrace/g2d.proto",
         "protos/perfetto/trace/ftrace/generic.proto",
+        "protos/perfetto/trace/ftrace/google_icc_trace.proto",
+        "protos/perfetto/trace/ftrace/google_irm_trace.proto",
         "protos/perfetto/trace/ftrace/gpu_mem.proto",
         "protos/perfetto/trace/ftrace/gpu_scheduler.proto",
         "protos/perfetto/trace/ftrace/hyp.proto",
diff --git a/BUILD b/BUILD
index c6408f1..2ad7c9c 100644
--- a/BUILD
+++ b/BUILD
@@ -4780,6 +4780,8 @@
         "protos/perfetto/trace/ftrace/ftrace_stats.proto",
         "protos/perfetto/trace/ftrace/g2d.proto",
         "protos/perfetto/trace/ftrace/generic.proto",
+        "protos/perfetto/trace/ftrace/google_icc_trace.proto",
+        "protos/perfetto/trace/ftrace/google_irm_trace.proto",
         "protos/perfetto/trace/ftrace/gpu_mem.proto",
         "protos/perfetto/trace/ftrace/gpu_scheduler.proto",
         "protos/perfetto/trace/ftrace/hyp.proto",
diff --git a/protos/perfetto/trace/ftrace/all_protos.gni b/protos/perfetto/trace/ftrace/all_protos.gni
index 39e5ba2..910d067 100644
--- a/protos/perfetto/trace/ftrace/all_protos.gni
+++ b/protos/perfetto/trace/ftrace/all_protos.gni
@@ -40,6 +40,8 @@
   "filemap.proto",
   "ftrace.proto",
   "g2d.proto",
+  "google_icc_trace.proto",
+  "google_irm_trace.proto",
   "gpu_mem.proto",
   "gpu_scheduler.proto",
   "hyp.proto",
diff --git a/protos/perfetto/trace/ftrace/ftrace_event.proto b/protos/perfetto/trace/ftrace/ftrace_event.proto
index 302de2a..c75f932 100644
--- a/protos/perfetto/trace/ftrace/ftrace_event.proto
+++ b/protos/perfetto/trace/ftrace/ftrace_event.proto
@@ -40,6 +40,8 @@
 import "protos/perfetto/trace/ftrace/filemap.proto";
 import "protos/perfetto/trace/ftrace/ftrace.proto";
 import "protos/perfetto/trace/ftrace/g2d.proto";
+import "protos/perfetto/trace/ftrace/google_icc_trace.proto";
+import "protos/perfetto/trace/ftrace/google_irm_trace.proto";
 import "protos/perfetto/trace/ftrace/gpu_mem.proto";
 import "protos/perfetto/trace/ftrace/gpu_scheduler.proto";
 import "protos/perfetto/trace/ftrace/hyp.proto";
@@ -618,5 +620,7 @@
     FastrpcDmaAllocFtraceEvent fastrpc_dma_alloc = 499;
     FastrpcDmaUnmapFtraceEvent fastrpc_dma_unmap = 500;
     FastrpcDmaMapFtraceEvent fastrpc_dma_map = 501;
+    GoogleIccEventFtraceEvent google_icc_event = 502;
+    GoogleIrmEventFtraceEvent google_irm_event = 503;
   }
 }
diff --git a/protos/perfetto/trace/ftrace/google_icc_trace.proto b/protos/perfetto/trace/ftrace/google_icc_trace.proto
new file mode 100644
index 0000000..07861c8
--- /dev/null
+++ b/protos/perfetto/trace/ftrace/google_icc_trace.proto
@@ -0,0 +1,11 @@
+// Autogenerated by:
+// ../../src/tools/ftrace_proto_gen/ftrace_proto_gen.cc
+// Do not edit.
+
+syntax = "proto2";
+package perfetto.protos;
+
+message GoogleIccEventFtraceEvent {
+  optional string event = 1;
+  optional uint64 timestamp = 2;
+}
diff --git a/protos/perfetto/trace/ftrace/google_irm_trace.proto b/protos/perfetto/trace/ftrace/google_irm_trace.proto
new file mode 100644
index 0000000..140ee13
--- /dev/null
+++ b/protos/perfetto/trace/ftrace/google_irm_trace.proto
@@ -0,0 +1,11 @@
+// Autogenerated by:
+// ../../src/tools/ftrace_proto_gen/ftrace_proto_gen.cc
+// Do not edit.
+
+syntax = "proto2";
+package perfetto.protos;
+
+message GoogleIrmEventFtraceEvent {
+  optional string event = 1;
+  optional uint64 timestamp = 2;
+}
diff --git a/protos/perfetto/trace/perfetto_trace.proto b/protos/perfetto/trace/perfetto_trace.proto
index 81977bf..5ca1994 100644
--- a/protos/perfetto/trace/perfetto_trace.proto
+++ b/protos/perfetto/trace/perfetto_trace.proto
@@ -8517,6 +8517,24 @@
 
 // End of protos/perfetto/trace/ftrace/generic.proto
 
+// Begin of protos/perfetto/trace/ftrace/google_icc_trace.proto
+
+message GoogleIccEventFtraceEvent {
+  optional string event = 1;
+  optional uint64 timestamp = 2;
+}
+
+// End of protos/perfetto/trace/ftrace/google_icc_trace.proto
+
+// Begin of protos/perfetto/trace/ftrace/google_irm_trace.proto
+
+message GoogleIrmEventFtraceEvent {
+  optional string event = 1;
+  optional uint64 timestamp = 2;
+}
+
+// End of protos/perfetto/trace/ftrace/google_irm_trace.proto
+
 // Begin of protos/perfetto/trace/ftrace/gpu_mem.proto
 
 message GpuMemTotalFtraceEvent {
@@ -10765,6 +10783,8 @@
     FastrpcDmaAllocFtraceEvent fastrpc_dma_alloc = 499;
     FastrpcDmaUnmapFtraceEvent fastrpc_dma_unmap = 500;
     FastrpcDmaMapFtraceEvent fastrpc_dma_map = 501;
+    GoogleIccEventFtraceEvent google_icc_event = 502;
+    GoogleIrmEventFtraceEvent google_irm_event = 503;
   }
 }
 
diff --git a/src/tools/ftrace_proto_gen/event_list b/src/tools/ftrace_proto_gen/event_list
index 3d5ead4..0bc44e0 100644
--- a/src/tools/ftrace_proto_gen/event_list
+++ b/src/tools/ftrace_proto_gen/event_list
@@ -496,3 +496,5 @@
 fastrpc/fastrpc_dma_alloc
 fastrpc/fastrpc_dma_unmap
 fastrpc/fastrpc_dma_map
+google_icc_trace/google_icc_event
+google_irm_trace/google_irm_event
diff --git a/src/trace_processor/importers/common/track_tracker.cc b/src/trace_processor/importers/common/track_tracker.cc
index ca5ffbd..5026391 100644
--- a/src/trace_processor/importers/common/track_tracker.cc
+++ b/src/trace_processor/importers/common/track_tracker.cc
@@ -249,6 +249,18 @@
   return *trigger_track_id_;
 }
 
+TrackId TrackTracker::GetOrCreateInterconnectTrack() {
+  if (interconnect_events_track_id_) {
+    return *interconnect_events_track_id_;
+  }
+  tables::TrackTable::Row row;
+  row.name = context_->storage->InternString("Interconnect Events");
+  row.machine_id = context_->machine_id();
+  interconnect_events_track_id_ =
+      context_->storage->mutable_track_table()->Insert(row).id;
+  return *interconnect_events_track_id_;
+}
+
 TrackId TrackTracker::InternGlobalCounterTrack(TrackTracker::Group group,
                                                StringId name,
                                                SetArgsCallback callback,
diff --git a/src/trace_processor/importers/common/track_tracker.h b/src/trace_processor/importers/common/track_tracker.h
index a7d481a..0fec299 100644
--- a/src/trace_processor/importers/common/track_tracker.h
+++ b/src/trace_processor/importers/common/track_tracker.h
@@ -88,6 +88,9 @@
   // received by the service.
   TrackId GetOrCreateTriggerTrack();
 
+  // Returns the ID of the track for Google Interconnect events
+  TrackId GetOrCreateInterconnectTrack();
+
   // Interns a global counter track into the storage.
   TrackId InternGlobalCounterTrack(Group group,
                                    StringId name,
@@ -224,6 +227,7 @@
 
   std::optional<TrackId> chrome_global_instant_track_id_;
   std::optional<TrackId> trigger_track_id_;
+  std::optional<TrackId> interconnect_events_track_id_;
 
   const StringId source_key_ = kNullStringId;
   const StringId trace_id_key_ = kNullStringId;
diff --git a/src/trace_processor/importers/ftrace/ftrace_descriptors.cc b/src/trace_processor/importers/ftrace/ftrace_descriptors.cc
index 0955a25..aafa9b4 100644
--- a/src/trace_processor/importers/ftrace/ftrace_descriptors.cc
+++ b/src/trace_processor/importers/ftrace/ftrace_descriptors.cc
@@ -24,7 +24,7 @@
 namespace trace_processor {
 namespace {
 
-std::array<FtraceMessageDescriptor, 502> descriptors{{
+std::array<FtraceMessageDescriptor, 504> descriptors{{
     {nullptr, 0, {}},
     {nullptr, 0, {}},
     {nullptr, 0, {}},
@@ -5547,6 +5547,24 @@
             {"mflags", ProtoSchemaType::kInt32},
         },
     },
+    {
+        "google_icc_event",
+        2,
+        {
+            {},
+            {"event", ProtoSchemaType::kString},
+            {"timestamp", ProtoSchemaType::kUint64},
+        },
+    },
+    {
+        "google_irm_event",
+        2,
+        {
+            {},
+            {"event", ProtoSchemaType::kString},
+            {"timestamp", ProtoSchemaType::kUint64},
+        },
+    },
 }};
 
 }  // namespace
diff --git a/src/trace_processor/importers/ftrace/ftrace_parser.cc b/src/trace_processor/importers/ftrace/ftrace_parser.cc
index 4390a71..ba8a259 100644
--- a/src/trace_processor/importers/ftrace/ftrace_parser.cc
+++ b/src/trace_processor/importers/ftrace/ftrace_parser.cc
@@ -57,6 +57,8 @@
 #include "protos/perfetto/trace/ftrace/ftrace_stats.pbzero.h"
 #include "protos/perfetto/trace/ftrace/g2d.pbzero.h"
 #include "protos/perfetto/trace/ftrace/generic.pbzero.h"
+#include "protos/perfetto/trace/ftrace/google_icc_trace.pbzero.h"
+#include "protos/perfetto/trace/ftrace/google_irm_trace.pbzero.h"
 #include "protos/perfetto/trace/ftrace/gpu_mem.pbzero.h"
 #include "protos/perfetto/trace/ftrace/i2c.pbzero.h"
 #include "protos/perfetto/trace/ftrace/ion.pbzero.h"
@@ -339,6 +341,8 @@
       android_fs_category_id_(context_->storage->InternString("android_fs")),
       android_fs_data_read_id_(
           context_->storage->InternString("android_fs_data_read")),
+      google_icc_event_id_(context->storage->InternString("google_icc_event")),
+      google_irm_event_id_(context->storage->InternString("google_irm_event")),
       runtime_status_invalid_id_(
           context->storage->InternString("Invalid State")),
       runtime_status_active_id_(context->storage->InternString("Active")),
@@ -1148,6 +1152,14 @@
         ParsePanelWriteGeneric(ts, pid, fld_bytes);
         break;
       }
+      case FtraceEvent::kGoogleIccEventFieldNumber: {
+        ParseGoogleIccEvent(ts, fld_bytes);
+        break;
+      }
+      case FtraceEvent::kGoogleIrmEventFieldNumber: {
+        ParseGoogleIrmEvent(ts, fld_bytes);
+        break;
+      }
       default:
         break;
     }
@@ -1610,6 +1622,24 @@
       evt.func_name(), tgid, evt.value());
 }
 
+void FtraceParser::ParseGoogleIccEvent(int64_t timestamp, ConstBytes blob) {
+  protos::pbzero::GoogleIccEventFtraceEvent::Decoder evt(blob.data, blob.size);
+  TrackId track_id = context_->track_tracker->GetOrCreateInterconnectTrack();
+  StringId slice_name_id =
+      context_->storage->InternString(base::StringView(evt.event()));
+  context_->slice_tracker->Scoped(timestamp, track_id, google_icc_event_id_,
+                                  slice_name_id, 0);
+}
+
+void FtraceParser::ParseGoogleIrmEvent(int64_t timestamp, ConstBytes blob) {
+  protos::pbzero::GoogleIrmEventFtraceEvent::Decoder evt(blob.data, blob.size);
+  TrackId track_id = context_->track_tracker->GetOrCreateInterconnectTrack();
+  StringId slice_name_id =
+      context_->storage->InternString(base::StringView(evt.event()));
+  context_->slice_tracker->Scoped(timestamp, track_id, google_irm_event_id_,
+                                  slice_name_id, 0);
+}
+
 /** Parses ion heap events present in Pixel kernels. */
 void FtraceParser::ParseIonHeapGrowOrShrink(int64_t timestamp,
                                             uint32_t pid,
diff --git a/src/trace_processor/importers/ftrace/ftrace_parser.h b/src/trace_processor/importers/ftrace/ftrace_parser.h
index 6c84c6d..619b8d4 100644
--- a/src/trace_processor/importers/ftrace/ftrace_parser.h
+++ b/src/trace_processor/importers/ftrace/ftrace_parser.h
@@ -301,6 +301,8 @@
   void ParsePanelWriteGeneric(int64_t timestamp,
                               uint32_t pid,
                               protozero::ConstBytes);
+  void ParseGoogleIccEvent(int64_t timestamp, protozero::ConstBytes);
+  void ParseGoogleIrmEvent(int64_t timestamp, protozero::ConstBytes);
 
   TraceProcessorContext* context_;
   RssStatTracker rss_stat_tracker_;
@@ -390,6 +392,8 @@
   const StringId bytes_read_id_end_;
   const StringId android_fs_category_id_;
   const StringId android_fs_data_read_id_;
+  const StringId google_icc_event_id_;
+  const StringId google_irm_event_id_;
   const StringId runtime_status_invalid_id_;
   const StringId runtime_status_active_id_;
   const StringId runtime_status_suspending_id_;
diff --git a/src/traced/probes/ftrace/event_info.cc b/src/traced/probes/ftrace/event_info.cc
index 09615fe..23fc16a 100644
--- a/src/traced/probes/ftrace/event_info.cc
+++ b/src/traced/probes/ftrace/event_info.cc
@@ -5024,6 +5024,32 @@
        kUnsetFtraceId,
        349,
        kUnsetSize},
+      {"google_icc_event",
+       "google_icc_trace",
+       {
+           {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+            "event", 1, ProtoSchemaType::kString,
+            TranslationStrategy::kInvalidTranslationStrategy},
+           {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+            "timestamp", 2, ProtoSchemaType::kUint64,
+            TranslationStrategy::kInvalidTranslationStrategy},
+       },
+       kUnsetFtraceId,
+       502,
+       kUnsetSize},
+      {"google_irm_event",
+       "google_irm_trace",
+       {
+           {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+            "event", 1, ProtoSchemaType::kString,
+            TranslationStrategy::kInvalidTranslationStrategy},
+           {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+            "timestamp", 2, ProtoSchemaType::kUint64,
+            TranslationStrategy::kInvalidTranslationStrategy},
+       },
+       kUnsetFtraceId,
+       503,
+       kUnsetSize},
       {"gpu_mem_total",
        "gpu_mem",
        {
diff --git a/src/traced/probes/ftrace/test/data/synthetic/events/google_icc_trace/google_icc_event/format b/src/traced/probes/ftrace/test/data/synthetic/events/google_icc_trace/google_icc_event/format
new file mode 100644
index 0000000..ffbfdab
--- /dev/null
+++ b/src/traced/probes/ftrace/test/data/synthetic/events/google_icc_trace/google_icc_event/format
@@ -0,0 +1,12 @@
+name: google_icc_event
+ID: 1559
+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:__data_loc char[] event;  offset:8;       size:4; signed:0;
+        field:u64 timestamp;    offset:16;      size:8; signed:0;
+
+print fmt: "event: %s, timestamp: %llu", __get_str(event), REC->timestamp
diff --git a/src/traced/probes/ftrace/test/data/synthetic/events/google_irm_trace/google_irm_event/format b/src/traced/probes/ftrace/test/data/synthetic/events/google_irm_trace/google_irm_event/format
new file mode 100644
index 0000000..fcacc10
--- /dev/null
+++ b/src/traced/probes/ftrace/test/data/synthetic/events/google_irm_trace/google_irm_event/format
@@ -0,0 +1,12 @@
+name: google_irm_event
+ID: 1561
+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:__data_loc char[] event;  offset:8;       size:4; signed:0;
+        field:u64 timestamp;    offset:16;      size:8; signed:0;
+
+print fmt: "event: %s, timestamp: %llu", __get_str(event), REC->timestamp
\ No newline at end of file