Add fastrpc_dma_stat

Bug: 170189835
Change-Id: I21f0ae7625856b2477cb52fb529227aaccf533f6
diff --git a/Android.bp b/Android.bp
index e50aed9..3369a9b 100644
--- a/Android.bp
+++ b/Android.bp
@@ -3718,6 +3718,7 @@
     "protos/perfetto/trace/ftrace/cpuhp.proto",
     "protos/perfetto/trace/ftrace/ext4.proto",
     "protos/perfetto/trace/ftrace/f2fs.proto",
+    "protos/perfetto/trace/ftrace/fastrpc.proto",
     "protos/perfetto/trace/ftrace/fence.proto",
     "protos/perfetto/trace/ftrace/filemap.proto",
     "protos/perfetto/trace/ftrace/ftrace.proto",
@@ -3764,6 +3765,7 @@
     "external/perfetto/protos/perfetto/trace/ftrace/cpuhp.gen.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/ext4.gen.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/f2fs.gen.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/fastrpc.gen.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/fence.gen.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/filemap.gen.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/ftrace.gen.cc",
@@ -3810,6 +3812,7 @@
     "protos/perfetto/trace/ftrace/cpuhp.proto",
     "protos/perfetto/trace/ftrace/ext4.proto",
     "protos/perfetto/trace/ftrace/f2fs.proto",
+    "protos/perfetto/trace/ftrace/fastrpc.proto",
     "protos/perfetto/trace/ftrace/fence.proto",
     "protos/perfetto/trace/ftrace/filemap.proto",
     "protos/perfetto/trace/ftrace/ftrace.proto",
@@ -3856,6 +3859,7 @@
     "external/perfetto/protos/perfetto/trace/ftrace/cpuhp.gen.h",
     "external/perfetto/protos/perfetto/trace/ftrace/ext4.gen.h",
     "external/perfetto/protos/perfetto/trace/ftrace/f2fs.gen.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/fastrpc.gen.h",
     "external/perfetto/protos/perfetto/trace/ftrace/fence.gen.h",
     "external/perfetto/protos/perfetto/trace/ftrace/filemap.gen.h",
     "external/perfetto/protos/perfetto/trace/ftrace/ftrace.gen.h",
@@ -3906,6 +3910,7 @@
     "protos/perfetto/trace/ftrace/cpuhp.proto",
     "protos/perfetto/trace/ftrace/ext4.proto",
     "protos/perfetto/trace/ftrace/f2fs.proto",
+    "protos/perfetto/trace/ftrace/fastrpc.proto",
     "protos/perfetto/trace/ftrace/fence.proto",
     "protos/perfetto/trace/ftrace/filemap.proto",
     "protos/perfetto/trace/ftrace/ftrace.proto",
@@ -3951,6 +3956,7 @@
     "external/perfetto/protos/perfetto/trace/ftrace/cpuhp.pb.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/ext4.pb.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/f2fs.pb.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/fastrpc.pb.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/fence.pb.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/filemap.pb.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/ftrace.pb.cc",
@@ -3997,6 +4003,7 @@
     "protos/perfetto/trace/ftrace/cpuhp.proto",
     "protos/perfetto/trace/ftrace/ext4.proto",
     "protos/perfetto/trace/ftrace/f2fs.proto",
+    "protos/perfetto/trace/ftrace/fastrpc.proto",
     "protos/perfetto/trace/ftrace/fence.proto",
     "protos/perfetto/trace/ftrace/filemap.proto",
     "protos/perfetto/trace/ftrace/ftrace.proto",
@@ -4042,6 +4049,7 @@
     "external/perfetto/protos/perfetto/trace/ftrace/cpuhp.pb.h",
     "external/perfetto/protos/perfetto/trace/ftrace/ext4.pb.h",
     "external/perfetto/protos/perfetto/trace/ftrace/f2fs.pb.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/fastrpc.pb.h",
     "external/perfetto/protos/perfetto/trace/ftrace/fence.pb.h",
     "external/perfetto/protos/perfetto/trace/ftrace/filemap.pb.h",
     "external/perfetto/protos/perfetto/trace/ftrace/ftrace.pb.h",
@@ -4092,6 +4100,7 @@
     "protos/perfetto/trace/ftrace/cpuhp.proto",
     "protos/perfetto/trace/ftrace/ext4.proto",
     "protos/perfetto/trace/ftrace/f2fs.proto",
+    "protos/perfetto/trace/ftrace/fastrpc.proto",
     "protos/perfetto/trace/ftrace/fence.proto",
     "protos/perfetto/trace/ftrace/filemap.proto",
     "protos/perfetto/trace/ftrace/ftrace.proto",
@@ -4138,6 +4147,7 @@
     "external/perfetto/protos/perfetto/trace/ftrace/cpuhp.pbzero.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/ext4.pbzero.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/f2fs.pbzero.cc",
+    "external/perfetto/protos/perfetto/trace/ftrace/fastrpc.pbzero.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/fence.pbzero.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/filemap.pbzero.cc",
     "external/perfetto/protos/perfetto/trace/ftrace/ftrace.pbzero.cc",
@@ -4184,6 +4194,7 @@
     "protos/perfetto/trace/ftrace/cpuhp.proto",
     "protos/perfetto/trace/ftrace/ext4.proto",
     "protos/perfetto/trace/ftrace/f2fs.proto",
+    "protos/perfetto/trace/ftrace/fastrpc.proto",
     "protos/perfetto/trace/ftrace/fence.proto",
     "protos/perfetto/trace/ftrace/filemap.proto",
     "protos/perfetto/trace/ftrace/ftrace.proto",
@@ -4230,6 +4241,7 @@
     "external/perfetto/protos/perfetto/trace/ftrace/cpuhp.pbzero.h",
     "external/perfetto/protos/perfetto/trace/ftrace/ext4.pbzero.h",
     "external/perfetto/protos/perfetto/trace/ftrace/f2fs.pbzero.h",
+    "external/perfetto/protos/perfetto/trace/ftrace/fastrpc.pbzero.h",
     "external/perfetto/protos/perfetto/trace/ftrace/fence.pbzero.h",
     "external/perfetto/protos/perfetto/trace/ftrace/filemap.pbzero.h",
     "external/perfetto/protos/perfetto/trace/ftrace/ftrace.pbzero.h",
diff --git a/BUILD b/BUILD
index 241139e..585aee3 100644
--- a/BUILD
+++ b/BUILD
@@ -2327,6 +2327,7 @@
         "protos/perfetto/trace/ftrace/cpuhp.proto",
         "protos/perfetto/trace/ftrace/ext4.proto",
         "protos/perfetto/trace/ftrace/f2fs.proto",
+        "protos/perfetto/trace/ftrace/fastrpc.proto",
         "protos/perfetto/trace/ftrace/fence.proto",
         "protos/perfetto/trace/ftrace/filemap.proto",
         "protos/perfetto/trace/ftrace/ftrace.proto",
diff --git a/protos/perfetto/trace/ftrace/all_protos.gni b/protos/perfetto/trace/ftrace/all_protos.gni
index 74f00d3..5745ab2 100644
--- a/protos/perfetto/trace/ftrace/all_protos.gni
+++ b/protos/perfetto/trace/ftrace/all_protos.gni
@@ -28,6 +28,7 @@
   "cpuhp.proto",
   "ext4.proto",
   "f2fs.proto",
+  "fastrpc.proto",
   "fence.proto",
   "filemap.proto",
   "ftrace.proto",
diff --git a/protos/perfetto/trace/ftrace/fastrpc.proto b/protos/perfetto/trace/ftrace/fastrpc.proto
new file mode 100644
index 0000000..15d694c
--- /dev/null
+++ b/protos/perfetto/trace/ftrace/fastrpc.proto
@@ -0,0 +1,12 @@
+// Autogenerated by:
+// ../../tools/ftrace_proto_gen/ftrace_proto_gen.cc
+// Do not edit.
+
+syntax = "proto2";
+package perfetto.protos;
+
+message FastrpcDmaStatFtraceEvent {
+  optional int32 cid = 1;
+  optional int64 len = 2;
+  optional uint64 total_allocated = 3;
+}
diff --git a/protos/perfetto/trace/ftrace/ftrace_event.proto b/protos/perfetto/trace/ftrace/ftrace_event.proto
index 3550a9f..2895afd 100644
--- a/protos/perfetto/trace/ftrace/ftrace_event.proto
+++ b/protos/perfetto/trace/ftrace/ftrace_event.proto
@@ -28,6 +28,7 @@
 import "protos/perfetto/trace/ftrace/cpuhp.proto";
 import "protos/perfetto/trace/ftrace/ext4.proto";
 import "protos/perfetto/trace/ftrace/f2fs.proto";
+import "protos/perfetto/trace/ftrace/fastrpc.proto";
 import "protos/perfetto/trace/ftrace/fence.proto";
 import "protos/perfetto/trace/ftrace/filemap.proto";
 import "protos/perfetto/trace/ftrace/ftrace.proto";
@@ -430,5 +431,6 @@
     CpuhpMultiEnterFtraceEvent cpuhp_multi_enter = 344;
     CpuhpEnterFtraceEvent cpuhp_enter = 345;
     CpuhpLatencyFtraceEvent cpuhp_latency = 346;
+    FastrpcDmaStatFtraceEvent fastrpc_dma_stat = 347;
   }
 }
diff --git a/protos/perfetto/trace/perfetto_trace.proto b/protos/perfetto/trace/perfetto_trace.proto
index 36bce25..2da62d5 100644
--- a/protos/perfetto/trace/perfetto_trace.proto
+++ b/protos/perfetto/trace/perfetto_trace.proto
@@ -3597,6 +3597,16 @@
 
 // End of protos/perfetto/trace/ftrace/f2fs.proto
 
+// Begin of protos/perfetto/trace/ftrace/fastrpc.proto
+
+message FastrpcDmaStatFtraceEvent {
+  optional int32 cid = 1;
+  optional int64 len = 2;
+  optional uint64 total_allocated = 3;
+}
+
+// End of protos/perfetto/trace/ftrace/fastrpc.proto
+
 // Begin of protos/perfetto/trace/ftrace/fence.proto
 
 message FenceInitFtraceEvent {
@@ -4901,6 +4911,7 @@
     CpuhpMultiEnterFtraceEvent cpuhp_multi_enter = 344;
     CpuhpEnterFtraceEvent cpuhp_enter = 345;
     CpuhpLatencyFtraceEvent cpuhp_latency = 346;
+    FastrpcDmaStatFtraceEvent fastrpc_dma_stat = 347;
   }
 }
 
diff --git a/src/traced/probes/ftrace/event_info.cc b/src/traced/probes/ftrace/event_info.cc
index fa18e1c..d901fa0 100644
--- a/src/traced/probes/ftrace/event_info.cc
+++ b/src/traced/probes/ftrace/event_info.cc
@@ -3899,6 +3899,22 @@
        kUnsetFtraceId,
        273,
        kUnsetSize},
+      {"fastrpc_dma_stat",
+       "fastrpc",
+       {
+           {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+            "cid", 1, ProtoSchemaType::kInt32,
+            TranslationStrategy::kInvalidTranslationStrategy},
+           {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+            "len", 2, ProtoSchemaType::kInt64,
+            TranslationStrategy::kInvalidTranslationStrategy},
+           {kUnsetOffset, kUnsetSize, FtraceFieldType::kInvalidFtraceFieldType,
+            "total_allocated", 3, ProtoSchemaType::kUint64,
+            TranslationStrategy::kInvalidTranslationStrategy},
+       },
+       kUnsetFtraceId,
+       347,
+       kUnsetSize},
       {"fence_init",
        "fence",
        {
diff --git a/src/traced/probes/ftrace/test/data/synthetic/available_events b/src/traced/probes/ftrace/test/data/synthetic/available_events
index 500dcb2..01dbfeb 100644
--- a/src/traced/probes/ftrace/test/data/synthetic/available_events
+++ b/src/traced/probes/ftrace/test/data/synthetic/available_events
@@ -7,3 +7,4 @@
 clk:clk_disable
 clk:clk_set_rate
 sde:tracing_mark_write
+fastrpc:fastrpc_dma_stat
diff --git a/src/traced/probes/ftrace/test/data/synthetic/events/fastrpc/fastrpc_dma_stat/format b/src/traced/probes/ftrace/test/data/synthetic/events/fastrpc/fastrpc_dma_stat/format
new file mode 100644
index 0000000..d9a922f
--- /dev/null
+++ b/src/traced/probes/ftrace/test/data/synthetic/events/fastrpc/fastrpc_dma_stat/format
@@ -0,0 +1,13 @@
+name: fastrpc_dma_stat
+ID: 1039
+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 cid;	offset:8;	size:4;	signed:1;
+	field:long len;	offset:16;	size:8;	signed:1;
+	field:unsigned long total_allocated;	offset:24;	size:8;	signed:0;
+
+print fmt: "cid=%u len=%ldB total_allocated=%ldB", REC->cid, REC->len, REC->total_allocated
diff --git a/tools/ftrace_proto_gen/event_list b/tools/ftrace_proto_gen/event_list
index 8bff045..82b6d1c 100644
--- a/tools/ftrace_proto_gen/event_list
+++ b/tools/ftrace_proto_gen/event_list
@@ -341,3 +341,4 @@
 cpuhp/cpuhp_multi_enter
 cpuhp/cpuhp_enter
 cpuhp/cpuhp_latency
+fastrpc/fastrpc_dma_stat