Non-functional changes for ftrace descriptor generation

This CL contains the renames and moved code necessary for implementing
the ftrace descriptor generation.

(Only tiny functional change is the implementation of EndsWith)

Bug:120012594
Change-Id: Ia612d4d855c2911604a9801b81ce0497e794e9eb
diff --git a/Android.bp b/Android.bp
index c4777d1..5a6a79b 100644
--- a/Android.bp
+++ b/Android.bp
@@ -2561,6 +2561,7 @@
     "src/tracing/test/tracing_integration_test.cc",
     "tools/ftrace_proto_gen/ftrace_proto_gen.cc",
     "tools/ftrace_proto_gen/ftrace_proto_gen_unittest.cc",
+    "tools/ftrace_proto_gen/proto_gen_utils.cc",
     "tools/sanitizers_unittests/sanitizers_unittest.cc",
   ],
   shared_libs: [
diff --git a/include/perfetto/base/string_utils.h b/include/perfetto/base/string_utils.h
index 9b4248a..fd3b2e9 100644
--- a/include/perfetto/base/string_utils.h
+++ b/include/perfetto/base/string_utils.h
@@ -23,6 +23,8 @@
 namespace base {
 
 bool StartsWith(const std::string& str, const std::string& prefix);
+bool EndsWith(const std::string& str, const std::string& suffix);
+bool Contains(const std::string& haystack, const std::string& needle);
 
 }  // namespace base
 }  // namespace perfetto
diff --git a/include/perfetto/protozero/proto_decoder.h b/include/perfetto/protozero/proto_decoder.h
index 172ad50..1793ffd 100644
--- a/include/perfetto/protozero/proto_decoder.h
+++ b/include/perfetto/protozero/proto_decoder.h
@@ -42,38 +42,38 @@
     };
 
     uint32_t id = 0;
-    protozero::proto_utils::FieldType type;
+    proto_utils::ProtoWireType type;
     union {
       uint64_t int_value;
       LengthDelimited length_limited;
     };
 
     inline uint32_t as_uint32() const {
-      PERFETTO_DCHECK(type == proto_utils::FieldType::kFieldTypeVarInt ||
-                      type == proto_utils::FieldType::kFieldTypeFixed32);
+      PERFETTO_DCHECK(type == proto_utils::ProtoWireType::kVarInt ||
+                      type == proto_utils::ProtoWireType::kFixed32);
       return static_cast<uint32_t>(int_value);
     }
 
     inline int32_t as_int32() const {
-      PERFETTO_DCHECK(type == proto_utils::FieldType::kFieldTypeVarInt ||
-                      type == proto_utils::FieldType::kFieldTypeFixed32);
+      PERFETTO_DCHECK(type == proto_utils::ProtoWireType::kVarInt ||
+                      type == proto_utils::ProtoWireType::kFixed32);
       return static_cast<int32_t>(int_value);
     }
 
     inline uint64_t as_uint64() const {
-      PERFETTO_DCHECK(type == proto_utils::FieldType::kFieldTypeVarInt ||
-                      type == proto_utils::FieldType::kFieldTypeFixed64);
+      PERFETTO_DCHECK(type == proto_utils::ProtoWireType::kVarInt ||
+                      type == proto_utils::ProtoWireType::kFixed64);
       return int_value;
     }
 
     inline int64_t as_int64() const {
-      PERFETTO_DCHECK(type == proto_utils::FieldType::kFieldTypeVarInt ||
-                      type == proto_utils::FieldType::kFieldTypeFixed64);
+      PERFETTO_DCHECK(type == proto_utils::ProtoWireType::kVarInt ||
+                      type == proto_utils::ProtoWireType::kFixed64);
       return static_cast<int64_t>(int_value);
     }
 
     inline float as_float() const {
-      PERFETTO_DCHECK(type == proto_utils::FieldType::kFieldTypeFixed32);
+      PERFETTO_DCHECK(type == proto_utils::ProtoWireType::kFixed32);
       float res;
       uint32_t value32 = static_cast<uint32_t>(int_value);
       memcpy(&res, &value32, sizeof(res));
@@ -81,21 +81,18 @@
     }
 
     inline StringView as_string() const {
-      PERFETTO_DCHECK(type ==
-                      proto_utils::FieldType::kFieldTypeLengthDelimited);
+      PERFETTO_DCHECK(type == proto_utils::ProtoWireType::kLengthDelimited);
       return StringView(reinterpret_cast<const char*>(length_limited.data),
                         length_limited.length);
     }
 
     inline const uint8_t* data() const {
-      PERFETTO_DCHECK(type ==
-                      proto_utils::FieldType::kFieldTypeLengthDelimited);
+      PERFETTO_DCHECK(type == proto_utils::ProtoWireType::kLengthDelimited);
       return length_limited.data;
     }
 
     inline size_t size() const {
-      PERFETTO_DCHECK(type ==
-                      proto_utils::FieldType::kFieldTypeLengthDelimited);
+      PERFETTO_DCHECK(type == proto_utils::ProtoWireType::kLengthDelimited);
       return static_cast<size_t>(length_limited.length);
     }
   };
diff --git a/include/perfetto/protozero/proto_utils.h b/include/perfetto/protozero/proto_utils.h
index a2d9832..0fe5447 100644
--- a/include/perfetto/protozero/proto_utils.h
+++ b/include/perfetto/protozero/proto_utils.h
@@ -29,14 +29,85 @@
 namespace proto_utils {
 
 // See https://developers.google.com/protocol-buffers/docs/encoding wire types.
-
-enum FieldType : uint32_t {
-  kFieldTypeVarInt = 0,
-  kFieldTypeFixed64 = 1,
-  kFieldTypeLengthDelimited = 2,
-  kFieldTypeFixed32 = 5,
+// This is a type encoded into the proto that provides just enough info to
+// find the length of the following value.
+enum class ProtoWireType : uint32_t {
+  kVarInt = 0,
+  kFixed64 = 1,
+  kLengthDelimited = 2,
+  kFixed32 = 5,
 };
 
+// This is the type defined in the proto for each field. This information
+// is used to decide the translation strategy when writing the trace.
+enum class ProtoSchemaType {
+  kUnknown = 0,
+  kDouble,
+  kFloat,
+  kInt64,
+  kUint64,
+  kInt32,
+  kFixed64,
+  kFixed32,
+  kBool,
+  kString,
+  kGroup,  // Deprecated (proto2 only)
+  kMessage,
+  kBytes,
+  kUint32,
+  kEnum,
+  kSfixed32,
+  kSfixed64,
+  kSint32,
+  kSint64,
+};
+
+inline const char* ProtoSchemaToString(ProtoSchemaType v) {
+  switch (v) {
+    case ProtoSchemaType::kUnknown:
+      return "unknown";
+    case ProtoSchemaType::kDouble:
+      return "double";
+    case ProtoSchemaType::kFloat:
+      return "float";
+    case ProtoSchemaType::kInt64:
+      return "int64";
+    case ProtoSchemaType::kUint64:
+      return "uint64";
+    case ProtoSchemaType::kInt32:
+      return "int32";
+    case ProtoSchemaType::kFixed64:
+      return "fixed64";
+    case ProtoSchemaType::kFixed32:
+      return "fixed32";
+    case ProtoSchemaType::kBool:
+      return "bool";
+    case ProtoSchemaType::kString:
+      return "string";
+    case ProtoSchemaType::kGroup:
+      return "group";
+    case ProtoSchemaType::kMessage:
+      return "message";
+    case ProtoSchemaType::kBytes:
+      return "bytes";
+    case ProtoSchemaType::kUint32:
+      return "uint32";
+    case ProtoSchemaType::kEnum:
+      return "enum";
+    case ProtoSchemaType::kSfixed32:
+      return "sfixed32";
+    case ProtoSchemaType::kSfixed64:
+      return "sfixed64";
+    case ProtoSchemaType::kSint32:
+      return "sint32";
+    case ProtoSchemaType::kSint64:
+      return "sint64";
+  }
+  // For gcc:
+  PERFETTO_DCHECK(false);
+  return "";
+}
+
 // Maximum message size supported: 256 MiB (4 x 7-bit due to varint encoding).
 constexpr size_t kMessageLengthFieldSize = 4;
 constexpr size_t kMaxMessageLength = (1u << (kMessageLengthFieldSize * 7)) - 1;
@@ -49,7 +120,7 @@
 
 // Proto types: (int|uint|sint)(32|64), bool, enum.
 constexpr uint32_t MakeTagVarInt(uint32_t field_id) {
-  return (field_id << 3) | kFieldTypeVarInt;
+  return (field_id << 3) | static_cast<uint32_t>(ProtoWireType::kVarInt);
 }
 
 // Proto types: fixed64, sfixed64, fixed32, sfixed32, double, float.
@@ -57,12 +128,14 @@
 constexpr uint32_t MakeTagFixed(uint32_t field_id) {
   static_assert(sizeof(T) == 8 || sizeof(T) == 4, "Value must be 4 or 8 bytes");
   return (field_id << 3) |
-         (sizeof(T) == 8 ? kFieldTypeFixed64 : kFieldTypeFixed32);
+         static_cast<uint32_t>((sizeof(T) == 8 ? ProtoWireType::kFixed64
+                                               : ProtoWireType::kFixed32));
 }
 
 // Proto types: string, bytes, embedded messages.
 constexpr uint32_t MakeTagLengthDelimited(uint32_t field_id) {
-  return (field_id << 3) | kFieldTypeLengthDelimited;
+  return (field_id << 3) |
+         static_cast<uint32_t>(ProtoWireType::kLengthDelimited);
 }
 
 // Proto types: sint64, sint32.
diff --git a/src/base/string_utils.cc b/src/base/string_utils.cc
index 9a5b92b..9fd77c2 100644
--- a/src/base/string_utils.cc
+++ b/src/base/string_utils.cc
@@ -23,5 +23,15 @@
   return str.compare(0, prefix.length(), prefix) == 0;
 }
 
+bool EndsWith(const std::string& str, const std::string& suffix) {
+  if (suffix.size() > str.size())
+    return false;
+  return str.compare(str.size() - suffix.size(), suffix.size(), suffix) == 0;
+}
+
+bool Contains(const std::string& haystack, const std::string& needle) {
+  return haystack.find(needle) != std::string::npos;
+}
+
 }  // namespace base
 }  // namespace perfetto
diff --git a/src/base/string_utils_unittest.cc b/src/base/string_utils_unittest.cc
index 5362057..c5737a4 100644
--- a/src/base/string_utils_unittest.cc
+++ b/src/base/string_utils_unittest.cc
@@ -34,6 +34,17 @@
   EXPECT_FALSE(StartsWith("", "ab"));
 }
 
+TEST(StringUtilsTest, EndsWith) {
+  EXPECT_TRUE(EndsWith("", ""));
+  EXPECT_TRUE(EndsWith("abc", ""));
+  EXPECT_TRUE(EndsWith("abc", "c"));
+  EXPECT_TRUE(EndsWith("abc", "bc"));
+  EXPECT_TRUE(EndsWith("abc", "abc"));
+  EXPECT_FALSE(EndsWith("bcd", "abcd"));
+  EXPECT_FALSE(EndsWith("abc", "abd"));
+  EXPECT_FALSE(EndsWith("", "c"));
+}
+
 }  // namespace
 }  // namespace base
 }  // namespace perfetto
diff --git a/src/protozero/proto_decoder.cc b/src/protozero/proto_decoder.cc
index 61769a1..a95d3f1 100644
--- a/src/protozero/proto_decoder.cc
+++ b/src/protozero/proto_decoder.cc
@@ -64,12 +64,12 @@
     return field;
   }
 
-  field.type = static_cast<FieldType>(raw_field_id & kFieldTypeMask);
+  field.type = static_cast<ProtoWireType>(raw_field_id & kFieldTypeMask);
 
   const uint8_t* new_pos = nullptr;
   uint64_t field_intvalue = 0;
   switch (field.type) {
-    case kFieldTypeVarInt: {
+    case ProtoWireType::kVarInt: {
       new_pos = ParseVarInt(pos, end, &field.int_value);
 
       // new_pos not being greater than pos means ParseVarInt could not fully
@@ -82,7 +82,7 @@
       pos = new_pos;
       break;
     }
-    case kFieldTypeLengthDelimited: {
+    case ProtoWireType::kLengthDelimited: {
       new_pos = ParseVarInt(pos, end, &field_intvalue);
 
       // new_pos not being greater than pos means ParseVarInt could not fully
@@ -100,7 +100,7 @@
       pos += field_intvalue;
       break;
     }
-    case kFieldTypeFixed64: {
+    case ProtoWireType::kFixed64: {
       if (pos + sizeof(uint64_t) > end) {
         return field;
       }
@@ -109,7 +109,7 @@
       pos += sizeof(uint64_t);
       break;
     }
-    case kFieldTypeFixed32: {
+    case ProtoWireType::kFixed32: {
       if (pos + sizeof(uint32_t) > end) {
         return field;
       }
diff --git a/src/protozero/proto_decoder_unittest.cc b/src/protozero/proto_decoder_unittest.cc
index 12f48dc..047f2b3 100644
--- a/src/protozero/proto_decoder_unittest.cc
+++ b/src/protozero/proto_decoder_unittest.cc
@@ -29,7 +29,7 @@
 using ::testing::_;
 using ::testing::InSequence;
 using ::testing::Invoke;
-using namespace protozero::proto_utils;
+using namespace proto_utils;
 
 TEST(ProtoDecoder, ReadString) {
   Message message;
@@ -48,7 +48,7 @@
   ProtoDecoder::Field field = decoder.ReadField();
 
   ASSERT_EQ(field.id, 1u);
-  ASSERT_EQ(field.type, proto_utils::FieldType::kFieldTypeLengthDelimited);
+  ASSERT_EQ(field.type, ProtoWireType::kLengthDelimited);
   ASSERT_EQ(field.length_limited.length, sizeof(kTestString) - 1);
   for (size_t i = 0; i < sizeof(kTestString) - 1; i++) {
     ASSERT_EQ(field.length_limited.data[i], kTestString[i]);
@@ -60,27 +60,30 @@
     const char* encoded;
     size_t encoded_size;
     uint32_t id;
-    FieldType type;
+    ProtoWireType type;
     uint64_t int_value;
   };
 
   const FieldExpectation kFieldExpectations[] = {
-      {"\x08\x00", 2, 1, kFieldTypeVarInt, 0},
-      {"\x08\x42", 2, 1, kFieldTypeVarInt, 0x42},
-      {"\xF8\x07\x42", 3, 127, kFieldTypeVarInt, 0x42},
-      {"\x90\x4D\xFF\xFF\xFF\xFF\x0F", 7, 1234, kFieldTypeVarInt, 0xFFFFFFFF},
-      {"\x7D\x42\x00\x00\x00", 5, 15, kFieldTypeFixed32, 0x42},
-      {"\x95\x4D\x78\x56\x34\x12", 6, 1234, kFieldTypeFixed32, 0x12345678},
-      {"\x79\x42\x00\x00\x00\x00\x00\x00\x00", 9, 15, kFieldTypeFixed64, 0x42},
-      {"\x91\x4D\x08\x07\x06\x05\x04\x03\x02\x01", 10, 1234, kFieldTypeFixed64,
-       0x0102030405060708},
-      {"\x0A\x00", 2, 1, kFieldTypeLengthDelimited, 0},
-      {"\x0A\x04|abc", 6, 1, kFieldTypeLengthDelimited, 4},
-      {"\x92\x4D\x04|abc", 7, 1234, kFieldTypeLengthDelimited, 4},
+      {"\x08\x00", 2, 1, ProtoWireType::kVarInt, 0},
+      {"\x08\x42", 2, 1, ProtoWireType::kVarInt, 0x42},
+      {"\xF8\x07\x42", 3, 127, ProtoWireType::kVarInt, 0x42},
+      {"\x90\x4D\xFF\xFF\xFF\xFF\x0F", 7, 1234, ProtoWireType::kVarInt,
+       0xFFFFFFFF},
+      {"\x7D\x42\x00\x00\x00", 5, 15, ProtoWireType::kFixed32, 0x42},
+      {"\x95\x4D\x78\x56\x34\x12", 6, 1234, ProtoWireType::kFixed32,
+       0x12345678},
+      {"\x79\x42\x00\x00\x00\x00\x00\x00\x00", 9, 15, ProtoWireType::kFixed64,
+       0x42},
+      {"\x91\x4D\x08\x07\x06\x05\x04\x03\x02\x01", 10, 1234,
+       ProtoWireType::kFixed64, 0x0102030405060708},
+      {"\x0A\x00", 2, 1, ProtoWireType::kLengthDelimited, 0},
+      {"\x0A\x04|abc", 6, 1, ProtoWireType::kLengthDelimited, 4},
+      {"\x92\x4D\x04|abc", 7, 1234, ProtoWireType::kLengthDelimited, 4},
       {"\x92\x4D\x83\x01|abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzab"
        "cdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstu"
        "vwx",
-       135, 1234, kFieldTypeLengthDelimited, 131},
+       135, 1234, ProtoWireType::kLengthDelimited, 131},
   };
 
   for (size_t i = 0; i < perfetto::base::ArraySize(kFieldExpectations); ++i) {
@@ -92,7 +95,7 @@
     ASSERT_EQ(exp.id, field.id);
     ASSERT_EQ(exp.type, field.type);
 
-    if (field.type == kFieldTypeLengthDelimited) {
+    if (field.type == ProtoWireType::kLengthDelimited) {
       ASSERT_EQ(exp.int_value, field.length_limited.length);
     } else {
       ASSERT_EQ(exp.int_value, field.int_value);
diff --git a/src/trace_processor/proto_trace_parser.cc b/src/trace_processor/proto_trace_parser.cc
index 0d46b35..c969241 100644
--- a/src/trace_processor/proto_trace_parser.cc
+++ b/src/trace_processor/proto_trace_parser.cc
@@ -101,7 +101,6 @@
 }
 
 using protozero::ProtoDecoder;
-using protozero::proto_utils::kFieldTypeLengthDelimited;
 
 ProtoTraceParser::ProtoTraceParser(TraceProcessorContext* context)
     : context_(context),
diff --git a/src/trace_processor/proto_trace_tokenizer.cc b/src/trace_processor/proto_trace_tokenizer.cc
index 9fd7bb1..5f106d7 100644
--- a/src/trace_processor/proto_trace_tokenizer.cc
+++ b/src/trace_processor/proto_trace_tokenizer.cc
@@ -34,7 +34,6 @@
 namespace trace_processor {
 
 using protozero::ProtoDecoder;
-using protozero::proto_utils::kFieldTypeLengthDelimited;
 using protozero::proto_utils::MakeTagLengthDelimited;
 using protozero::proto_utils::MakeTagVarInt;
 using protozero::proto_utils::ParseVarInt;
diff --git a/src/traced/probes/ftrace/cpu_reader_unittest.cc b/src/traced/probes/ftrace/cpu_reader_unittest.cc
index 855ce02..e9bd27d 100644
--- a/src/traced/probes/ftrace/cpu_reader_unittest.cc
+++ b/src/traced/probes/ftrace/cpu_reader_unittest.cc
@@ -25,6 +25,7 @@
 
 #include "perfetto/base/build_config.h"
 #include "perfetto/base/utils.h"
+#include "perfetto/protozero/proto_utils.h"
 #include "perfetto/protozero/scattered_stream_memory_delegate.h"
 #include "perfetto/protozero/scattered_stream_writer.h"
 
@@ -49,6 +50,7 @@
 using testing::Return;
 using testing::AnyNumber;
 using testing::NiceMock;
+using protozero::proto_utils::ProtoSchemaType;
 
 namespace perfetto {
 
@@ -702,7 +704,7 @@
     field->ftrace_size = 4;
     field->ftrace_type = kFtraceUint32;
     field->proto_field_id = 1;
-    field->proto_field_type = kProtoUint32;
+    field->proto_field_type = ProtoSchemaType::kUint32;
     SetTranslationStrategy(field->ftrace_type, field->proto_field_type,
                            &field->strategy);
   }
@@ -714,7 +716,7 @@
     field->ftrace_size = 4;
     field->ftrace_type = kFtraceCommonPid32;
     field->proto_field_id = 2;
-    field->proto_field_type = kProtoInt32;
+    field->proto_field_type = ProtoSchemaType::kInt32;
     SetTranslationStrategy(field->ftrace_type, field->proto_field_type,
                            &field->strategy);
   }
@@ -736,7 +738,7 @@
       field->ftrace_size = 4;
       field->ftrace_type = kFtraceUint32;
       field->proto_field_id = 1;
-      field->proto_field_type = kProtoUint32;
+      field->proto_field_type = ProtoSchemaType::kUint32;
     }
 
     {
@@ -747,7 +749,7 @@
       field->ftrace_size = 4;
       field->ftrace_type = kFtracePid32;
       field->proto_field_id = 2;
-      field->proto_field_type = kProtoInt32;
+      field->proto_field_type = ProtoSchemaType::kInt32;
     }
 
     {
@@ -758,7 +760,7 @@
       field->ftrace_size = 4;
       field->ftrace_type = kFtraceDevId32;
       field->proto_field_id = 3;
-      field->proto_field_type = kProtoUint64;
+      field->proto_field_type = ProtoSchemaType::kUint64;
     }
 
     {
@@ -769,7 +771,7 @@
       field->ftrace_size = 4;
       field->ftrace_type = kFtraceInode32;
       field->proto_field_id = 4;
-      field->proto_field_type = kProtoUint64;
+      field->proto_field_type = ProtoSchemaType::kUint64;
     }
 
     {
@@ -780,7 +782,7 @@
       field->ftrace_size = 8;
       field->ftrace_type = kFtraceDevId64;
       field->proto_field_id = 5;
-      field->proto_field_type = kProtoUint64;
+      field->proto_field_type = ProtoSchemaType::kUint64;
     }
 
     {
@@ -791,7 +793,7 @@
       field->ftrace_size = 8;
       field->ftrace_type = kFtraceInode64;
       field->proto_field_id = 6;
-      field->proto_field_type = kProtoUint64;
+      field->proto_field_type = ProtoSchemaType::kUint64;
     }
 
     {
@@ -802,7 +804,7 @@
       field->ftrace_size = 16;
       field->ftrace_type = kFtraceFixedCString;
       field->proto_field_id = 500;
-      field->proto_field_type = kProtoString;
+      field->proto_field_type = ProtoSchemaType::kString;
     }
 
     {
@@ -813,7 +815,7 @@
       field->ftrace_size = 4;
       field->ftrace_type = kFtraceDataLoc;
       field->proto_field_id = 502;
-      field->proto_field_type = kProtoString;
+      field->proto_field_type = ProtoSchemaType::kString;
     }
 
     {
@@ -824,7 +826,7 @@
       field->ftrace_size = 0;
       field->ftrace_type = kFtraceCString;
       field->proto_field_id = 501;
-      field->proto_field_type = kProtoString;
+      field->proto_field_type = ProtoSchemaType::kString;
     }
 
     for (Field& field : event->fields) {
diff --git a/src/traced/probes/ftrace/event_info.cc b/src/traced/probes/ftrace/event_info.cc
index 45eb3e3..f656bf4 100644
--- a/src/traced/probes/ftrace/event_info.cc
+++ b/src/traced/probes/ftrace/event_info.cc
@@ -3,9 +3,12 @@
 // Do not edit.
 
 #include "src/traced/probes/ftrace/event_info.h"
+#include "perfetto/protozero/proto_utils.h"
 
 namespace perfetto {
 
+using protozero::proto_utils::ProtoSchemaType;
+
 std::vector<Event> GetStaticEventInfo() {
   std::vector<Event> events;
 
@@ -15,13 +18,14 @@
     event->name = "binder_transaction";
     event->group = "binder";
     event->proto_field_id = 50;
-    event->fields.push_back(MakeField("debug_id", 1, kProtoInt32));
-    event->fields.push_back(MakeField("target_node", 2, kProtoInt32));
-    event->fields.push_back(MakeField("to_proc", 3, kProtoInt32));
-    event->fields.push_back(MakeField("to_thread", 4, kProtoInt32));
-    event->fields.push_back(MakeField("reply", 5, kProtoInt32));
-    event->fields.push_back(MakeField("code", 6, kProtoUint32));
-    event->fields.push_back(MakeField("flags", 7, kProtoUint32));
+    event->fields.push_back(MakeField("debug_id", 1, ProtoSchemaType::kInt32));
+    event->fields.push_back(
+        MakeField("target_node", 2, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("to_proc", 3, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("to_thread", 4, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("reply", 5, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("code", 6, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("flags", 7, ProtoSchemaType::kUint32));
   }
 
   {
@@ -30,7 +34,7 @@
     event->name = "binder_transaction_received";
     event->group = "binder";
     event->proto_field_id = 51;
-    event->fields.push_back(MakeField("debug_id", 1, kProtoInt32));
+    event->fields.push_back(MakeField("debug_id", 1, ProtoSchemaType::kInt32));
   }
 
   {
@@ -39,11 +43,12 @@
     event->name = "binder_set_priority";
     event->group = "binder";
     event->proto_field_id = 52;
-    event->fields.push_back(MakeField("proc", 1, kProtoInt32));
-    event->fields.push_back(MakeField("thread", 2, kProtoInt32));
-    event->fields.push_back(MakeField("old_prio", 3, kProtoUint32));
-    event->fields.push_back(MakeField("new_prio", 4, kProtoUint32));
-    event->fields.push_back(MakeField("desired_prio", 5, kProtoUint32));
+    event->fields.push_back(MakeField("proc", 1, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("thread", 2, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("old_prio", 3, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("new_prio", 4, ProtoSchemaType::kUint32));
+    event->fields.push_back(
+        MakeField("desired_prio", 5, ProtoSchemaType::kUint32));
   }
 
   {
@@ -52,7 +57,7 @@
     event->name = "binder_lock";
     event->group = "binder";
     event->proto_field_id = 53;
-    event->fields.push_back(MakeField("tag", 1, kProtoString));
+    event->fields.push_back(MakeField("tag", 1, ProtoSchemaType::kString));
   }
 
   {
@@ -61,7 +66,7 @@
     event->name = "binder_locked";
     event->group = "binder";
     event->proto_field_id = 54;
-    event->fields.push_back(MakeField("tag", 1, kProtoString));
+    event->fields.push_back(MakeField("tag", 1, ProtoSchemaType::kString));
   }
 
   {
@@ -70,7 +75,7 @@
     event->name = "binder_unlock";
     event->group = "binder";
     event->proto_field_id = 55;
-    event->fields.push_back(MakeField("tag", 1, kProtoString));
+    event->fields.push_back(MakeField("tag", 1, ProtoSchemaType::kString));
   }
 
   {
@@ -79,9 +84,11 @@
     event->name = "binder_transaction_alloc_buf";
     event->group = "binder";
     event->proto_field_id = 323;
-    event->fields.push_back(MakeField("data_size", 1, kProtoUint64));
-    event->fields.push_back(MakeField("debug_id", 2, kProtoInt32));
-    event->fields.push_back(MakeField("offsets_size", 3, kProtoUint64));
+    event->fields.push_back(
+        MakeField("data_size", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("debug_id", 2, ProtoSchemaType::kInt32));
+    event->fields.push_back(
+        MakeField("offsets_size", 3, ProtoSchemaType::kUint64));
   }
 
   {
@@ -90,13 +97,14 @@
     event->name = "block_rq_issue";
     event->group = "block";
     event->proto_field_id = 45;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("sector", 2, kProtoUint64));
-    event->fields.push_back(MakeField("nr_sector", 3, kProtoUint32));
-    event->fields.push_back(MakeField("bytes", 4, kProtoUint32));
-    event->fields.push_back(MakeField("rwbs", 5, kProtoString));
-    event->fields.push_back(MakeField("comm", 6, kProtoString));
-    event->fields.push_back(MakeField("cmd", 7, kProtoString));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("sector", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(
+        MakeField("nr_sector", 3, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("bytes", 4, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("rwbs", 5, ProtoSchemaType::kString));
+    event->fields.push_back(MakeField("comm", 6, ProtoSchemaType::kString));
+    event->fields.push_back(MakeField("cmd", 7, ProtoSchemaType::kString));
   }
 
   {
@@ -105,11 +113,12 @@
     event->name = "block_bio_backmerge";
     event->group = "block";
     event->proto_field_id = 115;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("sector", 2, kProtoUint64));
-    event->fields.push_back(MakeField("nr_sector", 3, kProtoUint32));
-    event->fields.push_back(MakeField("rwbs", 4, kProtoString));
-    event->fields.push_back(MakeField("comm", 5, kProtoString));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("sector", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(
+        MakeField("nr_sector", 3, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("rwbs", 4, ProtoSchemaType::kString));
+    event->fields.push_back(MakeField("comm", 5, ProtoSchemaType::kString));
   }
 
   {
@@ -118,11 +127,12 @@
     event->name = "block_bio_bounce";
     event->group = "block";
     event->proto_field_id = 116;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("sector", 2, kProtoUint64));
-    event->fields.push_back(MakeField("nr_sector", 3, kProtoUint32));
-    event->fields.push_back(MakeField("rwbs", 4, kProtoString));
-    event->fields.push_back(MakeField("comm", 5, kProtoString));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("sector", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(
+        MakeField("nr_sector", 3, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("rwbs", 4, ProtoSchemaType::kString));
+    event->fields.push_back(MakeField("comm", 5, ProtoSchemaType::kString));
   }
 
   {
@@ -131,11 +141,12 @@
     event->name = "block_bio_complete";
     event->group = "block";
     event->proto_field_id = 117;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("sector", 2, kProtoUint64));
-    event->fields.push_back(MakeField("nr_sector", 3, kProtoUint32));
-    event->fields.push_back(MakeField("error", 4, kProtoInt32));
-    event->fields.push_back(MakeField("rwbs", 5, kProtoString));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("sector", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(
+        MakeField("nr_sector", 3, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("error", 4, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("rwbs", 5, ProtoSchemaType::kString));
   }
 
   {
@@ -144,11 +155,12 @@
     event->name = "block_bio_frontmerge";
     event->group = "block";
     event->proto_field_id = 118;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("sector", 2, kProtoUint64));
-    event->fields.push_back(MakeField("nr_sector", 3, kProtoUint32));
-    event->fields.push_back(MakeField("rwbs", 4, kProtoString));
-    event->fields.push_back(MakeField("comm", 5, kProtoString));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("sector", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(
+        MakeField("nr_sector", 3, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("rwbs", 4, ProtoSchemaType::kString));
+    event->fields.push_back(MakeField("comm", 5, ProtoSchemaType::kString));
   }
 
   {
@@ -157,11 +169,12 @@
     event->name = "block_bio_queue";
     event->group = "block";
     event->proto_field_id = 119;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("sector", 2, kProtoUint64));
-    event->fields.push_back(MakeField("nr_sector", 3, kProtoUint32));
-    event->fields.push_back(MakeField("rwbs", 4, kProtoString));
-    event->fields.push_back(MakeField("comm", 5, kProtoString));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("sector", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(
+        MakeField("nr_sector", 3, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("rwbs", 4, ProtoSchemaType::kString));
+    event->fields.push_back(MakeField("comm", 5, ProtoSchemaType::kString));
   }
 
   {
@@ -170,12 +183,14 @@
     event->name = "block_bio_remap";
     event->group = "block";
     event->proto_field_id = 120;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("sector", 2, kProtoUint64));
-    event->fields.push_back(MakeField("nr_sector", 3, kProtoUint32));
-    event->fields.push_back(MakeField("old_dev", 4, kProtoUint64));
-    event->fields.push_back(MakeField("old_sector", 5, kProtoUint64));
-    event->fields.push_back(MakeField("rwbs", 6, kProtoString));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("sector", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(
+        MakeField("nr_sector", 3, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("old_dev", 4, ProtoSchemaType::kUint64));
+    event->fields.push_back(
+        MakeField("old_sector", 5, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("rwbs", 6, ProtoSchemaType::kString));
   }
 
   {
@@ -184,9 +199,9 @@
     event->name = "block_dirty_buffer";
     event->group = "block";
     event->proto_field_id = 121;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("sector", 2, kProtoUint64));
-    event->fields.push_back(MakeField("size", 3, kProtoUint64));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("sector", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("size", 3, ProtoSchemaType::kUint64));
   }
 
   {
@@ -195,11 +210,12 @@
     event->name = "block_getrq";
     event->group = "block";
     event->proto_field_id = 122;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("sector", 2, kProtoUint64));
-    event->fields.push_back(MakeField("nr_sector", 3, kProtoUint32));
-    event->fields.push_back(MakeField("rwbs", 4, kProtoString));
-    event->fields.push_back(MakeField("comm", 5, kProtoString));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("sector", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(
+        MakeField("nr_sector", 3, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("rwbs", 4, ProtoSchemaType::kString));
+    event->fields.push_back(MakeField("comm", 5, ProtoSchemaType::kString));
   }
 
   {
@@ -208,7 +224,7 @@
     event->name = "block_plug";
     event->group = "block";
     event->proto_field_id = 123;
-    event->fields.push_back(MakeField("comm", 1, kProtoString));
+    event->fields.push_back(MakeField("comm", 1, ProtoSchemaType::kString));
   }
 
   {
@@ -217,12 +233,13 @@
     event->name = "block_rq_abort";
     event->group = "block";
     event->proto_field_id = 124;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("sector", 2, kProtoUint64));
-    event->fields.push_back(MakeField("nr_sector", 3, kProtoUint32));
-    event->fields.push_back(MakeField("errors", 4, kProtoInt32));
-    event->fields.push_back(MakeField("rwbs", 5, kProtoString));
-    event->fields.push_back(MakeField("cmd", 6, kProtoString));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("sector", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(
+        MakeField("nr_sector", 3, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("errors", 4, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("rwbs", 5, ProtoSchemaType::kString));
+    event->fields.push_back(MakeField("cmd", 6, ProtoSchemaType::kString));
   }
 
   {
@@ -231,12 +248,13 @@
     event->name = "block_rq_complete";
     event->group = "block";
     event->proto_field_id = 125;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("sector", 2, kProtoUint64));
-    event->fields.push_back(MakeField("nr_sector", 3, kProtoUint32));
-    event->fields.push_back(MakeField("errors", 4, kProtoInt32));
-    event->fields.push_back(MakeField("rwbs", 5, kProtoString));
-    event->fields.push_back(MakeField("cmd", 6, kProtoString));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("sector", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(
+        MakeField("nr_sector", 3, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("errors", 4, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("rwbs", 5, ProtoSchemaType::kString));
+    event->fields.push_back(MakeField("cmd", 6, ProtoSchemaType::kString));
   }
 
   {
@@ -245,13 +263,14 @@
     event->name = "block_rq_insert";
     event->group = "block";
     event->proto_field_id = 126;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("sector", 2, kProtoUint64));
-    event->fields.push_back(MakeField("nr_sector", 3, kProtoUint32));
-    event->fields.push_back(MakeField("bytes", 4, kProtoUint32));
-    event->fields.push_back(MakeField("rwbs", 5, kProtoString));
-    event->fields.push_back(MakeField("comm", 6, kProtoString));
-    event->fields.push_back(MakeField("cmd", 7, kProtoString));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("sector", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(
+        MakeField("nr_sector", 3, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("bytes", 4, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("rwbs", 5, ProtoSchemaType::kString));
+    event->fields.push_back(MakeField("comm", 6, ProtoSchemaType::kString));
+    event->fields.push_back(MakeField("cmd", 7, ProtoSchemaType::kString));
   }
 
   {
@@ -260,13 +279,15 @@
     event->name = "block_rq_remap";
     event->group = "block";
     event->proto_field_id = 128;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("sector", 2, kProtoUint64));
-    event->fields.push_back(MakeField("nr_sector", 3, kProtoUint32));
-    event->fields.push_back(MakeField("old_dev", 4, kProtoUint64));
-    event->fields.push_back(MakeField("old_sector", 5, kProtoUint64));
-    event->fields.push_back(MakeField("nr_bios", 6, kProtoUint32));
-    event->fields.push_back(MakeField("rwbs", 7, kProtoString));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("sector", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(
+        MakeField("nr_sector", 3, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("old_dev", 4, ProtoSchemaType::kUint64));
+    event->fields.push_back(
+        MakeField("old_sector", 5, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("nr_bios", 6, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("rwbs", 7, ProtoSchemaType::kString));
   }
 
   {
@@ -275,12 +296,13 @@
     event->name = "block_rq_requeue";
     event->group = "block";
     event->proto_field_id = 129;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("sector", 2, kProtoUint64));
-    event->fields.push_back(MakeField("nr_sector", 3, kProtoUint32));
-    event->fields.push_back(MakeField("errors", 4, kProtoInt32));
-    event->fields.push_back(MakeField("rwbs", 5, kProtoString));
-    event->fields.push_back(MakeField("cmd", 6, kProtoString));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("sector", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(
+        MakeField("nr_sector", 3, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("errors", 4, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("rwbs", 5, ProtoSchemaType::kString));
+    event->fields.push_back(MakeField("cmd", 6, ProtoSchemaType::kString));
   }
 
   {
@@ -289,11 +311,12 @@
     event->name = "block_sleeprq";
     event->group = "block";
     event->proto_field_id = 130;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("sector", 2, kProtoUint64));
-    event->fields.push_back(MakeField("nr_sector", 3, kProtoUint32));
-    event->fields.push_back(MakeField("rwbs", 4, kProtoString));
-    event->fields.push_back(MakeField("comm", 5, kProtoString));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("sector", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(
+        MakeField("nr_sector", 3, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("rwbs", 4, ProtoSchemaType::kString));
+    event->fields.push_back(MakeField("comm", 5, ProtoSchemaType::kString));
   }
 
   {
@@ -302,11 +325,12 @@
     event->name = "block_split";
     event->group = "block";
     event->proto_field_id = 131;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("sector", 2, kProtoUint64));
-    event->fields.push_back(MakeField("new_sector", 3, kProtoUint64));
-    event->fields.push_back(MakeField("rwbs", 4, kProtoString));
-    event->fields.push_back(MakeField("comm", 5, kProtoString));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("sector", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(
+        MakeField("new_sector", 3, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("rwbs", 4, ProtoSchemaType::kString));
+    event->fields.push_back(MakeField("comm", 5, ProtoSchemaType::kString));
   }
 
   {
@@ -315,9 +339,9 @@
     event->name = "block_touch_buffer";
     event->group = "block";
     event->proto_field_id = 132;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("sector", 2, kProtoUint64));
-    event->fields.push_back(MakeField("size", 3, kProtoUint64));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("sector", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("size", 3, ProtoSchemaType::kUint64));
   }
 
   {
@@ -326,8 +350,8 @@
     event->name = "block_unplug";
     event->group = "block";
     event->proto_field_id = 133;
-    event->fields.push_back(MakeField("nr_rq", 1, kProtoInt32));
-    event->fields.push_back(MakeField("comm", 2, kProtoString));
+    event->fields.push_back(MakeField("nr_rq", 1, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("comm", 2, ProtoSchemaType::kString));
   }
 
   {
@@ -336,11 +360,11 @@
     event->name = "cgroup_attach_task";
     event->group = "cgroup";
     event->proto_field_id = 67;
-    event->fields.push_back(MakeField("dst_root", 1, kProtoInt32));
-    event->fields.push_back(MakeField("dst_id", 2, kProtoInt32));
-    event->fields.push_back(MakeField("pid", 3, kProtoInt32));
-    event->fields.push_back(MakeField("comm", 4, kProtoString));
-    event->fields.push_back(MakeField("cname", 5, kProtoString));
+    event->fields.push_back(MakeField("dst_root", 1, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("dst_id", 2, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("pid", 3, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("comm", 4, ProtoSchemaType::kString));
+    event->fields.push_back(MakeField("cname", 5, ProtoSchemaType::kString));
   }
 
   {
@@ -349,9 +373,9 @@
     event->name = "cgroup_mkdir";
     event->group = "cgroup";
     event->proto_field_id = 68;
-    event->fields.push_back(MakeField("root", 1, kProtoInt32));
-    event->fields.push_back(MakeField("id", 2, kProtoInt32));
-    event->fields.push_back(MakeField("cname", 3, kProtoString));
+    event->fields.push_back(MakeField("root", 1, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("id", 2, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("cname", 3, ProtoSchemaType::kString));
   }
 
   {
@@ -360,9 +384,9 @@
     event->name = "cgroup_remount";
     event->group = "cgroup";
     event->proto_field_id = 69;
-    event->fields.push_back(MakeField("root", 1, kProtoInt32));
-    event->fields.push_back(MakeField("ss_mask", 2, kProtoUint32));
-    event->fields.push_back(MakeField("name", 3, kProtoString));
+    event->fields.push_back(MakeField("root", 1, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("ss_mask", 2, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("name", 3, ProtoSchemaType::kString));
   }
 
   {
@@ -371,9 +395,9 @@
     event->name = "cgroup_rmdir";
     event->group = "cgroup";
     event->proto_field_id = 70;
-    event->fields.push_back(MakeField("root", 1, kProtoInt32));
-    event->fields.push_back(MakeField("id", 2, kProtoInt32));
-    event->fields.push_back(MakeField("cname", 3, kProtoString));
+    event->fields.push_back(MakeField("root", 1, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("id", 2, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("cname", 3, ProtoSchemaType::kString));
   }
 
   {
@@ -382,11 +406,11 @@
     event->name = "cgroup_transfer_tasks";
     event->group = "cgroup";
     event->proto_field_id = 71;
-    event->fields.push_back(MakeField("dst_root", 1, kProtoInt32));
-    event->fields.push_back(MakeField("dst_id", 2, kProtoInt32));
-    event->fields.push_back(MakeField("pid", 3, kProtoInt32));
-    event->fields.push_back(MakeField("comm", 4, kProtoString));
-    event->fields.push_back(MakeField("cname", 5, kProtoString));
+    event->fields.push_back(MakeField("dst_root", 1, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("dst_id", 2, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("pid", 3, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("comm", 4, ProtoSchemaType::kString));
+    event->fields.push_back(MakeField("cname", 5, ProtoSchemaType::kString));
   }
 
   {
@@ -395,9 +419,9 @@
     event->name = "cgroup_destroy_root";
     event->group = "cgroup";
     event->proto_field_id = 72;
-    event->fields.push_back(MakeField("root", 1, kProtoInt32));
-    event->fields.push_back(MakeField("ss_mask", 2, kProtoUint32));
-    event->fields.push_back(MakeField("name", 3, kProtoString));
+    event->fields.push_back(MakeField("root", 1, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("ss_mask", 2, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("name", 3, ProtoSchemaType::kString));
   }
 
   {
@@ -406,9 +430,9 @@
     event->name = "cgroup_release";
     event->group = "cgroup";
     event->proto_field_id = 73;
-    event->fields.push_back(MakeField("root", 1, kProtoInt32));
-    event->fields.push_back(MakeField("id", 2, kProtoInt32));
-    event->fields.push_back(MakeField("cname", 3, kProtoString));
+    event->fields.push_back(MakeField("root", 1, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("id", 2, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("cname", 3, ProtoSchemaType::kString));
   }
 
   {
@@ -417,9 +441,9 @@
     event->name = "cgroup_rename";
     event->group = "cgroup";
     event->proto_field_id = 74;
-    event->fields.push_back(MakeField("root", 1, kProtoInt32));
-    event->fields.push_back(MakeField("id", 2, kProtoInt32));
-    event->fields.push_back(MakeField("cname", 3, kProtoString));
+    event->fields.push_back(MakeField("root", 1, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("id", 2, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("cname", 3, ProtoSchemaType::kString));
   }
 
   {
@@ -428,9 +452,9 @@
     event->name = "cgroup_setup_root";
     event->group = "cgroup";
     event->proto_field_id = 75;
-    event->fields.push_back(MakeField("root", 1, kProtoInt32));
-    event->fields.push_back(MakeField("ss_mask", 2, kProtoUint32));
-    event->fields.push_back(MakeField("name", 3, kProtoString));
+    event->fields.push_back(MakeField("root", 1, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("ss_mask", 2, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("name", 3, ProtoSchemaType::kString));
   }
 
   {
@@ -439,7 +463,7 @@
     event->name = "clk_enable";
     event->group = "clk";
     event->proto_field_id = 320;
-    event->fields.push_back(MakeField("name", 1, kProtoString));
+    event->fields.push_back(MakeField("name", 1, ProtoSchemaType::kString));
   }
 
   {
@@ -448,7 +472,7 @@
     event->name = "clk_disable";
     event->group = "clk";
     event->proto_field_id = 321;
-    event->fields.push_back(MakeField("name", 1, kProtoString));
+    event->fields.push_back(MakeField("name", 1, ProtoSchemaType::kString));
   }
 
   {
@@ -457,8 +481,8 @@
     event->name = "clk_set_rate";
     event->group = "clk";
     event->proto_field_id = 322;
-    event->fields.push_back(MakeField("name", 1, kProtoString));
-    event->fields.push_back(MakeField("rate", 2, kProtoUint64));
+    event->fields.push_back(MakeField("name", 1, ProtoSchemaType::kString));
+    event->fields.push_back(MakeField("rate", 2, ProtoSchemaType::kUint64));
   }
 
   {
@@ -467,11 +491,13 @@
     event->name = "mm_compaction_begin";
     event->group = "compaction";
     event->proto_field_id = 99;
-    event->fields.push_back(MakeField("zone_start", 1, kProtoUint64));
-    event->fields.push_back(MakeField("migrate_pfn", 2, kProtoUint64));
-    event->fields.push_back(MakeField("free_pfn", 3, kProtoUint64));
-    event->fields.push_back(MakeField("zone_end", 4, kProtoUint64));
-    event->fields.push_back(MakeField("sync", 5, kProtoUint32));
+    event->fields.push_back(
+        MakeField("zone_start", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(
+        MakeField("migrate_pfn", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("free_pfn", 3, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("zone_end", 4, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("sync", 5, ProtoSchemaType::kUint32));
   }
 
   {
@@ -480,12 +506,15 @@
     event->name = "mm_compaction_defer_compaction";
     event->group = "compaction";
     event->proto_field_id = 100;
-    event->fields.push_back(MakeField("nid", 1, kProtoInt32));
-    event->fields.push_back(MakeField("idx", 2, kProtoUint32));
-    event->fields.push_back(MakeField("order", 3, kProtoInt32));
-    event->fields.push_back(MakeField("considered", 4, kProtoUint32));
-    event->fields.push_back(MakeField("defer_shift", 5, kProtoUint32));
-    event->fields.push_back(MakeField("order_failed", 6, kProtoInt32));
+    event->fields.push_back(MakeField("nid", 1, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("idx", 2, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("order", 3, ProtoSchemaType::kInt32));
+    event->fields.push_back(
+        MakeField("considered", 4, ProtoSchemaType::kUint32));
+    event->fields.push_back(
+        MakeField("defer_shift", 5, ProtoSchemaType::kUint32));
+    event->fields.push_back(
+        MakeField("order_failed", 6, ProtoSchemaType::kInt32));
   }
 
   {
@@ -494,12 +523,15 @@
     event->name = "mm_compaction_deferred";
     event->group = "compaction";
     event->proto_field_id = 101;
-    event->fields.push_back(MakeField("nid", 1, kProtoInt32));
-    event->fields.push_back(MakeField("idx", 2, kProtoUint32));
-    event->fields.push_back(MakeField("order", 3, kProtoInt32));
-    event->fields.push_back(MakeField("considered", 4, kProtoUint32));
-    event->fields.push_back(MakeField("defer_shift", 5, kProtoUint32));
-    event->fields.push_back(MakeField("order_failed", 6, kProtoInt32));
+    event->fields.push_back(MakeField("nid", 1, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("idx", 2, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("order", 3, ProtoSchemaType::kInt32));
+    event->fields.push_back(
+        MakeField("considered", 4, ProtoSchemaType::kUint32));
+    event->fields.push_back(
+        MakeField("defer_shift", 5, ProtoSchemaType::kUint32));
+    event->fields.push_back(
+        MakeField("order_failed", 6, ProtoSchemaType::kInt32));
   }
 
   {
@@ -508,12 +540,15 @@
     event->name = "mm_compaction_defer_reset";
     event->group = "compaction";
     event->proto_field_id = 102;
-    event->fields.push_back(MakeField("nid", 1, kProtoInt32));
-    event->fields.push_back(MakeField("idx", 2, kProtoUint32));
-    event->fields.push_back(MakeField("order", 3, kProtoInt32));
-    event->fields.push_back(MakeField("considered", 4, kProtoUint32));
-    event->fields.push_back(MakeField("defer_shift", 5, kProtoUint32));
-    event->fields.push_back(MakeField("order_failed", 6, kProtoInt32));
+    event->fields.push_back(MakeField("nid", 1, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("idx", 2, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("order", 3, ProtoSchemaType::kInt32));
+    event->fields.push_back(
+        MakeField("considered", 4, ProtoSchemaType::kUint32));
+    event->fields.push_back(
+        MakeField("defer_shift", 5, ProtoSchemaType::kUint32));
+    event->fields.push_back(
+        MakeField("order_failed", 6, ProtoSchemaType::kInt32));
   }
 
   {
@@ -522,12 +557,14 @@
     event->name = "mm_compaction_end";
     event->group = "compaction";
     event->proto_field_id = 103;
-    event->fields.push_back(MakeField("zone_start", 1, kProtoUint64));
-    event->fields.push_back(MakeField("migrate_pfn", 2, kProtoUint64));
-    event->fields.push_back(MakeField("free_pfn", 3, kProtoUint64));
-    event->fields.push_back(MakeField("zone_end", 4, kProtoUint64));
-    event->fields.push_back(MakeField("sync", 5, kProtoUint32));
-    event->fields.push_back(MakeField("status", 6, kProtoInt32));
+    event->fields.push_back(
+        MakeField("zone_start", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(
+        MakeField("migrate_pfn", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("free_pfn", 3, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("zone_end", 4, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("sync", 5, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("status", 6, ProtoSchemaType::kInt32));
   }
 
   {
@@ -536,10 +573,10 @@
     event->name = "mm_compaction_finished";
     event->group = "compaction";
     event->proto_field_id = 104;
-    event->fields.push_back(MakeField("nid", 1, kProtoInt32));
-    event->fields.push_back(MakeField("idx", 2, kProtoUint32));
-    event->fields.push_back(MakeField("order", 3, kProtoInt32));
-    event->fields.push_back(MakeField("ret", 4, kProtoInt32));
+    event->fields.push_back(MakeField("nid", 1, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("idx", 2, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("order", 3, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("ret", 4, ProtoSchemaType::kInt32));
   }
 
   {
@@ -548,10 +585,12 @@
     event->name = "mm_compaction_isolate_freepages";
     event->group = "compaction";
     event->proto_field_id = 105;
-    event->fields.push_back(MakeField("start_pfn", 1, kProtoUint64));
-    event->fields.push_back(MakeField("end_pfn", 2, kProtoUint64));
-    event->fields.push_back(MakeField("nr_scanned", 3, kProtoUint64));
-    event->fields.push_back(MakeField("nr_taken", 4, kProtoUint64));
+    event->fields.push_back(
+        MakeField("start_pfn", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("end_pfn", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(
+        MakeField("nr_scanned", 3, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("nr_taken", 4, ProtoSchemaType::kUint64));
   }
 
   {
@@ -560,10 +599,12 @@
     event->name = "mm_compaction_isolate_migratepages";
     event->group = "compaction";
     event->proto_field_id = 106;
-    event->fields.push_back(MakeField("start_pfn", 1, kProtoUint64));
-    event->fields.push_back(MakeField("end_pfn", 2, kProtoUint64));
-    event->fields.push_back(MakeField("nr_scanned", 3, kProtoUint64));
-    event->fields.push_back(MakeField("nr_taken", 4, kProtoUint64));
+    event->fields.push_back(
+        MakeField("start_pfn", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("end_pfn", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(
+        MakeField("nr_scanned", 3, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("nr_taken", 4, ProtoSchemaType::kUint64));
   }
 
   {
@@ -572,7 +613,7 @@
     event->name = "mm_compaction_kcompactd_sleep";
     event->group = "compaction";
     event->proto_field_id = 107;
-    event->fields.push_back(MakeField("nid", 1, kProtoInt32));
+    event->fields.push_back(MakeField("nid", 1, ProtoSchemaType::kInt32));
   }
 
   {
@@ -581,9 +622,10 @@
     event->name = "mm_compaction_kcompactd_wake";
     event->group = "compaction";
     event->proto_field_id = 108;
-    event->fields.push_back(MakeField("nid", 1, kProtoInt32));
-    event->fields.push_back(MakeField("order", 2, kProtoInt32));
-    event->fields.push_back(MakeField("classzone_idx", 3, kProtoUint32));
+    event->fields.push_back(MakeField("nid", 1, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("order", 2, ProtoSchemaType::kInt32));
+    event->fields.push_back(
+        MakeField("classzone_idx", 3, ProtoSchemaType::kUint32));
   }
 
   {
@@ -592,8 +634,10 @@
     event->name = "mm_compaction_migratepages";
     event->group = "compaction";
     event->proto_field_id = 109;
-    event->fields.push_back(MakeField("nr_migrated", 1, kProtoUint64));
-    event->fields.push_back(MakeField("nr_failed", 2, kProtoUint64));
+    event->fields.push_back(
+        MakeField("nr_migrated", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(
+        MakeField("nr_failed", 2, ProtoSchemaType::kUint64));
   }
 
   {
@@ -602,10 +646,10 @@
     event->name = "mm_compaction_suitable";
     event->group = "compaction";
     event->proto_field_id = 110;
-    event->fields.push_back(MakeField("nid", 1, kProtoInt32));
-    event->fields.push_back(MakeField("idx", 2, kProtoUint32));
-    event->fields.push_back(MakeField("order", 3, kProtoInt32));
-    event->fields.push_back(MakeField("ret", 4, kProtoInt32));
+    event->fields.push_back(MakeField("nid", 1, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("idx", 2, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("order", 3, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("ret", 4, ProtoSchemaType::kInt32));
   }
 
   {
@@ -614,9 +658,9 @@
     event->name = "mm_compaction_try_to_compact_pages";
     event->group = "compaction";
     event->proto_field_id = 111;
-    event->fields.push_back(MakeField("order", 1, kProtoInt32));
-    event->fields.push_back(MakeField("gfp_mask", 2, kProtoUint32));
-    event->fields.push_back(MakeField("mode", 3, kProtoUint32));
+    event->fields.push_back(MakeField("order", 1, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("gfp_mask", 2, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("mode", 3, ProtoSchemaType::kUint32));
   }
 
   {
@@ -625,9 +669,10 @@
     event->name = "mm_compaction_wakeup_kcompactd";
     event->group = "compaction";
     event->proto_field_id = 112;
-    event->fields.push_back(MakeField("nid", 1, kProtoInt32));
-    event->fields.push_back(MakeField("order", 2, kProtoInt32));
-    event->fields.push_back(MakeField("classzone_idx", 3, kProtoUint32));
+    event->fields.push_back(MakeField("nid", 1, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("order", 2, ProtoSchemaType::kInt32));
+    event->fields.push_back(
+        MakeField("classzone_idx", 3, ProtoSchemaType::kUint32));
   }
 
   {
@@ -636,11 +681,11 @@
     event->name = "ext4_da_write_begin";
     event->group = "ext4";
     event->proto_field_id = 41;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("pos", 3, kProtoInt64));
-    event->fields.push_back(MakeField("len", 4, kProtoUint32));
-    event->fields.push_back(MakeField("flags", 5, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("pos", 3, ProtoSchemaType::kInt64));
+    event->fields.push_back(MakeField("len", 4, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("flags", 5, ProtoSchemaType::kUint32));
   }
 
   {
@@ -649,11 +694,11 @@
     event->name = "ext4_da_write_end";
     event->group = "ext4";
     event->proto_field_id = 42;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("pos", 3, kProtoInt64));
-    event->fields.push_back(MakeField("len", 4, kProtoUint32));
-    event->fields.push_back(MakeField("copied", 5, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("pos", 3, ProtoSchemaType::kInt64));
+    event->fields.push_back(MakeField("len", 4, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("copied", 5, ProtoSchemaType::kUint32));
   }
 
   {
@@ -662,10 +707,10 @@
     event->name = "ext4_sync_file_enter";
     event->group = "ext4";
     event->proto_field_id = 43;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("parent", 3, kProtoUint64));
-    event->fields.push_back(MakeField("datasync", 4, kProtoInt32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("parent", 3, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("datasync", 4, ProtoSchemaType::kInt32));
   }
 
   {
@@ -674,9 +719,9 @@
     event->name = "ext4_sync_file_exit";
     event->group = "ext4";
     event->proto_field_id = 44;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("ret", 3, kProtoInt32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ret", 3, ProtoSchemaType::kInt32));
   }
 
   {
@@ -685,10 +730,12 @@
     event->name = "ext4_alloc_da_blocks";
     event->group = "ext4";
     event->proto_field_id = 134;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("data_blocks", 3, kProtoUint32));
-    event->fields.push_back(MakeField("meta_blocks", 4, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(
+        MakeField("data_blocks", 3, ProtoSchemaType::kUint32));
+    event->fields.push_back(
+        MakeField("meta_blocks", 4, ProtoSchemaType::kUint32));
   }
 
   {
@@ -697,17 +744,17 @@
     event->name = "ext4_allocate_blocks";
     event->group = "ext4";
     event->proto_field_id = 135;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("block", 3, kProtoUint64));
-    event->fields.push_back(MakeField("len", 4, kProtoUint32));
-    event->fields.push_back(MakeField("logical", 5, kProtoUint32));
-    event->fields.push_back(MakeField("lleft", 6, kProtoUint32));
-    event->fields.push_back(MakeField("lright", 7, kProtoUint32));
-    event->fields.push_back(MakeField("goal", 8, kProtoUint64));
-    event->fields.push_back(MakeField("pleft", 9, kProtoUint64));
-    event->fields.push_back(MakeField("pright", 10, kProtoUint64));
-    event->fields.push_back(MakeField("flags", 11, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("block", 3, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("len", 4, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("logical", 5, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("lleft", 6, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("lright", 7, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("goal", 8, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("pleft", 9, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("pright", 10, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("flags", 11, ProtoSchemaType::kUint32));
   }
 
   {
@@ -716,10 +763,10 @@
     event->name = "ext4_allocate_inode";
     event->group = "ext4";
     event->proto_field_id = 136;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("dir", 3, kProtoUint64));
-    event->fields.push_back(MakeField("mode", 4, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("dir", 3, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("mode", 4, ProtoSchemaType::kUint32));
   }
 
   {
@@ -728,9 +775,9 @@
     event->name = "ext4_begin_ordered_truncate";
     event->group = "ext4";
     event->proto_field_id = 137;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("new_size", 3, kProtoInt64));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("new_size", 3, ProtoSchemaType::kInt64));
   }
 
   {
@@ -739,10 +786,10 @@
     event->name = "ext4_collapse_range";
     event->group = "ext4";
     event->proto_field_id = 138;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("offset", 3, kProtoInt64));
-    event->fields.push_back(MakeField("len", 4, kProtoInt64));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("offset", 3, ProtoSchemaType::kInt64));
+    event->fields.push_back(MakeField("len", 4, ProtoSchemaType::kInt64));
   }
 
   {
@@ -751,14 +798,18 @@
     event->name = "ext4_da_release_space";
     event->group = "ext4";
     event->proto_field_id = 139;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("i_blocks", 3, kProtoUint64));
-    event->fields.push_back(MakeField("freed_blocks", 4, kProtoInt32));
-    event->fields.push_back(MakeField("reserved_data_blocks", 5, kProtoInt32));
-    event->fields.push_back(MakeField("reserved_meta_blocks", 6, kProtoInt32));
-    event->fields.push_back(MakeField("allocated_meta_blocks", 7, kProtoInt32));
-    event->fields.push_back(MakeField("mode", 8, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("i_blocks", 3, ProtoSchemaType::kUint64));
+    event->fields.push_back(
+        MakeField("freed_blocks", 4, ProtoSchemaType::kInt32));
+    event->fields.push_back(
+        MakeField("reserved_data_blocks", 5, ProtoSchemaType::kInt32));
+    event->fields.push_back(
+        MakeField("reserved_meta_blocks", 6, ProtoSchemaType::kInt32));
+    event->fields.push_back(
+        MakeField("allocated_meta_blocks", 7, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("mode", 8, ProtoSchemaType::kUint32));
   }
 
   {
@@ -767,13 +818,15 @@
     event->name = "ext4_da_reserve_space";
     event->group = "ext4";
     event->proto_field_id = 140;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("i_blocks", 3, kProtoUint64));
-    event->fields.push_back(MakeField("reserved_data_blocks", 4, kProtoInt32));
-    event->fields.push_back(MakeField("reserved_meta_blocks", 5, kProtoInt32));
-    event->fields.push_back(MakeField("mode", 6, kProtoUint32));
-    event->fields.push_back(MakeField("md_needed", 7, kProtoInt32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("i_blocks", 3, ProtoSchemaType::kUint64));
+    event->fields.push_back(
+        MakeField("reserved_data_blocks", 4, ProtoSchemaType::kInt32));
+    event->fields.push_back(
+        MakeField("reserved_meta_blocks", 5, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("mode", 6, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("md_needed", 7, ProtoSchemaType::kInt32));
   }
 
   {
@@ -782,15 +835,20 @@
     event->name = "ext4_da_update_reserve_space";
     event->group = "ext4";
     event->proto_field_id = 141;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("i_blocks", 3, kProtoUint64));
-    event->fields.push_back(MakeField("used_blocks", 4, kProtoInt32));
-    event->fields.push_back(MakeField("reserved_data_blocks", 5, kProtoInt32));
-    event->fields.push_back(MakeField("reserved_meta_blocks", 6, kProtoInt32));
-    event->fields.push_back(MakeField("allocated_meta_blocks", 7, kProtoInt32));
-    event->fields.push_back(MakeField("quota_claim", 8, kProtoInt32));
-    event->fields.push_back(MakeField("mode", 9, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("i_blocks", 3, ProtoSchemaType::kUint64));
+    event->fields.push_back(
+        MakeField("used_blocks", 4, ProtoSchemaType::kInt32));
+    event->fields.push_back(
+        MakeField("reserved_data_blocks", 5, ProtoSchemaType::kInt32));
+    event->fields.push_back(
+        MakeField("reserved_meta_blocks", 6, ProtoSchemaType::kInt32));
+    event->fields.push_back(
+        MakeField("allocated_meta_blocks", 7, ProtoSchemaType::kInt32));
+    event->fields.push_back(
+        MakeField("quota_claim", 8, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("mode", 9, ProtoSchemaType::kUint32));
   }
 
   {
@@ -799,16 +857,20 @@
     event->name = "ext4_da_write_pages";
     event->group = "ext4";
     event->proto_field_id = 142;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("first_page", 3, kProtoUint64));
-    event->fields.push_back(MakeField("nr_to_write", 4, kProtoInt64));
-    event->fields.push_back(MakeField("sync_mode", 5, kProtoInt32));
-    event->fields.push_back(MakeField("b_blocknr", 6, kProtoUint64));
-    event->fields.push_back(MakeField("b_size", 7, kProtoUint32));
-    event->fields.push_back(MakeField("b_state", 8, kProtoUint32));
-    event->fields.push_back(MakeField("io_done", 9, kProtoInt32));
-    event->fields.push_back(MakeField("pages_written", 10, kProtoInt32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(
+        MakeField("first_page", 3, ProtoSchemaType::kUint64));
+    event->fields.push_back(
+        MakeField("nr_to_write", 4, ProtoSchemaType::kInt64));
+    event->fields.push_back(MakeField("sync_mode", 5, ProtoSchemaType::kInt32));
+    event->fields.push_back(
+        MakeField("b_blocknr", 6, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("b_size", 7, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("b_state", 8, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("io_done", 9, ProtoSchemaType::kInt32));
+    event->fields.push_back(
+        MakeField("pages_written", 10, ProtoSchemaType::kInt32));
   }
 
   {
@@ -817,11 +879,11 @@
     event->name = "ext4_da_write_pages_extent";
     event->group = "ext4";
     event->proto_field_id = 143;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("lblk", 3, kProtoUint64));
-    event->fields.push_back(MakeField("len", 4, kProtoUint32));
-    event->fields.push_back(MakeField("flags", 5, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("lblk", 3, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("len", 4, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("flags", 5, ProtoSchemaType::kUint32));
   }
 
   {
@@ -830,11 +892,11 @@
     event->name = "ext4_direct_IO_enter";
     event->group = "ext4";
     event->proto_field_id = 144;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("pos", 3, kProtoInt64));
-    event->fields.push_back(MakeField("len", 4, kProtoUint64));
-    event->fields.push_back(MakeField("rw", 5, kProtoInt32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("pos", 3, ProtoSchemaType::kInt64));
+    event->fields.push_back(MakeField("len", 4, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("rw", 5, ProtoSchemaType::kInt32));
   }
 
   {
@@ -843,12 +905,12 @@
     event->name = "ext4_direct_IO_exit";
     event->group = "ext4";
     event->proto_field_id = 145;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("pos", 3, kProtoInt64));
-    event->fields.push_back(MakeField("len", 4, kProtoUint64));
-    event->fields.push_back(MakeField("rw", 5, kProtoInt32));
-    event->fields.push_back(MakeField("ret", 6, kProtoInt32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("pos", 3, ProtoSchemaType::kInt64));
+    event->fields.push_back(MakeField("len", 4, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("rw", 5, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("ret", 6, ProtoSchemaType::kInt32));
   }
 
   {
@@ -857,9 +919,9 @@
     event->name = "ext4_discard_blocks";
     event->group = "ext4";
     event->proto_field_id = 146;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("blk", 2, kProtoUint64));
-    event->fields.push_back(MakeField("count", 3, kProtoUint64));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("blk", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("count", 3, ProtoSchemaType::kUint64));
   }
 
   {
@@ -868,8 +930,8 @@
     event->name = "ext4_discard_preallocations";
     event->group = "ext4";
     event->proto_field_id = 147;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
   }
 
   {
@@ -878,9 +940,9 @@
     event->name = "ext4_drop_inode";
     event->group = "ext4";
     event->proto_field_id = 148;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("drop", 3, kProtoInt32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("drop", 3, ProtoSchemaType::kInt32));
   }
 
   {
@@ -889,12 +951,12 @@
     event->name = "ext4_es_cache_extent";
     event->group = "ext4";
     event->proto_field_id = 149;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("lblk", 3, kProtoUint32));
-    event->fields.push_back(MakeField("len", 4, kProtoUint32));
-    event->fields.push_back(MakeField("pblk", 5, kProtoUint64));
-    event->fields.push_back(MakeField("status", 6, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("lblk", 3, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("len", 4, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("pblk", 5, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("status", 6, ProtoSchemaType::kUint32));
   }
 
   {
@@ -903,9 +965,9 @@
     event->name = "ext4_es_find_delayed_extent_range_enter";
     event->group = "ext4";
     event->proto_field_id = 150;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("lblk", 3, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("lblk", 3, ProtoSchemaType::kUint32));
   }
 
   {
@@ -914,12 +976,12 @@
     event->name = "ext4_es_find_delayed_extent_range_exit";
     event->group = "ext4";
     event->proto_field_id = 151;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("lblk", 3, kProtoUint32));
-    event->fields.push_back(MakeField("len", 4, kProtoUint32));
-    event->fields.push_back(MakeField("pblk", 5, kProtoUint64));
-    event->fields.push_back(MakeField("status", 6, kProtoUint64));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("lblk", 3, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("len", 4, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("pblk", 5, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("status", 6, ProtoSchemaType::kUint64));
   }
 
   {
@@ -928,12 +990,12 @@
     event->name = "ext4_es_insert_extent";
     event->group = "ext4";
     event->proto_field_id = 152;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("lblk", 3, kProtoUint32));
-    event->fields.push_back(MakeField("len", 4, kProtoUint32));
-    event->fields.push_back(MakeField("pblk", 5, kProtoUint64));
-    event->fields.push_back(MakeField("status", 6, kProtoUint64));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("lblk", 3, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("len", 4, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("pblk", 5, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("status", 6, ProtoSchemaType::kUint64));
   }
 
   {
@@ -942,9 +1004,9 @@
     event->name = "ext4_es_lookup_extent_enter";
     event->group = "ext4";
     event->proto_field_id = 153;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("lblk", 3, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("lblk", 3, ProtoSchemaType::kUint32));
   }
 
   {
@@ -953,13 +1015,13 @@
     event->name = "ext4_es_lookup_extent_exit";
     event->group = "ext4";
     event->proto_field_id = 154;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("lblk", 3, kProtoUint32));
-    event->fields.push_back(MakeField("len", 4, kProtoUint32));
-    event->fields.push_back(MakeField("pblk", 5, kProtoUint64));
-    event->fields.push_back(MakeField("status", 6, kProtoUint64));
-    event->fields.push_back(MakeField("found", 7, kProtoInt32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("lblk", 3, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("len", 4, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("pblk", 5, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("status", 6, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("found", 7, ProtoSchemaType::kInt32));
   }
 
   {
@@ -968,10 +1030,10 @@
     event->name = "ext4_es_remove_extent";
     event->group = "ext4";
     event->proto_field_id = 155;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("lblk", 3, kProtoInt64));
-    event->fields.push_back(MakeField("len", 4, kProtoInt64));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("lblk", 3, ProtoSchemaType::kInt64));
+    event->fields.push_back(MakeField("len", 4, ProtoSchemaType::kInt64));
   }
 
   {
@@ -980,11 +1042,13 @@
     event->name = "ext4_es_shrink";
     event->group = "ext4";
     event->proto_field_id = 156;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("nr_shrunk", 2, kProtoInt32));
-    event->fields.push_back(MakeField("scan_time", 3, kProtoUint64));
-    event->fields.push_back(MakeField("nr_skipped", 4, kProtoInt32));
-    event->fields.push_back(MakeField("retried", 5, kProtoInt32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("nr_shrunk", 2, ProtoSchemaType::kInt32));
+    event->fields.push_back(
+        MakeField("scan_time", 3, ProtoSchemaType::kUint64));
+    event->fields.push_back(
+        MakeField("nr_skipped", 4, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("retried", 5, ProtoSchemaType::kInt32));
   }
 
   {
@@ -993,9 +1057,10 @@
     event->name = "ext4_es_shrink_count";
     event->group = "ext4";
     event->proto_field_id = 157;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("nr_to_scan", 2, kProtoInt32));
-    event->fields.push_back(MakeField("cache_cnt", 3, kProtoInt32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(
+        MakeField("nr_to_scan", 2, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("cache_cnt", 3, ProtoSchemaType::kInt32));
   }
 
   {
@@ -1004,9 +1069,10 @@
     event->name = "ext4_es_shrink_scan_enter";
     event->group = "ext4";
     event->proto_field_id = 158;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("nr_to_scan", 2, kProtoInt32));
-    event->fields.push_back(MakeField("cache_cnt", 3, kProtoInt32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(
+        MakeField("nr_to_scan", 2, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("cache_cnt", 3, ProtoSchemaType::kInt32));
   }
 
   {
@@ -1015,9 +1081,9 @@
     event->name = "ext4_es_shrink_scan_exit";
     event->group = "ext4";
     event->proto_field_id = 159;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("nr_shrunk", 2, kProtoInt32));
-    event->fields.push_back(MakeField("cache_cnt", 3, kProtoInt32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("nr_shrunk", 2, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("cache_cnt", 3, ProtoSchemaType::kInt32));
   }
 
   {
@@ -1026,9 +1092,9 @@
     event->name = "ext4_evict_inode";
     event->group = "ext4";
     event->proto_field_id = 160;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("nlink", 3, kProtoInt32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("nlink", 3, ProtoSchemaType::kInt32));
   }
 
   {
@@ -1037,13 +1103,13 @@
     event->name = "ext4_ext_convert_to_initialized_enter";
     event->group = "ext4";
     event->proto_field_id = 161;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("m_lblk", 3, kProtoUint32));
-    event->fields.push_back(MakeField("m_len", 4, kProtoUint32));
-    event->fields.push_back(MakeField("u_lblk", 5, kProtoUint32));
-    event->fields.push_back(MakeField("u_len", 6, kProtoUint32));
-    event->fields.push_back(MakeField("u_pblk", 7, kProtoUint64));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("m_lblk", 3, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("m_len", 4, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("u_lblk", 5, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("u_len", 6, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("u_pblk", 7, ProtoSchemaType::kUint64));
   }
 
   {
@@ -1052,16 +1118,16 @@
     event->name = "ext4_ext_convert_to_initialized_fastpath";
     event->group = "ext4";
     event->proto_field_id = 162;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("m_lblk", 3, kProtoUint32));
-    event->fields.push_back(MakeField("m_len", 4, kProtoUint32));
-    event->fields.push_back(MakeField("u_lblk", 5, kProtoUint32));
-    event->fields.push_back(MakeField("u_len", 6, kProtoUint32));
-    event->fields.push_back(MakeField("u_pblk", 7, kProtoUint64));
-    event->fields.push_back(MakeField("i_lblk", 8, kProtoUint32));
-    event->fields.push_back(MakeField("i_len", 9, kProtoUint32));
-    event->fields.push_back(MakeField("i_pblk", 10, kProtoUint64));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("m_lblk", 3, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("m_len", 4, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("u_lblk", 5, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("u_len", 6, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("u_pblk", 7, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("i_lblk", 8, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("i_len", 9, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("i_pblk", 10, ProtoSchemaType::kUint64));
   }
 
   {
@@ -1070,14 +1136,15 @@
     event->name = "ext4_ext_handle_unwritten_extents";
     event->group = "ext4";
     event->proto_field_id = 163;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("flags", 3, kProtoInt32));
-    event->fields.push_back(MakeField("lblk", 4, kProtoUint32));
-    event->fields.push_back(MakeField("pblk", 5, kProtoUint64));
-    event->fields.push_back(MakeField("len", 6, kProtoUint32));
-    event->fields.push_back(MakeField("allocated", 7, kProtoUint32));
-    event->fields.push_back(MakeField("newblk", 8, kProtoUint64));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("flags", 3, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("lblk", 4, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("pblk", 5, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("len", 6, ProtoSchemaType::kUint32));
+    event->fields.push_back(
+        MakeField("allocated", 7, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("newblk", 8, ProtoSchemaType::kUint64));
   }
 
   {
@@ -1086,10 +1153,10 @@
     event->name = "ext4_ext_in_cache";
     event->group = "ext4";
     event->proto_field_id = 164;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("lblk", 3, kProtoUint32));
-    event->fields.push_back(MakeField("ret", 4, kProtoInt32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("lblk", 3, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("ret", 4, ProtoSchemaType::kInt32));
   }
 
   {
@@ -1098,10 +1165,10 @@
     event->name = "ext4_ext_load_extent";
     event->group = "ext4";
     event->proto_field_id = 165;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("pblk", 3, kProtoUint64));
-    event->fields.push_back(MakeField("lblk", 4, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("pblk", 3, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("lblk", 4, ProtoSchemaType::kUint32));
   }
 
   {
@@ -1110,11 +1177,11 @@
     event->name = "ext4_ext_map_blocks_enter";
     event->group = "ext4";
     event->proto_field_id = 166;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("lblk", 3, kProtoUint32));
-    event->fields.push_back(MakeField("len", 4, kProtoUint32));
-    event->fields.push_back(MakeField("flags", 5, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("lblk", 3, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("len", 4, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("flags", 5, ProtoSchemaType::kUint32));
   }
 
   {
@@ -1123,14 +1190,14 @@
     event->name = "ext4_ext_map_blocks_exit";
     event->group = "ext4";
     event->proto_field_id = 167;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("flags", 3, kProtoUint32));
-    event->fields.push_back(MakeField("pblk", 4, kProtoUint64));
-    event->fields.push_back(MakeField("lblk", 5, kProtoUint32));
-    event->fields.push_back(MakeField("len", 6, kProtoUint32));
-    event->fields.push_back(MakeField("mflags", 7, kProtoUint32));
-    event->fields.push_back(MakeField("ret", 8, kProtoInt32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("flags", 3, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("pblk", 4, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("lblk", 5, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("len", 6, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("mflags", 7, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("ret", 8, ProtoSchemaType::kInt32));
   }
 
   {
@@ -1139,11 +1206,11 @@
     event->name = "ext4_ext_put_in_cache";
     event->group = "ext4";
     event->proto_field_id = 168;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("lblk", 3, kProtoUint32));
-    event->fields.push_back(MakeField("len", 4, kProtoUint32));
-    event->fields.push_back(MakeField("start", 5, kProtoUint64));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("lblk", 3, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("len", 4, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("start", 5, ProtoSchemaType::kUint64));
   }
 
   {
@@ -1152,11 +1219,11 @@
     event->name = "ext4_ext_remove_space";
     event->group = "ext4";
     event->proto_field_id = 169;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("start", 3, kProtoUint32));
-    event->fields.push_back(MakeField("end", 4, kProtoUint32));
-    event->fields.push_back(MakeField("depth", 5, kProtoInt32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("start", 3, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("end", 4, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("depth", 5, ProtoSchemaType::kInt32));
   }
 
   {
@@ -1165,13 +1232,14 @@
     event->name = "ext4_ext_remove_space_done";
     event->group = "ext4";
     event->proto_field_id = 170;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("start", 3, kProtoUint32));
-    event->fields.push_back(MakeField("end", 4, kProtoUint32));
-    event->fields.push_back(MakeField("depth", 5, kProtoInt32));
-    event->fields.push_back(MakeField("partial", 6, kProtoInt64));
-    event->fields.push_back(MakeField("eh_entries", 7, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("start", 3, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("end", 4, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("depth", 5, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("partial", 6, ProtoSchemaType::kInt64));
+    event->fields.push_back(
+        MakeField("eh_entries", 7, ProtoSchemaType::kUint32));
   }
 
   {
@@ -1180,9 +1248,9 @@
     event->name = "ext4_ext_rm_idx";
     event->group = "ext4";
     event->proto_field_id = 171;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("pblk", 3, kProtoUint64));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("pblk", 3, ProtoSchemaType::kUint64));
   }
 
   {
@@ -1191,13 +1259,13 @@
     event->name = "ext4_ext_rm_leaf";
     event->group = "ext4";
     event->proto_field_id = 172;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("partial", 3, kProtoInt64));
-    event->fields.push_back(MakeField("start", 4, kProtoUint32));
-    event->fields.push_back(MakeField("ee_lblk", 5, kProtoUint32));
-    event->fields.push_back(MakeField("ee_pblk", 6, kProtoUint64));
-    event->fields.push_back(MakeField("ee_len", 7, kProtoInt32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("partial", 3, ProtoSchemaType::kInt64));
+    event->fields.push_back(MakeField("start", 4, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("ee_lblk", 5, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("ee_pblk", 6, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ee_len", 7, ProtoSchemaType::kInt32));
   }
 
   {
@@ -1206,11 +1274,11 @@
     event->name = "ext4_ext_show_extent";
     event->group = "ext4";
     event->proto_field_id = 173;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("pblk", 3, kProtoUint64));
-    event->fields.push_back(MakeField("lblk", 4, kProtoUint32));
-    event->fields.push_back(MakeField("len", 5, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("pblk", 3, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("lblk", 4, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("len", 5, ProtoSchemaType::kUint32));
   }
 
   {
@@ -1219,12 +1287,12 @@
     event->name = "ext4_fallocate_enter";
     event->group = "ext4";
     event->proto_field_id = 174;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("offset", 3, kProtoInt64));
-    event->fields.push_back(MakeField("len", 4, kProtoInt64));
-    event->fields.push_back(MakeField("mode", 5, kProtoInt32));
-    event->fields.push_back(MakeField("pos", 6, kProtoInt64));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("offset", 3, ProtoSchemaType::kInt64));
+    event->fields.push_back(MakeField("len", 4, ProtoSchemaType::kInt64));
+    event->fields.push_back(MakeField("mode", 5, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("pos", 6, ProtoSchemaType::kInt64));
   }
 
   {
@@ -1233,11 +1301,11 @@
     event->name = "ext4_fallocate_exit";
     event->group = "ext4";
     event->proto_field_id = 175;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("pos", 3, kProtoInt64));
-    event->fields.push_back(MakeField("blocks", 4, kProtoUint32));
-    event->fields.push_back(MakeField("ret", 5, kProtoInt32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("pos", 3, ProtoSchemaType::kInt64));
+    event->fields.push_back(MakeField("blocks", 4, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("ret", 5, ProtoSchemaType::kInt32));
   }
 
   {
@@ -1246,13 +1314,14 @@
     event->name = "ext4_find_delalloc_range";
     event->group = "ext4";
     event->proto_field_id = 176;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("from", 3, kProtoUint32));
-    event->fields.push_back(MakeField("to", 4, kProtoUint32));
-    event->fields.push_back(MakeField("reverse", 5, kProtoInt32));
-    event->fields.push_back(MakeField("found", 6, kProtoInt32));
-    event->fields.push_back(MakeField("found_blk", 7, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("from", 3, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("to", 4, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("reverse", 5, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("found", 6, ProtoSchemaType::kInt32));
+    event->fields.push_back(
+        MakeField("found_blk", 7, ProtoSchemaType::kUint32));
   }
 
   {
@@ -1261,11 +1330,12 @@
     event->name = "ext4_forget";
     event->group = "ext4";
     event->proto_field_id = 177;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("block", 3, kProtoUint64));
-    event->fields.push_back(MakeField("is_metadata", 4, kProtoInt32));
-    event->fields.push_back(MakeField("mode", 5, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("block", 3, ProtoSchemaType::kUint64));
+    event->fields.push_back(
+        MakeField("is_metadata", 4, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("mode", 5, ProtoSchemaType::kUint32));
   }
 
   {
@@ -1274,12 +1344,12 @@
     event->name = "ext4_free_blocks";
     event->group = "ext4";
     event->proto_field_id = 178;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("block", 3, kProtoUint64));
-    event->fields.push_back(MakeField("count", 4, kProtoUint64));
-    event->fields.push_back(MakeField("flags", 5, kProtoInt32));
-    event->fields.push_back(MakeField("mode", 6, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("block", 3, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("count", 4, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("flags", 5, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("mode", 6, ProtoSchemaType::kUint32));
   }
 
   {
@@ -1288,12 +1358,12 @@
     event->name = "ext4_free_inode";
     event->group = "ext4";
     event->proto_field_id = 179;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("uid", 3, kProtoUint32));
-    event->fields.push_back(MakeField("gid", 4, kProtoUint32));
-    event->fields.push_back(MakeField("blocks", 5, kProtoUint64));
-    event->fields.push_back(MakeField("mode", 6, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("uid", 3, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("gid", 4, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("blocks", 5, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("mode", 6, ProtoSchemaType::kUint32));
   }
 
   {
@@ -1302,12 +1372,12 @@
     event->name = "ext4_get_implied_cluster_alloc_exit";
     event->group = "ext4";
     event->proto_field_id = 180;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("flags", 2, kProtoUint32));
-    event->fields.push_back(MakeField("lblk", 3, kProtoUint32));
-    event->fields.push_back(MakeField("pblk", 4, kProtoUint64));
-    event->fields.push_back(MakeField("len", 5, kProtoUint32));
-    event->fields.push_back(MakeField("ret", 6, kProtoInt32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("flags", 2, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("lblk", 3, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("pblk", 4, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("len", 5, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("ret", 6, ProtoSchemaType::kInt32));
   }
 
   {
@@ -1316,10 +1386,10 @@
     event->name = "ext4_get_reserved_cluster_alloc";
     event->group = "ext4";
     event->proto_field_id = 181;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("lblk", 3, kProtoUint32));
-    event->fields.push_back(MakeField("len", 4, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("lblk", 3, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("len", 4, ProtoSchemaType::kUint32));
   }
 
   {
@@ -1328,11 +1398,11 @@
     event->name = "ext4_ind_map_blocks_enter";
     event->group = "ext4";
     event->proto_field_id = 182;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("lblk", 3, kProtoUint32));
-    event->fields.push_back(MakeField("len", 4, kProtoUint32));
-    event->fields.push_back(MakeField("flags", 5, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("lblk", 3, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("len", 4, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("flags", 5, ProtoSchemaType::kUint32));
   }
 
   {
@@ -1341,14 +1411,14 @@
     event->name = "ext4_ind_map_blocks_exit";
     event->group = "ext4";
     event->proto_field_id = 183;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("flags", 3, kProtoUint32));
-    event->fields.push_back(MakeField("pblk", 4, kProtoUint64));
-    event->fields.push_back(MakeField("lblk", 5, kProtoUint32));
-    event->fields.push_back(MakeField("len", 6, kProtoUint32));
-    event->fields.push_back(MakeField("mflags", 7, kProtoUint32));
-    event->fields.push_back(MakeField("ret", 8, kProtoInt32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("flags", 3, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("pblk", 4, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("lblk", 5, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("len", 6, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("mflags", 7, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("ret", 8, ProtoSchemaType::kInt32));
   }
 
   {
@@ -1357,10 +1427,10 @@
     event->name = "ext4_insert_range";
     event->group = "ext4";
     event->proto_field_id = 184;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("offset", 3, kProtoInt64));
-    event->fields.push_back(MakeField("len", 4, kProtoInt64));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("offset", 3, ProtoSchemaType::kInt64));
+    event->fields.push_back(MakeField("len", 4, ProtoSchemaType::kInt64));
   }
 
   {
@@ -1369,11 +1439,11 @@
     event->name = "ext4_invalidatepage";
     event->group = "ext4";
     event->proto_field_id = 185;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("index", 3, kProtoUint64));
-    event->fields.push_back(MakeField("offset", 4, kProtoUint64));
-    event->fields.push_back(MakeField("length", 5, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("index", 3, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("offset", 4, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("length", 5, ProtoSchemaType::kUint32));
   }
 
   {
@@ -1382,11 +1452,12 @@
     event->name = "ext4_journal_start";
     event->group = "ext4";
     event->proto_field_id = 186;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ip", 2, kProtoUint64));
-    event->fields.push_back(MakeField("blocks", 3, kProtoInt32));
-    event->fields.push_back(MakeField("rsv_blocks", 4, kProtoInt32));
-    event->fields.push_back(MakeField("nblocks", 5, kProtoInt32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ip", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("blocks", 3, ProtoSchemaType::kInt32));
+    event->fields.push_back(
+        MakeField("rsv_blocks", 4, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("nblocks", 5, ProtoSchemaType::kInt32));
   }
 
   {
@@ -1395,9 +1466,9 @@
     event->name = "ext4_journal_start_reserved";
     event->group = "ext4";
     event->proto_field_id = 187;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ip", 2, kProtoUint64));
-    event->fields.push_back(MakeField("blocks", 3, kProtoInt32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ip", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("blocks", 3, ProtoSchemaType::kInt32));
   }
 
   {
@@ -1406,11 +1477,11 @@
     event->name = "ext4_journalled_invalidatepage";
     event->group = "ext4";
     event->proto_field_id = 188;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("index", 3, kProtoUint64));
-    event->fields.push_back(MakeField("offset", 4, kProtoUint64));
-    event->fields.push_back(MakeField("length", 5, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("index", 3, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("offset", 4, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("length", 5, ProtoSchemaType::kUint32));
   }
 
   {
@@ -1419,11 +1490,11 @@
     event->name = "ext4_journalled_write_end";
     event->group = "ext4";
     event->proto_field_id = 189;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("pos", 3, kProtoInt64));
-    event->fields.push_back(MakeField("len", 4, kProtoUint32));
-    event->fields.push_back(MakeField("copied", 5, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("pos", 3, ProtoSchemaType::kInt64));
+    event->fields.push_back(MakeField("len", 4, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("copied", 5, ProtoSchemaType::kUint32));
   }
 
   {
@@ -1432,8 +1503,8 @@
     event->name = "ext4_load_inode";
     event->group = "ext4";
     event->proto_field_id = 190;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
   }
 
   {
@@ -1442,8 +1513,8 @@
     event->name = "ext4_load_inode_bitmap";
     event->group = "ext4";
     event->proto_field_id = 191;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("group", 2, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("group", 2, ProtoSchemaType::kUint32));
   }
 
   {
@@ -1452,9 +1523,9 @@
     event->name = "ext4_mark_inode_dirty";
     event->group = "ext4";
     event->proto_field_id = 192;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("ip", 3, kProtoUint64));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ip", 3, ProtoSchemaType::kUint64));
   }
 
   {
@@ -1463,8 +1534,8 @@
     event->name = "ext4_mb_bitmap_load";
     event->group = "ext4";
     event->proto_field_id = 193;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("group", 2, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("group", 2, ProtoSchemaType::kUint32));
   }
 
   {
@@ -1473,8 +1544,8 @@
     event->name = "ext4_mb_buddy_bitmap_load";
     event->group = "ext4";
     event->proto_field_id = 194;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("group", 2, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("group", 2, ProtoSchemaType::kUint32));
   }
 
   {
@@ -1483,8 +1554,8 @@
     event->name = "ext4_mb_discard_preallocations";
     event->group = "ext4";
     event->proto_field_id = 195;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("needed", 2, kProtoInt32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("needed", 2, ProtoSchemaType::kInt32));
   }
 
   {
@@ -1493,11 +1564,13 @@
     event->name = "ext4_mb_new_group_pa";
     event->group = "ext4";
     event->proto_field_id = 196;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("pa_pstart", 3, kProtoUint64));
-    event->fields.push_back(MakeField("pa_lstart", 4, kProtoUint64));
-    event->fields.push_back(MakeField("pa_len", 5, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(
+        MakeField("pa_pstart", 3, ProtoSchemaType::kUint64));
+    event->fields.push_back(
+        MakeField("pa_lstart", 4, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("pa_len", 5, ProtoSchemaType::kUint32));
   }
 
   {
@@ -1506,11 +1579,13 @@
     event->name = "ext4_mb_new_inode_pa";
     event->group = "ext4";
     event->proto_field_id = 197;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("pa_pstart", 3, kProtoUint64));
-    event->fields.push_back(MakeField("pa_lstart", 4, kProtoUint64));
-    event->fields.push_back(MakeField("pa_len", 5, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(
+        MakeField("pa_pstart", 3, ProtoSchemaType::kUint64));
+    event->fields.push_back(
+        MakeField("pa_lstart", 4, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("pa_len", 5, ProtoSchemaType::kUint32));
   }
 
   {
@@ -1519,9 +1594,10 @@
     event->name = "ext4_mb_release_group_pa";
     event->group = "ext4";
     event->proto_field_id = 198;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("pa_pstart", 2, kProtoUint64));
-    event->fields.push_back(MakeField("pa_len", 3, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(
+        MakeField("pa_pstart", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("pa_len", 3, ProtoSchemaType::kUint32));
   }
 
   {
@@ -1530,10 +1606,10 @@
     event->name = "ext4_mb_release_inode_pa";
     event->group = "ext4";
     event->proto_field_id = 199;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("block", 3, kProtoUint64));
-    event->fields.push_back(MakeField("count", 4, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("block", 3, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("count", 4, ProtoSchemaType::kUint32));
   }
 
   {
@@ -1542,26 +1618,36 @@
     event->name = "ext4_mballoc_alloc";
     event->group = "ext4";
     event->proto_field_id = 200;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("orig_logical", 3, kProtoUint32));
-    event->fields.push_back(MakeField("orig_start", 4, kProtoInt32));
-    event->fields.push_back(MakeField("orig_group", 5, kProtoUint32));
-    event->fields.push_back(MakeField("orig_len", 6, kProtoInt32));
-    event->fields.push_back(MakeField("goal_logical", 7, kProtoUint32));
-    event->fields.push_back(MakeField("goal_start", 8, kProtoInt32));
-    event->fields.push_back(MakeField("goal_group", 9, kProtoUint32));
-    event->fields.push_back(MakeField("goal_len", 10, kProtoInt32));
-    event->fields.push_back(MakeField("result_logical", 11, kProtoUint32));
-    event->fields.push_back(MakeField("result_start", 12, kProtoInt32));
-    event->fields.push_back(MakeField("result_group", 13, kProtoUint32));
-    event->fields.push_back(MakeField("result_len", 14, kProtoInt32));
-    event->fields.push_back(MakeField("found", 15, kProtoUint32));
-    event->fields.push_back(MakeField("groups", 16, kProtoUint32));
-    event->fields.push_back(MakeField("buddy", 17, kProtoUint32));
-    event->fields.push_back(MakeField("flags", 18, kProtoUint32));
-    event->fields.push_back(MakeField("tail", 19, kProtoUint32));
-    event->fields.push_back(MakeField("cr", 20, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(
+        MakeField("orig_logical", 3, ProtoSchemaType::kUint32));
+    event->fields.push_back(
+        MakeField("orig_start", 4, ProtoSchemaType::kInt32));
+    event->fields.push_back(
+        MakeField("orig_group", 5, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("orig_len", 6, ProtoSchemaType::kInt32));
+    event->fields.push_back(
+        MakeField("goal_logical", 7, ProtoSchemaType::kUint32));
+    event->fields.push_back(
+        MakeField("goal_start", 8, ProtoSchemaType::kInt32));
+    event->fields.push_back(
+        MakeField("goal_group", 9, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("goal_len", 10, ProtoSchemaType::kInt32));
+    event->fields.push_back(
+        MakeField("result_logical", 11, ProtoSchemaType::kUint32));
+    event->fields.push_back(
+        MakeField("result_start", 12, ProtoSchemaType::kInt32));
+    event->fields.push_back(
+        MakeField("result_group", 13, ProtoSchemaType::kUint32));
+    event->fields.push_back(
+        MakeField("result_len", 14, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("found", 15, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("groups", 16, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("buddy", 17, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("flags", 18, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("tail", 19, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("cr", 20, ProtoSchemaType::kUint32));
   }
 
   {
@@ -1570,11 +1656,14 @@
     event->name = "ext4_mballoc_discard";
     event->group = "ext4";
     event->proto_field_id = 201;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("result_start", 3, kProtoInt32));
-    event->fields.push_back(MakeField("result_group", 4, kProtoUint32));
-    event->fields.push_back(MakeField("result_len", 5, kProtoInt32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(
+        MakeField("result_start", 3, ProtoSchemaType::kInt32));
+    event->fields.push_back(
+        MakeField("result_group", 4, ProtoSchemaType::kUint32));
+    event->fields.push_back(
+        MakeField("result_len", 5, ProtoSchemaType::kInt32));
   }
 
   {
@@ -1583,11 +1672,14 @@
     event->name = "ext4_mballoc_free";
     event->group = "ext4";
     event->proto_field_id = 202;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("result_start", 3, kProtoInt32));
-    event->fields.push_back(MakeField("result_group", 4, kProtoUint32));
-    event->fields.push_back(MakeField("result_len", 5, kProtoInt32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(
+        MakeField("result_start", 3, ProtoSchemaType::kInt32));
+    event->fields.push_back(
+        MakeField("result_group", 4, ProtoSchemaType::kUint32));
+    event->fields.push_back(
+        MakeField("result_len", 5, ProtoSchemaType::kInt32));
   }
 
   {
@@ -1596,16 +1688,23 @@
     event->name = "ext4_mballoc_prealloc";
     event->group = "ext4";
     event->proto_field_id = 203;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("orig_logical", 3, kProtoUint32));
-    event->fields.push_back(MakeField("orig_start", 4, kProtoInt32));
-    event->fields.push_back(MakeField("orig_group", 5, kProtoUint32));
-    event->fields.push_back(MakeField("orig_len", 6, kProtoInt32));
-    event->fields.push_back(MakeField("result_logical", 7, kProtoUint32));
-    event->fields.push_back(MakeField("result_start", 8, kProtoInt32));
-    event->fields.push_back(MakeField("result_group", 9, kProtoUint32));
-    event->fields.push_back(MakeField("result_len", 10, kProtoInt32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(
+        MakeField("orig_logical", 3, ProtoSchemaType::kUint32));
+    event->fields.push_back(
+        MakeField("orig_start", 4, ProtoSchemaType::kInt32));
+    event->fields.push_back(
+        MakeField("orig_group", 5, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("orig_len", 6, ProtoSchemaType::kInt32));
+    event->fields.push_back(
+        MakeField("result_logical", 7, ProtoSchemaType::kUint32));
+    event->fields.push_back(
+        MakeField("result_start", 8, ProtoSchemaType::kInt32));
+    event->fields.push_back(
+        MakeField("result_group", 9, ProtoSchemaType::kUint32));
+    event->fields.push_back(
+        MakeField("result_len", 10, ProtoSchemaType::kInt32));
   }
 
   {
@@ -1614,12 +1713,12 @@
     event->name = "ext4_other_inode_update_time";
     event->group = "ext4";
     event->proto_field_id = 204;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("orig_ino", 3, kProtoUint64));
-    event->fields.push_back(MakeField("uid", 4, kProtoUint32));
-    event->fields.push_back(MakeField("gid", 5, kProtoUint32));
-    event->fields.push_back(MakeField("mode", 6, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("orig_ino", 3, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("uid", 4, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("gid", 5, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("mode", 6, ProtoSchemaType::kUint32));
   }
 
   {
@@ -1628,11 +1727,11 @@
     event->name = "ext4_punch_hole";
     event->group = "ext4";
     event->proto_field_id = 205;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("offset", 3, kProtoInt64));
-    event->fields.push_back(MakeField("len", 4, kProtoInt64));
-    event->fields.push_back(MakeField("mode", 5, kProtoInt32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("offset", 3, ProtoSchemaType::kInt64));
+    event->fields.push_back(MakeField("len", 4, ProtoSchemaType::kInt64));
+    event->fields.push_back(MakeField("mode", 5, ProtoSchemaType::kInt32));
   }
 
   {
@@ -1641,8 +1740,8 @@
     event->name = "ext4_read_block_bitmap_load";
     event->group = "ext4";
     event->proto_field_id = 206;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("group", 2, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("group", 2, ProtoSchemaType::kUint32));
   }
 
   {
@@ -1651,9 +1750,9 @@
     event->name = "ext4_readpage";
     event->group = "ext4";
     event->proto_field_id = 207;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("index", 3, kProtoUint64));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("index", 3, ProtoSchemaType::kUint64));
   }
 
   {
@@ -1662,9 +1761,9 @@
     event->name = "ext4_releasepage";
     event->group = "ext4";
     event->proto_field_id = 208;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("index", 3, kProtoUint64));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("index", 3, ProtoSchemaType::kUint64));
   }
 
   {
@@ -1673,14 +1772,14 @@
     event->name = "ext4_remove_blocks";
     event->group = "ext4";
     event->proto_field_id = 209;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("from", 3, kProtoUint32));
-    event->fields.push_back(MakeField("to", 4, kProtoUint32));
-    event->fields.push_back(MakeField("partial", 5, kProtoInt64));
-    event->fields.push_back(MakeField("ee_pblk", 6, kProtoUint64));
-    event->fields.push_back(MakeField("ee_lblk", 7, kProtoUint32));
-    event->fields.push_back(MakeField("ee_len", 8, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("from", 3, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("to", 4, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("partial", 5, ProtoSchemaType::kInt64));
+    event->fields.push_back(MakeField("ee_pblk", 6, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ee_lblk", 7, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("ee_len", 8, ProtoSchemaType::kUint32));
   }
 
   {
@@ -1689,16 +1788,16 @@
     event->name = "ext4_request_blocks";
     event->group = "ext4";
     event->proto_field_id = 210;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("len", 3, kProtoUint32));
-    event->fields.push_back(MakeField("logical", 4, kProtoUint32));
-    event->fields.push_back(MakeField("lleft", 5, kProtoUint32));
-    event->fields.push_back(MakeField("lright", 6, kProtoUint32));
-    event->fields.push_back(MakeField("goal", 7, kProtoUint64));
-    event->fields.push_back(MakeField("pleft", 8, kProtoUint64));
-    event->fields.push_back(MakeField("pright", 9, kProtoUint64));
-    event->fields.push_back(MakeField("flags", 10, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("len", 3, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("logical", 4, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("lleft", 5, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("lright", 6, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("goal", 7, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("pleft", 8, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("pright", 9, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("flags", 10, ProtoSchemaType::kUint32));
   }
 
   {
@@ -1707,9 +1806,9 @@
     event->name = "ext4_request_inode";
     event->group = "ext4";
     event->proto_field_id = 211;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("dir", 2, kProtoUint64));
-    event->fields.push_back(MakeField("mode", 3, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("dir", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("mode", 3, ProtoSchemaType::kUint32));
   }
 
   {
@@ -1718,8 +1817,8 @@
     event->name = "ext4_sync_fs";
     event->group = "ext4";
     event->proto_field_id = 212;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("wait", 2, kProtoInt32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("wait", 2, ProtoSchemaType::kInt32));
   }
 
   {
@@ -1728,11 +1827,11 @@
     event->name = "ext4_trim_all_free";
     event->group = "ext4";
     event->proto_field_id = 213;
-    event->fields.push_back(MakeField("dev_major", 1, kProtoInt32));
-    event->fields.push_back(MakeField("dev_minor", 2, kProtoInt32));
-    event->fields.push_back(MakeField("group", 3, kProtoUint32));
-    event->fields.push_back(MakeField("start", 4, kProtoInt32));
-    event->fields.push_back(MakeField("len", 5, kProtoInt32));
+    event->fields.push_back(MakeField("dev_major", 1, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("dev_minor", 2, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("group", 3, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("start", 4, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("len", 5, ProtoSchemaType::kInt32));
   }
 
   {
@@ -1741,11 +1840,11 @@
     event->name = "ext4_trim_extent";
     event->group = "ext4";
     event->proto_field_id = 214;
-    event->fields.push_back(MakeField("dev_major", 1, kProtoInt32));
-    event->fields.push_back(MakeField("dev_minor", 2, kProtoInt32));
-    event->fields.push_back(MakeField("group", 3, kProtoUint32));
-    event->fields.push_back(MakeField("start", 4, kProtoInt32));
-    event->fields.push_back(MakeField("len", 5, kProtoInt32));
+    event->fields.push_back(MakeField("dev_major", 1, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("dev_minor", 2, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("group", 3, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("start", 4, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("len", 5, ProtoSchemaType::kInt32));
   }
 
   {
@@ -1754,9 +1853,9 @@
     event->name = "ext4_truncate_enter";
     event->group = "ext4";
     event->proto_field_id = 215;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("blocks", 3, kProtoUint64));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("blocks", 3, ProtoSchemaType::kUint64));
   }
 
   {
@@ -1765,9 +1864,9 @@
     event->name = "ext4_truncate_exit";
     event->group = "ext4";
     event->proto_field_id = 216;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("blocks", 3, kProtoUint64));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("blocks", 3, ProtoSchemaType::kUint64));
   }
 
   {
@@ -1776,10 +1875,10 @@
     event->name = "ext4_unlink_enter";
     event->group = "ext4";
     event->proto_field_id = 217;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("parent", 3, kProtoUint64));
-    event->fields.push_back(MakeField("size", 4, kProtoInt64));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("parent", 3, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("size", 4, ProtoSchemaType::kInt64));
   }
 
   {
@@ -1788,9 +1887,9 @@
     event->name = "ext4_unlink_exit";
     event->group = "ext4";
     event->proto_field_id = 218;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("ret", 3, kProtoInt32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ret", 3, ProtoSchemaType::kInt32));
   }
 
   {
@@ -1799,11 +1898,11 @@
     event->name = "ext4_write_begin";
     event->group = "ext4";
     event->proto_field_id = 219;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("pos", 3, kProtoInt64));
-    event->fields.push_back(MakeField("len", 4, kProtoUint32));
-    event->fields.push_back(MakeField("flags", 5, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("pos", 3, ProtoSchemaType::kInt64));
+    event->fields.push_back(MakeField("len", 4, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("flags", 5, ProtoSchemaType::kUint32));
   }
 
   {
@@ -1812,11 +1911,11 @@
     event->name = "ext4_write_end";
     event->group = "ext4";
     event->proto_field_id = 230;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("pos", 3, kProtoInt64));
-    event->fields.push_back(MakeField("len", 4, kProtoUint32));
-    event->fields.push_back(MakeField("copied", 5, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("pos", 3, ProtoSchemaType::kInt64));
+    event->fields.push_back(MakeField("len", 4, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("copied", 5, ProtoSchemaType::kUint32));
   }
 
   {
@@ -1825,9 +1924,9 @@
     event->name = "ext4_writepage";
     event->group = "ext4";
     event->proto_field_id = 231;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("index", 3, kProtoUint64));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("index", 3, ProtoSchemaType::kUint64));
   }
 
   {
@@ -1836,16 +1935,22 @@
     event->name = "ext4_writepages";
     event->group = "ext4";
     event->proto_field_id = 232;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("nr_to_write", 3, kProtoInt64));
-    event->fields.push_back(MakeField("pages_skipped", 4, kProtoInt64));
-    event->fields.push_back(MakeField("range_start", 5, kProtoInt64));
-    event->fields.push_back(MakeField("range_end", 6, kProtoInt64));
-    event->fields.push_back(MakeField("writeback_index", 7, kProtoUint64));
-    event->fields.push_back(MakeField("sync_mode", 8, kProtoInt32));
-    event->fields.push_back(MakeField("for_kupdate", 9, kProtoUint32));
-    event->fields.push_back(MakeField("range_cyclic", 10, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(
+        MakeField("nr_to_write", 3, ProtoSchemaType::kInt64));
+    event->fields.push_back(
+        MakeField("pages_skipped", 4, ProtoSchemaType::kInt64));
+    event->fields.push_back(
+        MakeField("range_start", 5, ProtoSchemaType::kInt64));
+    event->fields.push_back(MakeField("range_end", 6, ProtoSchemaType::kInt64));
+    event->fields.push_back(
+        MakeField("writeback_index", 7, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("sync_mode", 8, ProtoSchemaType::kInt32));
+    event->fields.push_back(
+        MakeField("for_kupdate", 9, ProtoSchemaType::kUint32));
+    event->fields.push_back(
+        MakeField("range_cyclic", 10, ProtoSchemaType::kUint32));
   }
 
   {
@@ -1854,13 +1959,16 @@
     event->name = "ext4_writepages_result";
     event->group = "ext4";
     event->proto_field_id = 233;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("ret", 3, kProtoInt32));
-    event->fields.push_back(MakeField("pages_written", 4, kProtoInt32));
-    event->fields.push_back(MakeField("pages_skipped", 5, kProtoInt64));
-    event->fields.push_back(MakeField("writeback_index", 6, kProtoUint64));
-    event->fields.push_back(MakeField("sync_mode", 7, kProtoInt32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ret", 3, ProtoSchemaType::kInt32));
+    event->fields.push_back(
+        MakeField("pages_written", 4, ProtoSchemaType::kInt32));
+    event->fields.push_back(
+        MakeField("pages_skipped", 5, ProtoSchemaType::kInt64));
+    event->fields.push_back(
+        MakeField("writeback_index", 6, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("sync_mode", 7, ProtoSchemaType::kInt32));
   }
 
   {
@@ -1869,11 +1977,11 @@
     event->name = "ext4_zero_range";
     event->group = "ext4";
     event->proto_field_id = 234;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("offset", 3, kProtoInt64));
-    event->fields.push_back(MakeField("len", 4, kProtoInt64));
-    event->fields.push_back(MakeField("mode", 5, kProtoInt32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("offset", 3, ProtoSchemaType::kInt64));
+    event->fields.push_back(MakeField("len", 4, ProtoSchemaType::kInt64));
+    event->fields.push_back(MakeField("mode", 5, ProtoSchemaType::kInt32));
   }
 
   {
@@ -1882,11 +1990,11 @@
     event->name = "f2fs_do_submit_bio";
     event->group = "f2fs";
     event->proto_field_id = 243;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("btype", 2, kProtoInt32));
-    event->fields.push_back(MakeField("sync", 3, kProtoUint32));
-    event->fields.push_back(MakeField("sector", 4, kProtoUint64));
-    event->fields.push_back(MakeField("size", 5, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("btype", 2, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("sync", 3, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("sector", 4, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("size", 5, ProtoSchemaType::kUint32));
   }
 
   {
@@ -1895,14 +2003,14 @@
     event->name = "f2fs_evict_inode";
     event->group = "f2fs";
     event->proto_field_id = 244;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("pino", 3, kProtoUint64));
-    event->fields.push_back(MakeField("mode", 4, kProtoUint32));
-    event->fields.push_back(MakeField("size", 5, kProtoInt64));
-    event->fields.push_back(MakeField("nlink", 6, kProtoUint32));
-    event->fields.push_back(MakeField("blocks", 7, kProtoUint64));
-    event->fields.push_back(MakeField("advise", 8, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("pino", 3, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("mode", 4, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("size", 5, ProtoSchemaType::kInt64));
+    event->fields.push_back(MakeField("nlink", 6, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("blocks", 7, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("advise", 8, ProtoSchemaType::kUint32));
   }
 
   {
@@ -1911,14 +2019,14 @@
     event->name = "f2fs_fallocate";
     event->group = "f2fs";
     event->proto_field_id = 245;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("mode", 3, kProtoInt32));
-    event->fields.push_back(MakeField("offset", 4, kProtoInt64));
-    event->fields.push_back(MakeField("len", 5, kProtoInt64));
-    event->fields.push_back(MakeField("size", 6, kProtoInt64));
-    event->fields.push_back(MakeField("blocks", 7, kProtoUint64));
-    event->fields.push_back(MakeField("ret", 8, kProtoInt32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("mode", 3, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("offset", 4, ProtoSchemaType::kInt64));
+    event->fields.push_back(MakeField("len", 5, ProtoSchemaType::kInt64));
+    event->fields.push_back(MakeField("size", 6, ProtoSchemaType::kInt64));
+    event->fields.push_back(MakeField("blocks", 7, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ret", 8, ProtoSchemaType::kInt32));
   }
 
   {
@@ -1927,12 +2035,12 @@
     event->name = "f2fs_get_data_block";
     event->group = "f2fs";
     event->proto_field_id = 246;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("iblock", 3, kProtoUint64));
-    event->fields.push_back(MakeField("bh_start", 4, kProtoUint64));
-    event->fields.push_back(MakeField("bh_size", 5, kProtoUint64));
-    event->fields.push_back(MakeField("ret", 6, kProtoInt32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("iblock", 3, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("bh_start", 4, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("bh_size", 5, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ret", 6, ProtoSchemaType::kInt32));
   }
 
   {
@@ -1941,16 +2049,18 @@
     event->name = "f2fs_get_victim";
     event->group = "f2fs";
     event->proto_field_id = 247;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("type", 2, kProtoInt32));
-    event->fields.push_back(MakeField("gc_type", 3, kProtoInt32));
-    event->fields.push_back(MakeField("alloc_mode", 4, kProtoInt32));
-    event->fields.push_back(MakeField("gc_mode", 5, kProtoInt32));
-    event->fields.push_back(MakeField("victim", 6, kProtoUint32));
-    event->fields.push_back(MakeField("ofs_unit", 7, kProtoUint32));
-    event->fields.push_back(MakeField("pre_victim", 8, kProtoUint32));
-    event->fields.push_back(MakeField("prefree", 9, kProtoUint32));
-    event->fields.push_back(MakeField("free", 10, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("type", 2, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("gc_type", 3, ProtoSchemaType::kInt32));
+    event->fields.push_back(
+        MakeField("alloc_mode", 4, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("gc_mode", 5, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("victim", 6, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("ofs_unit", 7, ProtoSchemaType::kUint32));
+    event->fields.push_back(
+        MakeField("pre_victim", 8, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("prefree", 9, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("free", 10, ProtoSchemaType::kUint32));
   }
 
   {
@@ -1959,14 +2069,14 @@
     event->name = "f2fs_iget";
     event->group = "f2fs";
     event->proto_field_id = 248;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("pino", 3, kProtoUint64));
-    event->fields.push_back(MakeField("mode", 4, kProtoUint32));
-    event->fields.push_back(MakeField("size", 5, kProtoInt64));
-    event->fields.push_back(MakeField("nlink", 6, kProtoUint32));
-    event->fields.push_back(MakeField("blocks", 7, kProtoUint64));
-    event->fields.push_back(MakeField("advise", 8, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("pino", 3, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("mode", 4, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("size", 5, ProtoSchemaType::kInt64));
+    event->fields.push_back(MakeField("nlink", 6, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("blocks", 7, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("advise", 8, ProtoSchemaType::kUint32));
   }
 
   {
@@ -1975,9 +2085,9 @@
     event->name = "f2fs_iget_exit";
     event->group = "f2fs";
     event->proto_field_id = 249;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("ret", 3, kProtoInt32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ret", 3, ProtoSchemaType::kInt32));
   }
 
   {
@@ -1986,9 +2096,9 @@
     event->name = "f2fs_new_inode";
     event->group = "f2fs";
     event->proto_field_id = 250;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("ret", 3, kProtoInt32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ret", 3, ProtoSchemaType::kInt32));
   }
 
   {
@@ -1997,11 +2107,11 @@
     event->name = "f2fs_readpage";
     event->group = "f2fs";
     event->proto_field_id = 251;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("index", 3, kProtoUint64));
-    event->fields.push_back(MakeField("blkaddr", 4, kProtoUint64));
-    event->fields.push_back(MakeField("type", 5, kProtoInt32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("index", 3, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("blkaddr", 4, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("type", 5, ProtoSchemaType::kInt32));
   }
 
   {
@@ -2010,9 +2120,10 @@
     event->name = "f2fs_reserve_new_block";
     event->group = "f2fs";
     event->proto_field_id = 252;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("nid", 2, kProtoUint32));
-    event->fields.push_back(MakeField("ofs_in_node", 3, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("nid", 2, ProtoSchemaType::kUint32));
+    event->fields.push_back(
+        MakeField("ofs_in_node", 3, ProtoSchemaType::kUint32));
   }
 
   {
@@ -2021,12 +2132,12 @@
     event->name = "f2fs_set_page_dirty";
     event->group = "f2fs";
     event->proto_field_id = 253;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("type", 3, kProtoInt32));
-    event->fields.push_back(MakeField("dir", 4, kProtoInt32));
-    event->fields.push_back(MakeField("index", 5, kProtoUint64));
-    event->fields.push_back(MakeField("dirty", 6, kProtoInt32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("type", 3, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("dir", 4, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("index", 5, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("dirty", 6, ProtoSchemaType::kInt32));
   }
 
   {
@@ -2035,11 +2146,11 @@
     event->name = "f2fs_submit_write_page";
     event->group = "f2fs";
     event->proto_field_id = 254;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("type", 3, kProtoInt32));
-    event->fields.push_back(MakeField("index", 4, kProtoUint64));
-    event->fields.push_back(MakeField("block", 5, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("type", 3, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("index", 4, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("block", 5, ProtoSchemaType::kUint32));
   }
 
   {
@@ -2048,14 +2159,14 @@
     event->name = "f2fs_sync_file_enter";
     event->group = "f2fs";
     event->proto_field_id = 255;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("pino", 3, kProtoUint64));
-    event->fields.push_back(MakeField("mode", 4, kProtoUint32));
-    event->fields.push_back(MakeField("size", 5, kProtoInt64));
-    event->fields.push_back(MakeField("nlink", 6, kProtoUint32));
-    event->fields.push_back(MakeField("blocks", 7, kProtoUint64));
-    event->fields.push_back(MakeField("advise", 8, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("pino", 3, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("mode", 4, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("size", 5, ProtoSchemaType::kInt64));
+    event->fields.push_back(MakeField("nlink", 6, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("blocks", 7, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("advise", 8, ProtoSchemaType::kUint32));
   }
 
   {
@@ -2064,11 +2175,11 @@
     event->name = "f2fs_sync_file_exit";
     event->group = "f2fs";
     event->proto_field_id = 256;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("need_cp", 3, kProtoUint32));
-    event->fields.push_back(MakeField("datasync", 4, kProtoInt32));
-    event->fields.push_back(MakeField("ret", 5, kProtoInt32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("need_cp", 3, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("datasync", 4, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("ret", 5, ProtoSchemaType::kInt32));
   }
 
   {
@@ -2077,9 +2188,9 @@
     event->name = "f2fs_sync_fs";
     event->group = "f2fs";
     event->proto_field_id = 257;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("dirty", 2, kProtoInt32));
-    event->fields.push_back(MakeField("wait", 3, kProtoInt32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("dirty", 2, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("wait", 3, ProtoSchemaType::kInt32));
   }
 
   {
@@ -2088,14 +2199,14 @@
     event->name = "f2fs_truncate";
     event->group = "f2fs";
     event->proto_field_id = 258;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("pino", 3, kProtoUint64));
-    event->fields.push_back(MakeField("mode", 4, kProtoUint32));
-    event->fields.push_back(MakeField("size", 5, kProtoInt64));
-    event->fields.push_back(MakeField("nlink", 6, kProtoUint32));
-    event->fields.push_back(MakeField("blocks", 7, kProtoUint64));
-    event->fields.push_back(MakeField("advise", 8, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("pino", 3, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("mode", 4, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("size", 5, ProtoSchemaType::kInt64));
+    event->fields.push_back(MakeField("nlink", 6, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("blocks", 7, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("advise", 8, ProtoSchemaType::kUint32));
   }
 
   {
@@ -2104,11 +2215,11 @@
     event->name = "f2fs_truncate_blocks_enter";
     event->group = "f2fs";
     event->proto_field_id = 259;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("size", 3, kProtoInt64));
-    event->fields.push_back(MakeField("blocks", 4, kProtoUint64));
-    event->fields.push_back(MakeField("from", 5, kProtoUint64));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("size", 3, ProtoSchemaType::kInt64));
+    event->fields.push_back(MakeField("blocks", 4, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("from", 5, ProtoSchemaType::kUint64));
   }
 
   {
@@ -2117,9 +2228,9 @@
     event->name = "f2fs_truncate_blocks_exit";
     event->group = "f2fs";
     event->proto_field_id = 260;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("ret", 3, kProtoInt32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ret", 3, ProtoSchemaType::kInt32));
   }
 
   {
@@ -2128,11 +2239,11 @@
     event->name = "f2fs_truncate_data_blocks_range";
     event->group = "f2fs";
     event->proto_field_id = 261;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("nid", 3, kProtoUint32));
-    event->fields.push_back(MakeField("ofs", 4, kProtoUint32));
-    event->fields.push_back(MakeField("free", 5, kProtoInt32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("nid", 3, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("ofs", 4, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("free", 5, ProtoSchemaType::kInt32));
   }
 
   {
@@ -2141,11 +2252,11 @@
     event->name = "f2fs_truncate_inode_blocks_enter";
     event->group = "f2fs";
     event->proto_field_id = 262;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("size", 3, kProtoInt64));
-    event->fields.push_back(MakeField("blocks", 4, kProtoUint64));
-    event->fields.push_back(MakeField("from", 5, kProtoUint64));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("size", 3, ProtoSchemaType::kInt64));
+    event->fields.push_back(MakeField("blocks", 4, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("from", 5, ProtoSchemaType::kUint64));
   }
 
   {
@@ -2154,9 +2265,9 @@
     event->name = "f2fs_truncate_inode_blocks_exit";
     event->group = "f2fs";
     event->proto_field_id = 263;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("ret", 3, kProtoInt32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ret", 3, ProtoSchemaType::kInt32));
   }
 
   {
@@ -2165,10 +2276,10 @@
     event->name = "f2fs_truncate_node";
     event->group = "f2fs";
     event->proto_field_id = 264;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("nid", 3, kProtoUint32));
-    event->fields.push_back(MakeField("blk_addr", 4, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("nid", 3, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("blk_addr", 4, ProtoSchemaType::kUint32));
   }
 
   {
@@ -2177,10 +2288,10 @@
     event->name = "f2fs_truncate_nodes_enter";
     event->group = "f2fs";
     event->proto_field_id = 265;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("nid", 3, kProtoUint32));
-    event->fields.push_back(MakeField("blk_addr", 4, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("nid", 3, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("blk_addr", 4, ProtoSchemaType::kUint32));
   }
 
   {
@@ -2189,9 +2300,9 @@
     event->name = "f2fs_truncate_nodes_exit";
     event->group = "f2fs";
     event->proto_field_id = 266;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("ret", 3, kProtoInt32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ret", 3, ProtoSchemaType::kInt32));
   }
 
   {
@@ -2200,11 +2311,11 @@
     event->name = "f2fs_truncate_partial_nodes";
     event->group = "f2fs";
     event->proto_field_id = 267;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("nid", 3, kProtoUint32));
-    event->fields.push_back(MakeField("depth", 4, kProtoInt32));
-    event->fields.push_back(MakeField("err", 5, kProtoInt32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("nid", 3, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("depth", 4, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("err", 5, ProtoSchemaType::kInt32));
   }
 
   {
@@ -2213,11 +2324,11 @@
     event->name = "f2fs_unlink_enter";
     event->group = "f2fs";
     event->proto_field_id = 268;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("size", 3, kProtoInt64));
-    event->fields.push_back(MakeField("blocks", 4, kProtoUint64));
-    event->fields.push_back(MakeField("name", 5, kProtoString));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("size", 3, ProtoSchemaType::kInt64));
+    event->fields.push_back(MakeField("blocks", 4, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("name", 5, ProtoSchemaType::kString));
   }
 
   {
@@ -2226,9 +2337,9 @@
     event->name = "f2fs_unlink_exit";
     event->group = "f2fs";
     event->proto_field_id = 269;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("ret", 3, kProtoInt32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ret", 3, ProtoSchemaType::kInt32));
   }
 
   {
@@ -2237,12 +2348,12 @@
     event->name = "f2fs_vm_page_mkwrite";
     event->group = "f2fs";
     event->proto_field_id = 270;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("type", 3, kProtoInt32));
-    event->fields.push_back(MakeField("dir", 4, kProtoInt32));
-    event->fields.push_back(MakeField("index", 5, kProtoUint64));
-    event->fields.push_back(MakeField("dirty", 6, kProtoInt32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("type", 3, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("dir", 4, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("index", 5, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("dirty", 6, ProtoSchemaType::kInt32));
   }
 
   {
@@ -2251,11 +2362,11 @@
     event->name = "f2fs_write_begin";
     event->group = "f2fs";
     event->proto_field_id = 271;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("pos", 3, kProtoInt64));
-    event->fields.push_back(MakeField("len", 4, kProtoUint32));
-    event->fields.push_back(MakeField("flags", 5, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("pos", 3, ProtoSchemaType::kInt64));
+    event->fields.push_back(MakeField("len", 4, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("flags", 5, ProtoSchemaType::kUint32));
   }
 
   {
@@ -2264,9 +2375,10 @@
     event->name = "f2fs_write_checkpoint";
     event->group = "f2fs";
     event->proto_field_id = 272;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("is_umount", 2, kProtoUint32));
-    event->fields.push_back(MakeField("msg", 3, kProtoString));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(
+        MakeField("is_umount", 2, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("msg", 3, ProtoSchemaType::kString));
   }
 
   {
@@ -2275,11 +2387,11 @@
     event->name = "f2fs_write_end";
     event->group = "f2fs";
     event->proto_field_id = 273;
-    event->fields.push_back(MakeField("dev", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("pos", 3, kProtoInt64));
-    event->fields.push_back(MakeField("len", 4, kProtoUint32));
-    event->fields.push_back(MakeField("copied", 5, kProtoUint32));
+    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("pos", 3, ProtoSchemaType::kInt64));
+    event->fields.push_back(MakeField("len", 4, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("copied", 5, ProtoSchemaType::kUint32));
   }
 
   {
@@ -2288,10 +2400,10 @@
     event->name = "fence_init";
     event->group = "fence";
     event->proto_field_id = 316;
-    event->fields.push_back(MakeField("context", 1, kProtoUint32));
-    event->fields.push_back(MakeField("driver", 2, kProtoString));
-    event->fields.push_back(MakeField("seqno", 3, kProtoUint32));
-    event->fields.push_back(MakeField("timeline", 4, kProtoString));
+    event->fields.push_back(MakeField("context", 1, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("driver", 2, ProtoSchemaType::kString));
+    event->fields.push_back(MakeField("seqno", 3, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("timeline", 4, ProtoSchemaType::kString));
   }
 
   {
@@ -2300,10 +2412,10 @@
     event->name = "fence_destroy";
     event->group = "fence";
     event->proto_field_id = 317;
-    event->fields.push_back(MakeField("context", 1, kProtoUint32));
-    event->fields.push_back(MakeField("driver", 2, kProtoString));
-    event->fields.push_back(MakeField("seqno", 3, kProtoUint32));
-    event->fields.push_back(MakeField("timeline", 4, kProtoString));
+    event->fields.push_back(MakeField("context", 1, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("driver", 2, ProtoSchemaType::kString));
+    event->fields.push_back(MakeField("seqno", 3, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("timeline", 4, ProtoSchemaType::kString));
   }
 
   {
@@ -2312,10 +2424,10 @@
     event->name = "fence_enable_signal";
     event->group = "fence";
     event->proto_field_id = 318;
-    event->fields.push_back(MakeField("context", 1, kProtoUint32));
-    event->fields.push_back(MakeField("driver", 2, kProtoString));
-    event->fields.push_back(MakeField("seqno", 3, kProtoUint32));
-    event->fields.push_back(MakeField("timeline", 4, kProtoString));
+    event->fields.push_back(MakeField("context", 1, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("driver", 2, ProtoSchemaType::kString));
+    event->fields.push_back(MakeField("seqno", 3, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("timeline", 4, ProtoSchemaType::kString));
   }
 
   {
@@ -2324,10 +2436,10 @@
     event->name = "fence_signaled";
     event->group = "fence";
     event->proto_field_id = 319;
-    event->fields.push_back(MakeField("context", 1, kProtoUint32));
-    event->fields.push_back(MakeField("driver", 2, kProtoString));
-    event->fields.push_back(MakeField("seqno", 3, kProtoUint32));
-    event->fields.push_back(MakeField("timeline", 4, kProtoString));
+    event->fields.push_back(MakeField("context", 1, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("driver", 2, ProtoSchemaType::kString));
+    event->fields.push_back(MakeField("seqno", 3, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("timeline", 4, ProtoSchemaType::kString));
   }
 
   {
@@ -2336,11 +2448,11 @@
     event->name = "mm_filemap_add_to_page_cache";
     event->group = "filemap";
     event->proto_field_id = 97;
-    event->fields.push_back(MakeField("pfn", 1, kProtoUint64));
-    event->fields.push_back(MakeField("i_ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("index", 3, kProtoUint64));
-    event->fields.push_back(MakeField("s_dev", 4, kProtoUint64));
-    event->fields.push_back(MakeField("page", 5, kProtoUint64));
+    event->fields.push_back(MakeField("pfn", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("i_ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("index", 3, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("s_dev", 4, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("page", 5, ProtoSchemaType::kUint64));
   }
 
   {
@@ -2349,11 +2461,11 @@
     event->name = "mm_filemap_delete_from_page_cache";
     event->group = "filemap";
     event->proto_field_id = 98;
-    event->fields.push_back(MakeField("pfn", 1, kProtoUint64));
-    event->fields.push_back(MakeField("i_ino", 2, kProtoUint64));
-    event->fields.push_back(MakeField("index", 3, kProtoUint64));
-    event->fields.push_back(MakeField("s_dev", 4, kProtoUint64));
-    event->fields.push_back(MakeField("page", 5, kProtoUint64));
+    event->fields.push_back(MakeField("pfn", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("i_ino", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("index", 3, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("s_dev", 4, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("page", 5, ProtoSchemaType::kUint64));
   }
 
   {
@@ -2362,8 +2474,8 @@
     event->name = "print";
     event->group = "ftrace";
     event->proto_field_id = 3;
-    event->fields.push_back(MakeField("ip", 1, kProtoUint64));
-    event->fields.push_back(MakeField("buf", 2, kProtoString));
+    event->fields.push_back(MakeField("ip", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("buf", 2, ProtoSchemaType::kString));
   }
 
   {
@@ -2372,11 +2484,12 @@
     event->name = "i2c_read";
     event->group = "i2c";
     event->proto_field_id = 27;
-    event->fields.push_back(MakeField("adapter_nr", 1, kProtoInt32));
-    event->fields.push_back(MakeField("msg_nr", 2, kProtoUint32));
-    event->fields.push_back(MakeField("addr", 3, kProtoUint32));
-    event->fields.push_back(MakeField("flags", 4, kProtoUint32));
-    event->fields.push_back(MakeField("len", 5, kProtoUint32));
+    event->fields.push_back(
+        MakeField("adapter_nr", 1, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("msg_nr", 2, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("addr", 3, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("flags", 4, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("len", 5, ProtoSchemaType::kUint32));
   }
 
   {
@@ -2385,12 +2498,13 @@
     event->name = "i2c_write";
     event->group = "i2c";
     event->proto_field_id = 28;
-    event->fields.push_back(MakeField("adapter_nr", 1, kProtoInt32));
-    event->fields.push_back(MakeField("msg_nr", 2, kProtoUint32));
-    event->fields.push_back(MakeField("addr", 3, kProtoUint32));
-    event->fields.push_back(MakeField("flags", 4, kProtoUint32));
-    event->fields.push_back(MakeField("len", 5, kProtoUint32));
-    event->fields.push_back(MakeField("buf", 6, kProtoUint32));
+    event->fields.push_back(
+        MakeField("adapter_nr", 1, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("msg_nr", 2, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("addr", 3, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("flags", 4, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("len", 5, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("buf", 6, ProtoSchemaType::kUint32));
   }
 
   {
@@ -2399,9 +2513,10 @@
     event->name = "i2c_result";
     event->group = "i2c";
     event->proto_field_id = 29;
-    event->fields.push_back(MakeField("adapter_nr", 1, kProtoInt32));
-    event->fields.push_back(MakeField("nr_msgs", 2, kProtoUint32));
-    event->fields.push_back(MakeField("ret", 3, kProtoInt32));
+    event->fields.push_back(
+        MakeField("adapter_nr", 1, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("nr_msgs", 2, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("ret", 3, ProtoSchemaType::kInt32));
   }
 
   {
@@ -2410,12 +2525,13 @@
     event->name = "i2c_reply";
     event->group = "i2c";
     event->proto_field_id = 30;
-    event->fields.push_back(MakeField("adapter_nr", 1, kProtoInt32));
-    event->fields.push_back(MakeField("msg_nr", 2, kProtoUint32));
-    event->fields.push_back(MakeField("addr", 3, kProtoUint32));
-    event->fields.push_back(MakeField("flags", 4, kProtoUint32));
-    event->fields.push_back(MakeField("len", 5, kProtoUint32));
-    event->fields.push_back(MakeField("buf", 6, kProtoUint32));
+    event->fields.push_back(
+        MakeField("adapter_nr", 1, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("msg_nr", 2, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("addr", 3, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("flags", 4, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("len", 5, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("buf", 6, ProtoSchemaType::kUint32));
   }
 
   {
@@ -2424,11 +2540,12 @@
     event->name = "smbus_read";
     event->group = "i2c";
     event->proto_field_id = 31;
-    event->fields.push_back(MakeField("adapter_nr", 1, kProtoInt32));
-    event->fields.push_back(MakeField("flags", 2, kProtoUint32));
-    event->fields.push_back(MakeField("addr", 3, kProtoUint32));
-    event->fields.push_back(MakeField("command", 4, kProtoUint32));
-    event->fields.push_back(MakeField("protocol", 5, kProtoUint32));
+    event->fields.push_back(
+        MakeField("adapter_nr", 1, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("flags", 2, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("addr", 3, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("command", 4, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("protocol", 5, ProtoSchemaType::kUint32));
   }
 
   {
@@ -2437,12 +2554,13 @@
     event->name = "smbus_write";
     event->group = "i2c";
     event->proto_field_id = 32;
-    event->fields.push_back(MakeField("adapter_nr", 1, kProtoInt32));
-    event->fields.push_back(MakeField("addr", 2, kProtoUint32));
-    event->fields.push_back(MakeField("flags", 3, kProtoUint32));
-    event->fields.push_back(MakeField("command", 4, kProtoUint32));
-    event->fields.push_back(MakeField("len", 5, kProtoUint32));
-    event->fields.push_back(MakeField("protocol", 6, kProtoUint32));
+    event->fields.push_back(
+        MakeField("adapter_nr", 1, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("addr", 2, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("flags", 3, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("command", 4, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("len", 5, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("protocol", 6, ProtoSchemaType::kUint32));
   }
 
   {
@@ -2451,13 +2569,15 @@
     event->name = "smbus_result";
     event->group = "i2c";
     event->proto_field_id = 33;
-    event->fields.push_back(MakeField("adapter_nr", 1, kProtoInt32));
-    event->fields.push_back(MakeField("addr", 2, kProtoUint32));
-    event->fields.push_back(MakeField("flags", 3, kProtoUint32));
-    event->fields.push_back(MakeField("read_write", 4, kProtoUint32));
-    event->fields.push_back(MakeField("command", 5, kProtoUint32));
-    event->fields.push_back(MakeField("res", 6, kProtoInt32));
-    event->fields.push_back(MakeField("protocol", 7, kProtoUint32));
+    event->fields.push_back(
+        MakeField("adapter_nr", 1, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("addr", 2, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("flags", 3, ProtoSchemaType::kUint32));
+    event->fields.push_back(
+        MakeField("read_write", 4, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("command", 5, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("res", 6, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("protocol", 7, ProtoSchemaType::kUint32));
   }
 
   {
@@ -2466,12 +2586,13 @@
     event->name = "smbus_reply";
     event->group = "i2c";
     event->proto_field_id = 34;
-    event->fields.push_back(MakeField("adapter_nr", 1, kProtoInt32));
-    event->fields.push_back(MakeField("addr", 2, kProtoUint32));
-    event->fields.push_back(MakeField("flags", 3, kProtoUint32));
-    event->fields.push_back(MakeField("command", 4, kProtoUint32));
-    event->fields.push_back(MakeField("len", 5, kProtoUint32));
-    event->fields.push_back(MakeField("protocol", 6, kProtoUint32));
+    event->fields.push_back(
+        MakeField("adapter_nr", 1, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("addr", 2, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("flags", 3, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("command", 4, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("len", 5, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("protocol", 6, ProtoSchemaType::kUint32));
   }
 
   {
@@ -2480,7 +2601,7 @@
     event->name = "ipi_entry";
     event->group = "ipi";
     event->proto_field_id = 21;
-    event->fields.push_back(MakeField("reason", 1, kProtoString));
+    event->fields.push_back(MakeField("reason", 1, ProtoSchemaType::kString));
   }
 
   {
@@ -2489,7 +2610,7 @@
     event->name = "ipi_exit";
     event->group = "ipi";
     event->proto_field_id = 22;
-    event->fields.push_back(MakeField("reason", 1, kProtoString));
+    event->fields.push_back(MakeField("reason", 1, ProtoSchemaType::kString));
   }
 
   {
@@ -2498,8 +2619,9 @@
     event->name = "ipi_raise";
     event->group = "ipi";
     event->proto_field_id = 23;
-    event->fields.push_back(MakeField("target_cpus", 1, kProtoUint32));
-    event->fields.push_back(MakeField("reason", 2, kProtoString));
+    event->fields.push_back(
+        MakeField("target_cpus", 1, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("reason", 2, ProtoSchemaType::kString));
   }
 
   {
@@ -2508,7 +2630,7 @@
     event->name = "softirq_entry";
     event->group = "irq";
     event->proto_field_id = 24;
-    event->fields.push_back(MakeField("vec", 1, kProtoUint32));
+    event->fields.push_back(MakeField("vec", 1, ProtoSchemaType::kUint32));
   }
 
   {
@@ -2517,7 +2639,7 @@
     event->name = "softirq_exit";
     event->group = "irq";
     event->proto_field_id = 25;
-    event->fields.push_back(MakeField("vec", 1, kProtoUint32));
+    event->fields.push_back(MakeField("vec", 1, ProtoSchemaType::kUint32));
   }
 
   {
@@ -2526,7 +2648,7 @@
     event->name = "softirq_raise";
     event->group = "irq";
     event->proto_field_id = 26;
-    event->fields.push_back(MakeField("vec", 1, kProtoUint32));
+    event->fields.push_back(MakeField("vec", 1, ProtoSchemaType::kUint32));
   }
 
   {
@@ -2535,9 +2657,9 @@
     event->name = "irq_handler_entry";
     event->group = "irq";
     event->proto_field_id = 36;
-    event->fields.push_back(MakeField("irq", 1, kProtoInt32));
-    event->fields.push_back(MakeField("name", 2, kProtoString));
-    event->fields.push_back(MakeField("handler", 3, kProtoUint32));
+    event->fields.push_back(MakeField("irq", 1, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("name", 2, ProtoSchemaType::kString));
+    event->fields.push_back(MakeField("handler", 3, ProtoSchemaType::kUint32));
   }
 
   {
@@ -2546,8 +2668,8 @@
     event->name = "irq_handler_exit";
     event->group = "irq";
     event->proto_field_id = 37;
-    event->fields.push_back(MakeField("irq", 1, kProtoInt32));
-    event->fields.push_back(MakeField("ret", 2, kProtoInt32));
+    event->fields.push_back(MakeField("irq", 1, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("ret", 2, ProtoSchemaType::kInt32));
   }
 
   {
@@ -2556,8 +2678,9 @@
     event->name = "alloc_pages_iommu_end";
     event->group = "kmem";
     event->proto_field_id = 274;
-    event->fields.push_back(MakeField("gfp_flags", 1, kProtoUint32));
-    event->fields.push_back(MakeField("order", 2, kProtoUint32));
+    event->fields.push_back(
+        MakeField("gfp_flags", 1, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("order", 2, ProtoSchemaType::kUint32));
   }
 
   {
@@ -2566,8 +2689,9 @@
     event->name = "alloc_pages_iommu_fail";
     event->group = "kmem";
     event->proto_field_id = 275;
-    event->fields.push_back(MakeField("gfp_flags", 1, kProtoUint32));
-    event->fields.push_back(MakeField("order", 2, kProtoUint32));
+    event->fields.push_back(
+        MakeField("gfp_flags", 1, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("order", 2, ProtoSchemaType::kUint32));
   }
 
   {
@@ -2576,8 +2700,9 @@
     event->name = "alloc_pages_iommu_start";
     event->group = "kmem";
     event->proto_field_id = 276;
-    event->fields.push_back(MakeField("gfp_flags", 1, kProtoUint32));
-    event->fields.push_back(MakeField("order", 2, kProtoUint32));
+    event->fields.push_back(
+        MakeField("gfp_flags", 1, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("order", 2, ProtoSchemaType::kUint32));
   }
 
   {
@@ -2586,8 +2711,9 @@
     event->name = "alloc_pages_sys_end";
     event->group = "kmem";
     event->proto_field_id = 277;
-    event->fields.push_back(MakeField("gfp_flags", 1, kProtoUint32));
-    event->fields.push_back(MakeField("order", 2, kProtoUint32));
+    event->fields.push_back(
+        MakeField("gfp_flags", 1, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("order", 2, ProtoSchemaType::kUint32));
   }
 
   {
@@ -2596,8 +2722,9 @@
     event->name = "alloc_pages_sys_fail";
     event->group = "kmem";
     event->proto_field_id = 278;
-    event->fields.push_back(MakeField("gfp_flags", 1, kProtoUint32));
-    event->fields.push_back(MakeField("order", 2, kProtoUint32));
+    event->fields.push_back(
+        MakeField("gfp_flags", 1, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("order", 2, ProtoSchemaType::kUint32));
   }
 
   {
@@ -2606,8 +2733,9 @@
     event->name = "alloc_pages_sys_start";
     event->group = "kmem";
     event->proto_field_id = 279;
-    event->fields.push_back(MakeField("gfp_flags", 1, kProtoUint32));
-    event->fields.push_back(MakeField("order", 2, kProtoUint32));
+    event->fields.push_back(
+        MakeField("gfp_flags", 1, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("order", 2, ProtoSchemaType::kUint32));
   }
 
   {
@@ -2616,7 +2744,7 @@
     event->name = "dma_alloc_contiguous_retry";
     event->group = "kmem";
     event->proto_field_id = 280;
-    event->fields.push_back(MakeField("tries", 1, kProtoInt32));
+    event->fields.push_back(MakeField("tries", 1, ProtoSchemaType::kInt32));
   }
 
   {
@@ -2625,10 +2753,11 @@
     event->name = "iommu_map_range";
     event->group = "kmem";
     event->proto_field_id = 281;
-    event->fields.push_back(MakeField("chunk_size", 1, kProtoUint64));
-    event->fields.push_back(MakeField("len", 2, kProtoUint64));
-    event->fields.push_back(MakeField("pa", 3, kProtoUint64));
-    event->fields.push_back(MakeField("va", 4, kProtoUint64));
+    event->fields.push_back(
+        MakeField("chunk_size", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("len", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("pa", 3, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("va", 4, ProtoSchemaType::kUint64));
   }
 
   {
@@ -2637,11 +2766,11 @@
     event->name = "iommu_sec_ptbl_map_range_end";
     event->group = "kmem";
     event->proto_field_id = 282;
-    event->fields.push_back(MakeField("len", 1, kProtoUint64));
-    event->fields.push_back(MakeField("num", 2, kProtoInt32));
-    event->fields.push_back(MakeField("pa", 3, kProtoUint32));
-    event->fields.push_back(MakeField("sec_id", 4, kProtoInt32));
-    event->fields.push_back(MakeField("va", 5, kProtoUint64));
+    event->fields.push_back(MakeField("len", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("num", 2, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("pa", 3, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("sec_id", 4, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("va", 5, ProtoSchemaType::kUint64));
   }
 
   {
@@ -2650,11 +2779,11 @@
     event->name = "iommu_sec_ptbl_map_range_start";
     event->group = "kmem";
     event->proto_field_id = 283;
-    event->fields.push_back(MakeField("len", 1, kProtoUint64));
-    event->fields.push_back(MakeField("num", 2, kProtoInt32));
-    event->fields.push_back(MakeField("pa", 3, kProtoUint32));
-    event->fields.push_back(MakeField("sec_id", 4, kProtoInt32));
-    event->fields.push_back(MakeField("va", 5, kProtoUint64));
+    event->fields.push_back(MakeField("len", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("num", 2, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("pa", 3, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("sec_id", 4, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("va", 5, ProtoSchemaType::kUint64));
   }
 
   {
@@ -2663,11 +2792,13 @@
     event->name = "ion_alloc_buffer_end";
     event->group = "kmem";
     event->proto_field_id = 284;
-    event->fields.push_back(MakeField("client_name", 1, kProtoString));
-    event->fields.push_back(MakeField("flags", 2, kProtoUint32));
-    event->fields.push_back(MakeField("heap_name", 3, kProtoString));
-    event->fields.push_back(MakeField("len", 4, kProtoUint64));
-    event->fields.push_back(MakeField("mask", 5, kProtoUint32));
+    event->fields.push_back(
+        MakeField("client_name", 1, ProtoSchemaType::kString));
+    event->fields.push_back(MakeField("flags", 2, ProtoSchemaType::kUint32));
+    event->fields.push_back(
+        MakeField("heap_name", 3, ProtoSchemaType::kString));
+    event->fields.push_back(MakeField("len", 4, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("mask", 5, ProtoSchemaType::kUint32));
   }
 
   {
@@ -2676,12 +2807,14 @@
     event->name = "ion_alloc_buffer_fail";
     event->group = "kmem";
     event->proto_field_id = 285;
-    event->fields.push_back(MakeField("client_name", 1, kProtoString));
-    event->fields.push_back(MakeField("error", 2, kProtoInt64));
-    event->fields.push_back(MakeField("flags", 3, kProtoUint32));
-    event->fields.push_back(MakeField("heap_name", 4, kProtoString));
-    event->fields.push_back(MakeField("len", 5, kProtoUint64));
-    event->fields.push_back(MakeField("mask", 6, kProtoUint32));
+    event->fields.push_back(
+        MakeField("client_name", 1, ProtoSchemaType::kString));
+    event->fields.push_back(MakeField("error", 2, ProtoSchemaType::kInt64));
+    event->fields.push_back(MakeField("flags", 3, ProtoSchemaType::kUint32));
+    event->fields.push_back(
+        MakeField("heap_name", 4, ProtoSchemaType::kString));
+    event->fields.push_back(MakeField("len", 5, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("mask", 6, ProtoSchemaType::kUint32));
   }
 
   {
@@ -2690,12 +2823,14 @@
     event->name = "ion_alloc_buffer_fallback";
     event->group = "kmem";
     event->proto_field_id = 286;
-    event->fields.push_back(MakeField("client_name", 1, kProtoString));
-    event->fields.push_back(MakeField("error", 2, kProtoInt64));
-    event->fields.push_back(MakeField("flags", 3, kProtoUint32));
-    event->fields.push_back(MakeField("heap_name", 4, kProtoString));
-    event->fields.push_back(MakeField("len", 5, kProtoUint64));
-    event->fields.push_back(MakeField("mask", 6, kProtoUint32));
+    event->fields.push_back(
+        MakeField("client_name", 1, ProtoSchemaType::kString));
+    event->fields.push_back(MakeField("error", 2, ProtoSchemaType::kInt64));
+    event->fields.push_back(MakeField("flags", 3, ProtoSchemaType::kUint32));
+    event->fields.push_back(
+        MakeField("heap_name", 4, ProtoSchemaType::kString));
+    event->fields.push_back(MakeField("len", 5, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("mask", 6, ProtoSchemaType::kUint32));
   }
 
   {
@@ -2704,11 +2839,13 @@
     event->name = "ion_alloc_buffer_start";
     event->group = "kmem";
     event->proto_field_id = 287;
-    event->fields.push_back(MakeField("client_name", 1, kProtoString));
-    event->fields.push_back(MakeField("flags", 2, kProtoUint32));
-    event->fields.push_back(MakeField("heap_name", 3, kProtoString));
-    event->fields.push_back(MakeField("len", 4, kProtoUint64));
-    event->fields.push_back(MakeField("mask", 5, kProtoUint32));
+    event->fields.push_back(
+        MakeField("client_name", 1, ProtoSchemaType::kString));
+    event->fields.push_back(MakeField("flags", 2, ProtoSchemaType::kUint32));
+    event->fields.push_back(
+        MakeField("heap_name", 3, ProtoSchemaType::kString));
+    event->fields.push_back(MakeField("len", 4, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("mask", 5, ProtoSchemaType::kUint32));
   }
 
   {
@@ -2717,7 +2854,7 @@
     event->name = "ion_cp_alloc_retry";
     event->group = "kmem";
     event->proto_field_id = 288;
-    event->fields.push_back(MakeField("tries", 1, kProtoInt32));
+    event->fields.push_back(MakeField("tries", 1, ProtoSchemaType::kInt32));
   }
 
   {
@@ -2726,10 +2863,11 @@
     event->name = "ion_cp_secure_buffer_end";
     event->group = "kmem";
     event->proto_field_id = 289;
-    event->fields.push_back(MakeField("align", 1, kProtoUint64));
-    event->fields.push_back(MakeField("flags", 2, kProtoUint64));
-    event->fields.push_back(MakeField("heap_name", 3, kProtoString));
-    event->fields.push_back(MakeField("len", 4, kProtoUint64));
+    event->fields.push_back(MakeField("align", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("flags", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(
+        MakeField("heap_name", 3, ProtoSchemaType::kString));
+    event->fields.push_back(MakeField("len", 4, ProtoSchemaType::kUint64));
   }
 
   {
@@ -2738,10 +2876,11 @@
     event->name = "ion_cp_secure_buffer_start";
     event->group = "kmem";
     event->proto_field_id = 290;
-    event->fields.push_back(MakeField("align", 1, kProtoUint64));
-    event->fields.push_back(MakeField("flags", 2, kProtoUint64));
-    event->fields.push_back(MakeField("heap_name", 3, kProtoString));
-    event->fields.push_back(MakeField("len", 4, kProtoUint64));
+    event->fields.push_back(MakeField("align", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("flags", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(
+        MakeField("heap_name", 3, ProtoSchemaType::kString));
+    event->fields.push_back(MakeField("len", 4, ProtoSchemaType::kUint64));
   }
 
   {
@@ -2750,7 +2889,7 @@
     event->name = "ion_prefetching";
     event->group = "kmem";
     event->proto_field_id = 291;
-    event->fields.push_back(MakeField("len", 1, kProtoUint64));
+    event->fields.push_back(MakeField("len", 1, ProtoSchemaType::kUint64));
   }
 
   {
@@ -2759,9 +2898,11 @@
     event->name = "ion_secure_cma_add_to_pool_end";
     event->group = "kmem";
     event->proto_field_id = 292;
-    event->fields.push_back(MakeField("is_prefetch", 1, kProtoUint32));
-    event->fields.push_back(MakeField("len", 2, kProtoUint64));
-    event->fields.push_back(MakeField("pool_total", 3, kProtoInt32));
+    event->fields.push_back(
+        MakeField("is_prefetch", 1, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("len", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(
+        MakeField("pool_total", 3, ProtoSchemaType::kInt32));
   }
 
   {
@@ -2770,9 +2911,11 @@
     event->name = "ion_secure_cma_add_to_pool_start";
     event->group = "kmem";
     event->proto_field_id = 293;
-    event->fields.push_back(MakeField("is_prefetch", 1, kProtoUint32));
-    event->fields.push_back(MakeField("len", 2, kProtoUint64));
-    event->fields.push_back(MakeField("pool_total", 3, kProtoInt32));
+    event->fields.push_back(
+        MakeField("is_prefetch", 1, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("len", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(
+        MakeField("pool_total", 3, ProtoSchemaType::kInt32));
   }
 
   {
@@ -2781,10 +2924,11 @@
     event->name = "ion_secure_cma_allocate_end";
     event->group = "kmem";
     event->proto_field_id = 294;
-    event->fields.push_back(MakeField("align", 1, kProtoUint64));
-    event->fields.push_back(MakeField("flags", 2, kProtoUint64));
-    event->fields.push_back(MakeField("heap_name", 3, kProtoString));
-    event->fields.push_back(MakeField("len", 4, kProtoUint64));
+    event->fields.push_back(MakeField("align", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("flags", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(
+        MakeField("heap_name", 3, ProtoSchemaType::kString));
+    event->fields.push_back(MakeField("len", 4, ProtoSchemaType::kUint64));
   }
 
   {
@@ -2793,10 +2937,11 @@
     event->name = "ion_secure_cma_allocate_start";
     event->group = "kmem";
     event->proto_field_id = 295;
-    event->fields.push_back(MakeField("align", 1, kProtoUint64));
-    event->fields.push_back(MakeField("flags", 2, kProtoUint64));
-    event->fields.push_back(MakeField("heap_name", 3, kProtoString));
-    event->fields.push_back(MakeField("len", 4, kProtoUint64));
+    event->fields.push_back(MakeField("align", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("flags", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(
+        MakeField("heap_name", 3, ProtoSchemaType::kString));
+    event->fields.push_back(MakeField("len", 4, ProtoSchemaType::kUint64));
   }
 
   {
@@ -2805,8 +2950,10 @@
     event->name = "ion_secure_cma_shrink_pool_end";
     event->group = "kmem";
     event->proto_field_id = 296;
-    event->fields.push_back(MakeField("drained_size", 1, kProtoUint64));
-    event->fields.push_back(MakeField("skipped_size", 2, kProtoUint64));
+    event->fields.push_back(
+        MakeField("drained_size", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(
+        MakeField("skipped_size", 2, ProtoSchemaType::kUint64));
   }
 
   {
@@ -2815,8 +2962,10 @@
     event->name = "ion_secure_cma_shrink_pool_start";
     event->group = "kmem";
     event->proto_field_id = 297;
-    event->fields.push_back(MakeField("drained_size", 1, kProtoUint64));
-    event->fields.push_back(MakeField("skipped_size", 2, kProtoUint64));
+    event->fields.push_back(
+        MakeField("drained_size", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(
+        MakeField("skipped_size", 2, ProtoSchemaType::kUint64));
   }
 
   {
@@ -2825,8 +2974,9 @@
     event->name = "kfree";
     event->group = "kmem";
     event->proto_field_id = 298;
-    event->fields.push_back(MakeField("call_site", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ptr", 2, kProtoUint64));
+    event->fields.push_back(
+        MakeField("call_site", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ptr", 2, ProtoSchemaType::kUint64));
   }
 
   {
@@ -2835,11 +2985,15 @@
     event->name = "kmalloc";
     event->group = "kmem";
     event->proto_field_id = 299;
-    event->fields.push_back(MakeField("bytes_alloc", 1, kProtoUint64));
-    event->fields.push_back(MakeField("bytes_req", 2, kProtoUint64));
-    event->fields.push_back(MakeField("call_site", 3, kProtoUint64));
-    event->fields.push_back(MakeField("gfp_flags", 4, kProtoUint32));
-    event->fields.push_back(MakeField("ptr", 5, kProtoUint64));
+    event->fields.push_back(
+        MakeField("bytes_alloc", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(
+        MakeField("bytes_req", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(
+        MakeField("call_site", 3, ProtoSchemaType::kUint64));
+    event->fields.push_back(
+        MakeField("gfp_flags", 4, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("ptr", 5, ProtoSchemaType::kUint64));
   }
 
   {
@@ -2848,12 +3002,16 @@
     event->name = "kmalloc_node";
     event->group = "kmem";
     event->proto_field_id = 300;
-    event->fields.push_back(MakeField("bytes_alloc", 1, kProtoUint64));
-    event->fields.push_back(MakeField("bytes_req", 2, kProtoUint64));
-    event->fields.push_back(MakeField("call_site", 3, kProtoUint64));
-    event->fields.push_back(MakeField("gfp_flags", 4, kProtoUint32));
-    event->fields.push_back(MakeField("node", 5, kProtoInt32));
-    event->fields.push_back(MakeField("ptr", 6, kProtoUint64));
+    event->fields.push_back(
+        MakeField("bytes_alloc", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(
+        MakeField("bytes_req", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(
+        MakeField("call_site", 3, ProtoSchemaType::kUint64));
+    event->fields.push_back(
+        MakeField("gfp_flags", 4, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("node", 5, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("ptr", 6, ProtoSchemaType::kUint64));
   }
 
   {
@@ -2862,11 +3020,15 @@
     event->name = "kmem_cache_alloc";
     event->group = "kmem";
     event->proto_field_id = 301;
-    event->fields.push_back(MakeField("bytes_alloc", 1, kProtoUint64));
-    event->fields.push_back(MakeField("bytes_req", 2, kProtoUint64));
-    event->fields.push_back(MakeField("call_site", 3, kProtoUint64));
-    event->fields.push_back(MakeField("gfp_flags", 4, kProtoUint32));
-    event->fields.push_back(MakeField("ptr", 5, kProtoUint64));
+    event->fields.push_back(
+        MakeField("bytes_alloc", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(
+        MakeField("bytes_req", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(
+        MakeField("call_site", 3, ProtoSchemaType::kUint64));
+    event->fields.push_back(
+        MakeField("gfp_flags", 4, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("ptr", 5, ProtoSchemaType::kUint64));
   }
 
   {
@@ -2875,12 +3037,16 @@
     event->name = "kmem_cache_alloc_node";
     event->group = "kmem";
     event->proto_field_id = 302;
-    event->fields.push_back(MakeField("bytes_alloc", 1, kProtoUint64));
-    event->fields.push_back(MakeField("bytes_req", 2, kProtoUint64));
-    event->fields.push_back(MakeField("call_site", 3, kProtoUint64));
-    event->fields.push_back(MakeField("gfp_flags", 4, kProtoUint32));
-    event->fields.push_back(MakeField("node", 5, kProtoInt32));
-    event->fields.push_back(MakeField("ptr", 6, kProtoUint64));
+    event->fields.push_back(
+        MakeField("bytes_alloc", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(
+        MakeField("bytes_req", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(
+        MakeField("call_site", 3, ProtoSchemaType::kUint64));
+    event->fields.push_back(
+        MakeField("gfp_flags", 4, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("node", 5, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("ptr", 6, ProtoSchemaType::kUint64));
   }
 
   {
@@ -2889,8 +3055,9 @@
     event->name = "kmem_cache_free";
     event->group = "kmem";
     event->proto_field_id = 303;
-    event->fields.push_back(MakeField("call_site", 1, kProtoUint64));
-    event->fields.push_back(MakeField("ptr", 2, kProtoUint64));
+    event->fields.push_back(
+        MakeField("call_site", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ptr", 2, ProtoSchemaType::kUint64));
   }
 
   {
@@ -2899,7 +3066,7 @@
     event->name = "migrate_pages_end";
     event->group = "kmem";
     event->proto_field_id = 304;
-    event->fields.push_back(MakeField("mode", 1, kProtoInt32));
+    event->fields.push_back(MakeField("mode", 1, ProtoSchemaType::kInt32));
   }
 
   {
@@ -2908,7 +3075,7 @@
     event->name = "migrate_pages_start";
     event->group = "kmem";
     event->proto_field_id = 305;
-    event->fields.push_back(MakeField("mode", 1, kProtoInt32));
+    event->fields.push_back(MakeField("mode", 1, ProtoSchemaType::kInt32));
   }
 
   {
@@ -2917,7 +3084,7 @@
     event->name = "migrate_retry";
     event->group = "kmem";
     event->proto_field_id = 306;
-    event->fields.push_back(MakeField("tries", 1, kProtoInt32));
+    event->fields.push_back(MakeField("tries", 1, ProtoSchemaType::kInt32));
   }
 
   {
@@ -2926,11 +3093,13 @@
     event->name = "mm_page_alloc";
     event->group = "kmem";
     event->proto_field_id = 307;
-    event->fields.push_back(MakeField("gfp_flags", 1, kProtoUint32));
-    event->fields.push_back(MakeField("migratetype", 2, kProtoInt32));
-    event->fields.push_back(MakeField("order", 3, kProtoUint32));
-    event->fields.push_back(MakeField("page", 4, kProtoUint64));
-    event->fields.push_back(MakeField("pfn", 5, kProtoUint64));
+    event->fields.push_back(
+        MakeField("gfp_flags", 1, ProtoSchemaType::kUint32));
+    event->fields.push_back(
+        MakeField("migratetype", 2, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("order", 3, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("page", 4, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("pfn", 5, ProtoSchemaType::kUint64));
   }
 
   {
@@ -2939,13 +3108,18 @@
     event->name = "mm_page_alloc_extfrag";
     event->group = "kmem";
     event->proto_field_id = 308;
-    event->fields.push_back(MakeField("alloc_migratetype", 1, kProtoInt32));
-    event->fields.push_back(MakeField("alloc_order", 2, kProtoInt32));
-    event->fields.push_back(MakeField("fallback_migratetype", 3, kProtoInt32));
-    event->fields.push_back(MakeField("fallback_order", 4, kProtoInt32));
-    event->fields.push_back(MakeField("page", 5, kProtoUint64));
-    event->fields.push_back(MakeField("change_ownership", 6, kProtoInt32));
-    event->fields.push_back(MakeField("pfn", 7, kProtoUint64));
+    event->fields.push_back(
+        MakeField("alloc_migratetype", 1, ProtoSchemaType::kInt32));
+    event->fields.push_back(
+        MakeField("alloc_order", 2, ProtoSchemaType::kInt32));
+    event->fields.push_back(
+        MakeField("fallback_migratetype", 3, ProtoSchemaType::kInt32));
+    event->fields.push_back(
+        MakeField("fallback_order", 4, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("page", 5, ProtoSchemaType::kUint64));
+    event->fields.push_back(
+        MakeField("change_ownership", 6, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("pfn", 7, ProtoSchemaType::kUint64));
   }
 
   {
@@ -2954,10 +3128,11 @@
     event->name = "mm_page_alloc_zone_locked";
     event->group = "kmem";
     event->proto_field_id = 309;
-    event->fields.push_back(MakeField("migratetype", 1, kProtoInt32));
-    event->fields.push_back(MakeField("order", 2, kProtoUint32));
-    event->fields.push_back(MakeField("page", 3, kProtoUint64));
-    event->fields.push_back(MakeField("pfn", 4, kProtoUint64));
+    event->fields.push_back(
+        MakeField("migratetype", 1, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("order", 2, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("page", 3, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("pfn", 4, ProtoSchemaType::kUint64));
   }
 
   {
@@ -2966,9 +3141,9 @@
     event->name = "mm_page_free";
     event->group = "kmem";
     event->proto_field_id = 310;
-    event->fields.push_back(MakeField("order", 1, kProtoUint32));
-    event->fields.push_back(MakeField("page", 2, kProtoUint64));
-    event->fields.push_back(MakeField("pfn", 3, kProtoUint64));
+    event->fields.push_back(MakeField("order", 1, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("page", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("pfn", 3, ProtoSchemaType::kUint64));
   }
 
   {
@@ -2977,9 +3152,9 @@
     event->name = "mm_page_free_batched";
     event->group = "kmem";
     event->proto_field_id = 311;
-    event->fields.push_back(MakeField("cold", 1, kProtoInt32));
-    event->fields.push_back(MakeField("page", 2, kProtoUint64));
-    event->fields.push_back(MakeField("pfn", 3, kProtoUint64));
+    event->fields.push_back(MakeField("cold", 1, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("page", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("pfn", 3, ProtoSchemaType::kUint64));
   }
 
   {
@@ -2988,10 +3163,11 @@
     event->name = "mm_page_pcpu_drain";
     event->group = "kmem";
     event->proto_field_id = 312;
-    event->fields.push_back(MakeField("migratetype", 1, kProtoInt32));
-    event->fields.push_back(MakeField("order", 2, kProtoUint32));
-    event->fields.push_back(MakeField("page", 3, kProtoUint64));
-    event->fields.push_back(MakeField("pfn", 4, kProtoUint64));
+    event->fields.push_back(
+        MakeField("migratetype", 1, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("order", 2, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("page", 3, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("pfn", 4, ProtoSchemaType::kUint64));
   }
 
   {
@@ -3000,8 +3176,8 @@
     event->name = "rss_stat";
     event->group = "kmem";
     event->proto_field_id = 313;
-    event->fields.push_back(MakeField("member", 1, kProtoInt32));
-    event->fields.push_back(MakeField("size", 2, kProtoInt64));
+    event->fields.push_back(MakeField("member", 1, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("size", 2, ProtoSchemaType::kInt64));
   }
 
   {
@@ -3010,9 +3186,11 @@
     event->name = "ion_heap_shrink";
     event->group = "kmem";
     event->proto_field_id = 314;
-    event->fields.push_back(MakeField("heap_name", 1, kProtoString));
-    event->fields.push_back(MakeField("len", 2, kProtoUint64));
-    event->fields.push_back(MakeField("total_allocated", 3, kProtoInt64));
+    event->fields.push_back(
+        MakeField("heap_name", 1, ProtoSchemaType::kString));
+    event->fields.push_back(MakeField("len", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(
+        MakeField("total_allocated", 3, ProtoSchemaType::kInt64));
   }
 
   {
@@ -3021,9 +3199,11 @@
     event->name = "ion_heap_grow";
     event->group = "kmem";
     event->proto_field_id = 315;
-    event->fields.push_back(MakeField("heap_name", 1, kProtoString));
-    event->fields.push_back(MakeField("len", 2, kProtoUint64));
-    event->fields.push_back(MakeField("total_allocated", 3, kProtoInt64));
+    event->fields.push_back(
+        MakeField("heap_name", 1, ProtoSchemaType::kString));
+    event->fields.push_back(MakeField("len", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(
+        MakeField("total_allocated", 3, ProtoSchemaType::kInt64));
   }
 
   {
@@ -3032,11 +3212,13 @@
     event->name = "lowmemory_kill";
     event->group = "lowmemorykiller";
     event->proto_field_id = 35;
-    event->fields.push_back(MakeField("comm", 1, kProtoString));
-    event->fields.push_back(MakeField("pid", 2, kProtoInt32));
-    event->fields.push_back(MakeField("pagecache_size", 3, kProtoInt64));
-    event->fields.push_back(MakeField("pagecache_limit", 4, kProtoInt64));
-    event->fields.push_back(MakeField("free", 5, kProtoInt64));
+    event->fields.push_back(MakeField("comm", 1, ProtoSchemaType::kString));
+    event->fields.push_back(MakeField("pid", 2, ProtoSchemaType::kInt32));
+    event->fields.push_back(
+        MakeField("pagecache_size", 3, ProtoSchemaType::kInt64));
+    event->fields.push_back(
+        MakeField("pagecache_limit", 4, ProtoSchemaType::kInt64));
+    event->fields.push_back(MakeField("free", 5, ProtoSchemaType::kInt64));
   }
 
   {
@@ -3045,8 +3227,9 @@
     event->name = "mdp_cmd_kickoff";
     event->group = "mdss";
     event->proto_field_id = 76;
-    event->fields.push_back(MakeField("ctl_num", 1, kProtoUint32));
-    event->fields.push_back(MakeField("kickoff_cnt", 2, kProtoInt32));
+    event->fields.push_back(MakeField("ctl_num", 1, ProtoSchemaType::kUint32));
+    event->fields.push_back(
+        MakeField("kickoff_cnt", 2, ProtoSchemaType::kInt32));
   }
 
   {
@@ -3055,10 +3238,11 @@
     event->name = "mdp_commit";
     event->group = "mdss";
     event->proto_field_id = 77;
-    event->fields.push_back(MakeField("num", 1, kProtoUint32));
-    event->fields.push_back(MakeField("play_cnt", 2, kProtoUint32));
-    event->fields.push_back(MakeField("clk_rate", 3, kProtoUint32));
-    event->fields.push_back(MakeField("bandwidth", 4, kProtoUint64));
+    event->fields.push_back(MakeField("num", 1, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("play_cnt", 2, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("clk_rate", 3, ProtoSchemaType::kUint32));
+    event->fields.push_back(
+        MakeField("bandwidth", 4, ProtoSchemaType::kUint64));
   }
 
   {
@@ -3067,10 +3251,11 @@
     event->name = "mdp_perf_set_ot";
     event->group = "mdss";
     event->proto_field_id = 78;
-    event->fields.push_back(MakeField("pnum", 1, kProtoUint32));
-    event->fields.push_back(MakeField("xin_id", 2, kProtoUint32));
-    event->fields.push_back(MakeField("rd_lim", 3, kProtoUint32));
-    event->fields.push_back(MakeField("is_vbif_rt", 4, kProtoUint32));
+    event->fields.push_back(MakeField("pnum", 1, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("xin_id", 2, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("rd_lim", 3, ProtoSchemaType::kUint32));
+    event->fields.push_back(
+        MakeField("is_vbif_rt", 4, ProtoSchemaType::kUint32));
   }
 
   {
@@ -3079,22 +3264,22 @@
     event->name = "mdp_sspp_change";
     event->group = "mdss";
     event->proto_field_id = 79;
-    event->fields.push_back(MakeField("num", 1, kProtoUint32));
-    event->fields.push_back(MakeField("play_cnt", 2, kProtoUint32));
-    event->fields.push_back(MakeField("mixer", 3, kProtoUint32));
-    event->fields.push_back(MakeField("stage", 4, kProtoUint32));
-    event->fields.push_back(MakeField("flags", 5, kProtoUint32));
-    event->fields.push_back(MakeField("format", 6, kProtoUint32));
-    event->fields.push_back(MakeField("img_w", 7, kProtoUint32));
-    event->fields.push_back(MakeField("img_h", 8, kProtoUint32));
-    event->fields.push_back(MakeField("src_x", 9, kProtoUint32));
-    event->fields.push_back(MakeField("src_y", 10, kProtoUint32));
-    event->fields.push_back(MakeField("src_w", 11, kProtoUint32));
-    event->fields.push_back(MakeField("src_h", 12, kProtoUint32));
-    event->fields.push_back(MakeField("dst_x", 13, kProtoUint32));
-    event->fields.push_back(MakeField("dst_y", 14, kProtoUint32));
-    event->fields.push_back(MakeField("dst_w", 15, kProtoUint32));
-    event->fields.push_back(MakeField("dst_h", 16, kProtoUint32));
+    event->fields.push_back(MakeField("num", 1, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("play_cnt", 2, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("mixer", 3, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("stage", 4, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("flags", 5, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("format", 6, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("img_w", 7, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("img_h", 8, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("src_x", 9, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("src_y", 10, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("src_w", 11, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("src_h", 12, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("dst_x", 13, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("dst_y", 14, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("dst_w", 15, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("dst_h", 16, ProtoSchemaType::kUint32));
   }
 
   {
@@ -3103,9 +3288,11 @@
     event->name = "tracing_mark_write";
     event->group = "mdss";
     event->proto_field_id = 80;
-    event->fields.push_back(MakeField("pid", 1, kProtoInt32));
-    event->fields.push_back(MakeField("trace_name", 2, kProtoString));
-    event->fields.push_back(MakeField("trace_begin", 3, kProtoUint32));
+    event->fields.push_back(MakeField("pid", 1, ProtoSchemaType::kInt32));
+    event->fields.push_back(
+        MakeField("trace_name", 2, ProtoSchemaType::kString));
+    event->fields.push_back(
+        MakeField("trace_begin", 3, ProtoSchemaType::kUint32));
   }
 
   {
@@ -3114,10 +3301,10 @@
     event->name = "mdp_cmd_pingpong_done";
     event->group = "mdss";
     event->proto_field_id = 81;
-    event->fields.push_back(MakeField("ctl_num", 1, kProtoUint32));
-    event->fields.push_back(MakeField("intf_num", 2, kProtoUint32));
-    event->fields.push_back(MakeField("pp_num", 3, kProtoUint32));
-    event->fields.push_back(MakeField("koff_cnt", 4, kProtoInt32));
+    event->fields.push_back(MakeField("ctl_num", 1, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("intf_num", 2, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("pp_num", 3, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("koff_cnt", 4, ProtoSchemaType::kInt32));
   }
 
   {
@@ -3126,14 +3313,16 @@
     event->name = "mdp_compare_bw";
     event->group = "mdss";
     event->proto_field_id = 82;
-    event->fields.push_back(MakeField("new_ab", 1, kProtoUint64));
-    event->fields.push_back(MakeField("new_ib", 2, kProtoUint64));
-    event->fields.push_back(MakeField("new_wb", 3, kProtoUint64));
-    event->fields.push_back(MakeField("old_ab", 4, kProtoUint64));
-    event->fields.push_back(MakeField("old_ib", 5, kProtoUint64));
-    event->fields.push_back(MakeField("old_wb", 6, kProtoUint64));
-    event->fields.push_back(MakeField("params_changed", 7, kProtoUint32));
-    event->fields.push_back(MakeField("update_bw", 8, kProtoUint32));
+    event->fields.push_back(MakeField("new_ab", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("new_ib", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("new_wb", 3, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("old_ab", 4, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("old_ib", 5, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("old_wb", 6, ProtoSchemaType::kUint64));
+    event->fields.push_back(
+        MakeField("params_changed", 7, ProtoSchemaType::kUint32));
+    event->fields.push_back(
+        MakeField("update_bw", 8, ProtoSchemaType::kUint32));
   }
 
   {
@@ -3142,11 +3331,13 @@
     event->name = "mdp_perf_set_panic_luts";
     event->group = "mdss";
     event->proto_field_id = 83;
-    event->fields.push_back(MakeField("pnum", 1, kProtoUint32));
-    event->fields.push_back(MakeField("fmt", 2, kProtoUint32));
-    event->fields.push_back(MakeField("mode", 3, kProtoUint32));
-    event->fields.push_back(MakeField("panic_lut", 4, kProtoUint32));
-    event->fields.push_back(MakeField("robust_lut", 5, kProtoUint32));
+    event->fields.push_back(MakeField("pnum", 1, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("fmt", 2, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("mode", 3, ProtoSchemaType::kUint32));
+    event->fields.push_back(
+        MakeField("panic_lut", 4, ProtoSchemaType::kUint32));
+    event->fields.push_back(
+        MakeField("robust_lut", 5, ProtoSchemaType::kUint32));
   }
 
   {
@@ -3155,22 +3346,22 @@
     event->name = "mdp_sspp_set";
     event->group = "mdss";
     event->proto_field_id = 84;
-    event->fields.push_back(MakeField("num", 1, kProtoUint32));
-    event->fields.push_back(MakeField("play_cnt", 2, kProtoUint32));
-    event->fields.push_back(MakeField("mixer", 3, kProtoUint32));
-    event->fields.push_back(MakeField("stage", 4, kProtoUint32));
-    event->fields.push_back(MakeField("flags", 5, kProtoUint32));
-    event->fields.push_back(MakeField("format", 6, kProtoUint32));
-    event->fields.push_back(MakeField("img_w", 7, kProtoUint32));
-    event->fields.push_back(MakeField("img_h", 8, kProtoUint32));
-    event->fields.push_back(MakeField("src_x", 9, kProtoUint32));
-    event->fields.push_back(MakeField("src_y", 10, kProtoUint32));
-    event->fields.push_back(MakeField("src_w", 11, kProtoUint32));
-    event->fields.push_back(MakeField("src_h", 12, kProtoUint32));
-    event->fields.push_back(MakeField("dst_x", 13, kProtoUint32));
-    event->fields.push_back(MakeField("dst_y", 14, kProtoUint32));
-    event->fields.push_back(MakeField("dst_w", 15, kProtoUint32));
-    event->fields.push_back(MakeField("dst_h", 16, kProtoUint32));
+    event->fields.push_back(MakeField("num", 1, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("play_cnt", 2, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("mixer", 3, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("stage", 4, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("flags", 5, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("format", 6, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("img_w", 7, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("img_h", 8, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("src_x", 9, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("src_y", 10, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("src_w", 11, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("src_h", 12, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("dst_x", 13, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("dst_y", 14, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("dst_w", 15, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("dst_h", 16, ProtoSchemaType::kUint32));
   }
 
   {
@@ -3179,8 +3370,8 @@
     event->name = "mdp_cmd_readptr_done";
     event->group = "mdss";
     event->proto_field_id = 85;
-    event->fields.push_back(MakeField("ctl_num", 1, kProtoUint32));
-    event->fields.push_back(MakeField("koff_cnt", 2, kProtoInt32));
+    event->fields.push_back(MakeField("ctl_num", 1, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("koff_cnt", 2, ProtoSchemaType::kInt32));
   }
 
   {
@@ -3189,9 +3380,10 @@
     event->name = "mdp_misr_crc";
     event->group = "mdss";
     event->proto_field_id = 86;
-    event->fields.push_back(MakeField("block_id", 1, kProtoUint32));
-    event->fields.push_back(MakeField("vsync_cnt", 2, kProtoUint32));
-    event->fields.push_back(MakeField("crc", 3, kProtoUint32));
+    event->fields.push_back(MakeField("block_id", 1, ProtoSchemaType::kUint32));
+    event->fields.push_back(
+        MakeField("vsync_cnt", 2, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("crc", 3, ProtoSchemaType::kUint32));
   }
 
   {
@@ -3200,13 +3392,13 @@
     event->name = "mdp_perf_set_qos_luts";
     event->group = "mdss";
     event->proto_field_id = 87;
-    event->fields.push_back(MakeField("pnum", 1, kProtoUint32));
-    event->fields.push_back(MakeField("fmt", 2, kProtoUint32));
-    event->fields.push_back(MakeField("intf", 3, kProtoUint32));
-    event->fields.push_back(MakeField("rot", 4, kProtoUint32));
-    event->fields.push_back(MakeField("fl", 5, kProtoUint32));
-    event->fields.push_back(MakeField("lut", 6, kProtoUint32));
-    event->fields.push_back(MakeField("linear", 7, kProtoUint32));
+    event->fields.push_back(MakeField("pnum", 1, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("fmt", 2, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("intf", 3, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("rot", 4, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("fl", 5, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("lut", 6, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("linear", 7, ProtoSchemaType::kUint32));
   }
 
   {
@@ -3215,9 +3407,10 @@
     event->name = "mdp_trace_counter";
     event->group = "mdss";
     event->proto_field_id = 88;
-    event->fields.push_back(MakeField("pid", 1, kProtoInt32));
-    event->fields.push_back(MakeField("counter_name", 2, kProtoString));
-    event->fields.push_back(MakeField("value", 3, kProtoInt32));
+    event->fields.push_back(MakeField("pid", 1, ProtoSchemaType::kInt32));
+    event->fields.push_back(
+        MakeField("counter_name", 2, ProtoSchemaType::kString));
+    event->fields.push_back(MakeField("value", 3, ProtoSchemaType::kInt32));
   }
 
   {
@@ -3226,7 +3419,7 @@
     event->name = "mdp_cmd_release_bw";
     event->group = "mdss";
     event->proto_field_id = 89;
-    event->fields.push_back(MakeField("ctl_num", 1, kProtoUint32));
+    event->fields.push_back(MakeField("ctl_num", 1, ProtoSchemaType::kUint32));
   }
 
   {
@@ -3235,7 +3428,8 @@
     event->name = "mdp_mixer_update";
     event->group = "mdss";
     event->proto_field_id = 90;
-    event->fields.push_back(MakeField("mixer_num", 1, kProtoUint32));
+    event->fields.push_back(
+        MakeField("mixer_num", 1, ProtoSchemaType::kUint32));
   }
 
   {
@@ -3244,14 +3438,16 @@
     event->name = "mdp_perf_set_wm_levels";
     event->group = "mdss";
     event->proto_field_id = 91;
-    event->fields.push_back(MakeField("pnum", 1, kProtoUint32));
-    event->fields.push_back(MakeField("use_space", 2, kProtoUint32));
-    event->fields.push_back(MakeField("priority_bytes", 3, kProtoUint32));
-    event->fields.push_back(MakeField("wm0", 4, kProtoUint32));
-    event->fields.push_back(MakeField("wm1", 5, kProtoUint32));
-    event->fields.push_back(MakeField("wm2", 6, kProtoUint32));
-    event->fields.push_back(MakeField("mb_cnt", 7, kProtoUint32));
-    event->fields.push_back(MakeField("mb_size", 8, kProtoUint32));
+    event->fields.push_back(MakeField("pnum", 1, ProtoSchemaType::kUint32));
+    event->fields.push_back(
+        MakeField("use_space", 2, ProtoSchemaType::kUint32));
+    event->fields.push_back(
+        MakeField("priority_bytes", 3, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("wm0", 4, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("wm1", 5, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("wm2", 6, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("mb_cnt", 7, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("mb_size", 8, ProtoSchemaType::kUint32));
   }
 
   {
@@ -3260,8 +3456,9 @@
     event->name = "mdp_video_underrun_done";
     event->group = "mdss";
     event->proto_field_id = 92;
-    event->fields.push_back(MakeField("ctl_num", 1, kProtoUint32));
-    event->fields.push_back(MakeField("underrun_cnt", 2, kProtoUint32));
+    event->fields.push_back(MakeField("ctl_num", 1, ProtoSchemaType::kUint32));
+    event->fields.push_back(
+        MakeField("underrun_cnt", 2, ProtoSchemaType::kUint32));
   }
 
   {
@@ -3270,8 +3467,9 @@
     event->name = "mdp_cmd_wait_pingpong";
     event->group = "mdss";
     event->proto_field_id = 93;
-    event->fields.push_back(MakeField("ctl_num", 1, kProtoUint32));
-    event->fields.push_back(MakeField("kickoff_cnt", 2, kProtoInt32));
+    event->fields.push_back(MakeField("ctl_num", 1, ProtoSchemaType::kUint32));
+    event->fields.push_back(
+        MakeField("kickoff_cnt", 2, ProtoSchemaType::kInt32));
   }
 
   {
@@ -3280,16 +3478,19 @@
     event->name = "mdp_perf_prefill_calc";
     event->group = "mdss";
     event->proto_field_id = 94;
-    event->fields.push_back(MakeField("pnum", 1, kProtoUint32));
-    event->fields.push_back(MakeField("latency_buf", 2, kProtoUint32));
-    event->fields.push_back(MakeField("ot", 3, kProtoUint32));
-    event->fields.push_back(MakeField("y_buf", 4, kProtoUint32));
-    event->fields.push_back(MakeField("y_scaler", 5, kProtoUint32));
-    event->fields.push_back(MakeField("pp_lines", 6, kProtoUint32));
-    event->fields.push_back(MakeField("pp_bytes", 7, kProtoUint32));
-    event->fields.push_back(MakeField("post_sc", 8, kProtoUint32));
-    event->fields.push_back(MakeField("fbc_bytes", 9, kProtoUint32));
-    event->fields.push_back(MakeField("prefill_bytes", 10, kProtoUint32));
+    event->fields.push_back(MakeField("pnum", 1, ProtoSchemaType::kUint32));
+    event->fields.push_back(
+        MakeField("latency_buf", 2, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("ot", 3, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("y_buf", 4, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("y_scaler", 5, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("pp_lines", 6, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("pp_bytes", 7, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("post_sc", 8, ProtoSchemaType::kUint32));
+    event->fields.push_back(
+        MakeField("fbc_bytes", 9, ProtoSchemaType::kUint32));
+    event->fields.push_back(
+        MakeField("prefill_bytes", 10, ProtoSchemaType::kUint32));
   }
 
   {
@@ -3298,9 +3499,9 @@
     event->name = "mdp_perf_update_bus";
     event->group = "mdss";
     event->proto_field_id = 95;
-    event->fields.push_back(MakeField("client", 1, kProtoInt32));
-    event->fields.push_back(MakeField("ab_quota", 2, kProtoUint64));
-    event->fields.push_back(MakeField("ib_quota", 3, kProtoUint64));
+    event->fields.push_back(MakeField("client", 1, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("ab_quota", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("ib_quota", 3, ProtoSchemaType::kUint64));
   }
 
   {
@@ -3309,7 +3510,7 @@
     event->name = "rotator_bw_ao_as_context";
     event->group = "mdss";
     event->proto_field_id = 96;
-    event->fields.push_back(MakeField("state", 1, kProtoUint32));
+    event->fields.push_back(MakeField("state", 1, ProtoSchemaType::kUint32));
   }
 
   {
@@ -3318,9 +3519,10 @@
     event->name = "oom_score_adj_update";
     event->group = "oom";
     event->proto_field_id = 326;
-    event->fields.push_back(MakeField("comm", 1, kProtoString));
-    event->fields.push_back(MakeField("oom_score_adj", 2, kProtoInt32));
-    event->fields.push_back(MakeField("pid", 3, kProtoInt32));
+    event->fields.push_back(MakeField("comm", 1, ProtoSchemaType::kString));
+    event->fields.push_back(
+        MakeField("oom_score_adj", 2, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("pid", 3, ProtoSchemaType::kInt32));
   }
 
   {
@@ -3329,8 +3531,8 @@
     event->name = "cpu_frequency";
     event->group = "power";
     event->proto_field_id = 11;
-    event->fields.push_back(MakeField("state", 1, kProtoUint32));
-    event->fields.push_back(MakeField("cpu_id", 2, kProtoUint32));
+    event->fields.push_back(MakeField("state", 1, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("cpu_id", 2, ProtoSchemaType::kUint32));
   }
 
   {
@@ -3339,9 +3541,9 @@
     event->name = "cpu_frequency_limits";
     event->group = "power";
     event->proto_field_id = 12;
-    event->fields.push_back(MakeField("min_freq", 1, kProtoUint32));
-    event->fields.push_back(MakeField("max_freq", 2, kProtoUint32));
-    event->fields.push_back(MakeField("cpu_id", 3, kProtoUint32));
+    event->fields.push_back(MakeField("min_freq", 1, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("max_freq", 2, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("cpu_id", 3, ProtoSchemaType::kUint32));
   }
 
   {
@@ -3350,8 +3552,8 @@
     event->name = "cpu_idle";
     event->group = "power";
     event->proto_field_id = 13;
-    event->fields.push_back(MakeField("state", 1, kProtoUint32));
-    event->fields.push_back(MakeField("cpu_id", 2, kProtoUint32));
+    event->fields.push_back(MakeField("state", 1, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("cpu_id", 2, ProtoSchemaType::kUint32));
   }
 
   {
@@ -3360,9 +3562,9 @@
     event->name = "clock_enable";
     event->group = "power";
     event->proto_field_id = 14;
-    event->fields.push_back(MakeField("name", 1, kProtoString));
-    event->fields.push_back(MakeField("state", 2, kProtoUint64));
-    event->fields.push_back(MakeField("cpu_id", 3, kProtoUint64));
+    event->fields.push_back(MakeField("name", 1, ProtoSchemaType::kString));
+    event->fields.push_back(MakeField("state", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("cpu_id", 3, ProtoSchemaType::kUint64));
   }
 
   {
@@ -3371,9 +3573,9 @@
     event->name = "clock_disable";
     event->group = "power";
     event->proto_field_id = 15;
-    event->fields.push_back(MakeField("name", 1, kProtoString));
-    event->fields.push_back(MakeField("state", 2, kProtoUint64));
-    event->fields.push_back(MakeField("cpu_id", 3, kProtoUint64));
+    event->fields.push_back(MakeField("name", 1, ProtoSchemaType::kString));
+    event->fields.push_back(MakeField("state", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("cpu_id", 3, ProtoSchemaType::kUint64));
   }
 
   {
@@ -3382,9 +3584,9 @@
     event->name = "clock_set_rate";
     event->group = "power";
     event->proto_field_id = 16;
-    event->fields.push_back(MakeField("name", 1, kProtoString));
-    event->fields.push_back(MakeField("state", 2, kProtoUint64));
-    event->fields.push_back(MakeField("cpu_id", 3, kProtoUint64));
+    event->fields.push_back(MakeField("name", 1, ProtoSchemaType::kString));
+    event->fields.push_back(MakeField("state", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("cpu_id", 3, ProtoSchemaType::kUint64));
   }
 
   {
@@ -3393,9 +3595,9 @@
     event->name = "suspend_resume";
     event->group = "power";
     event->proto_field_id = 113;
-    event->fields.push_back(MakeField("action", 1, kProtoString));
-    event->fields.push_back(MakeField("val", 2, kProtoInt32));
-    event->fields.push_back(MakeField("start", 3, kProtoUint32));
+    event->fields.push_back(MakeField("action", 1, ProtoSchemaType::kString));
+    event->fields.push_back(MakeField("val", 2, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("start", 3, ProtoSchemaType::kUint32));
   }
 
   {
@@ -3404,7 +3606,7 @@
     event->name = "regulator_disable";
     event->group = "regulator";
     event->proto_field_id = 60;
-    event->fields.push_back(MakeField("name", 1, kProtoString));
+    event->fields.push_back(MakeField("name", 1, ProtoSchemaType::kString));
   }
 
   {
@@ -3413,7 +3615,7 @@
     event->name = "regulator_disable_complete";
     event->group = "regulator";
     event->proto_field_id = 61;
-    event->fields.push_back(MakeField("name", 1, kProtoString));
+    event->fields.push_back(MakeField("name", 1, ProtoSchemaType::kString));
   }
 
   {
@@ -3422,7 +3624,7 @@
     event->name = "regulator_enable";
     event->group = "regulator";
     event->proto_field_id = 62;
-    event->fields.push_back(MakeField("name", 1, kProtoString));
+    event->fields.push_back(MakeField("name", 1, ProtoSchemaType::kString));
   }
 
   {
@@ -3431,7 +3633,7 @@
     event->name = "regulator_enable_complete";
     event->group = "regulator";
     event->proto_field_id = 63;
-    event->fields.push_back(MakeField("name", 1, kProtoString));
+    event->fields.push_back(MakeField("name", 1, ProtoSchemaType::kString));
   }
 
   {
@@ -3440,7 +3642,7 @@
     event->name = "regulator_enable_delay";
     event->group = "regulator";
     event->proto_field_id = 64;
-    event->fields.push_back(MakeField("name", 1, kProtoString));
+    event->fields.push_back(MakeField("name", 1, ProtoSchemaType::kString));
   }
 
   {
@@ -3449,9 +3651,9 @@
     event->name = "regulator_set_voltage";
     event->group = "regulator";
     event->proto_field_id = 65;
-    event->fields.push_back(MakeField("name", 1, kProtoString));
-    event->fields.push_back(MakeField("min", 2, kProtoInt32));
-    event->fields.push_back(MakeField("max", 3, kProtoInt32));
+    event->fields.push_back(MakeField("name", 1, ProtoSchemaType::kString));
+    event->fields.push_back(MakeField("min", 2, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("max", 3, ProtoSchemaType::kInt32));
   }
 
   {
@@ -3460,8 +3662,8 @@
     event->name = "regulator_set_voltage_complete";
     event->group = "regulator";
     event->proto_field_id = 66;
-    event->fields.push_back(MakeField("name", 1, kProtoString));
-    event->fields.push_back(MakeField("val", 2, kProtoUint32));
+    event->fields.push_back(MakeField("name", 1, ProtoSchemaType::kString));
+    event->fields.push_back(MakeField("val", 2, ProtoSchemaType::kUint32));
   }
 
   {
@@ -3470,13 +3672,16 @@
     event->name = "sched_switch";
     event->group = "sched";
     event->proto_field_id = 4;
-    event->fields.push_back(MakeField("prev_comm", 1, kProtoString));
-    event->fields.push_back(MakeField("prev_pid", 2, kProtoInt32));
-    event->fields.push_back(MakeField("prev_prio", 3, kProtoInt32));
-    event->fields.push_back(MakeField("prev_state", 4, kProtoInt64));
-    event->fields.push_back(MakeField("next_comm", 5, kProtoString));
-    event->fields.push_back(MakeField("next_pid", 6, kProtoInt32));
-    event->fields.push_back(MakeField("next_prio", 7, kProtoInt32));
+    event->fields.push_back(
+        MakeField("prev_comm", 1, ProtoSchemaType::kString));
+    event->fields.push_back(MakeField("prev_pid", 2, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("prev_prio", 3, ProtoSchemaType::kInt32));
+    event->fields.push_back(
+        MakeField("prev_state", 4, ProtoSchemaType::kInt64));
+    event->fields.push_back(
+        MakeField("next_comm", 5, ProtoSchemaType::kString));
+    event->fields.push_back(MakeField("next_pid", 6, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("next_prio", 7, ProtoSchemaType::kInt32));
   }
 
   {
@@ -3485,11 +3690,12 @@
     event->name = "sched_wakeup";
     event->group = "sched";
     event->proto_field_id = 17;
-    event->fields.push_back(MakeField("comm", 1, kProtoString));
-    event->fields.push_back(MakeField("pid", 2, kProtoInt32));
-    event->fields.push_back(MakeField("prio", 3, kProtoInt32));
-    event->fields.push_back(MakeField("success", 4, kProtoInt32));
-    event->fields.push_back(MakeField("target_cpu", 5, kProtoInt32));
+    event->fields.push_back(MakeField("comm", 1, ProtoSchemaType::kString));
+    event->fields.push_back(MakeField("pid", 2, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("prio", 3, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("success", 4, ProtoSchemaType::kInt32));
+    event->fields.push_back(
+        MakeField("target_cpu", 5, ProtoSchemaType::kInt32));
   }
 
   {
@@ -3498,9 +3704,9 @@
     event->name = "sched_blocked_reason";
     event->group = "sched";
     event->proto_field_id = 18;
-    event->fields.push_back(MakeField("pid", 1, kProtoInt32));
-    event->fields.push_back(MakeField("caller", 2, kProtoUint64));
-    event->fields.push_back(MakeField("io_wait", 3, kProtoUint32));
+    event->fields.push_back(MakeField("pid", 1, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("caller", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("io_wait", 3, ProtoSchemaType::kUint32));
   }
 
   {
@@ -3509,9 +3715,10 @@
     event->name = "sched_cpu_hotplug";
     event->group = "sched";
     event->proto_field_id = 19;
-    event->fields.push_back(MakeField("affected_cpu", 1, kProtoInt32));
-    event->fields.push_back(MakeField("error", 2, kProtoInt32));
-    event->fields.push_back(MakeField("status", 3, kProtoInt32));
+    event->fields.push_back(
+        MakeField("affected_cpu", 1, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("error", 2, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("status", 3, ProtoSchemaType::kInt32));
   }
 
   {
@@ -3520,11 +3727,12 @@
     event->name = "sched_waking";
     event->group = "sched";
     event->proto_field_id = 20;
-    event->fields.push_back(MakeField("comm", 1, kProtoString));
-    event->fields.push_back(MakeField("pid", 2, kProtoInt32));
-    event->fields.push_back(MakeField("prio", 3, kProtoInt32));
-    event->fields.push_back(MakeField("success", 4, kProtoInt32));
-    event->fields.push_back(MakeField("target_cpu", 5, kProtoInt32));
+    event->fields.push_back(MakeField("comm", 1, ProtoSchemaType::kString));
+    event->fields.push_back(MakeField("pid", 2, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("prio", 3, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("success", 4, ProtoSchemaType::kInt32));
+    event->fields.push_back(
+        MakeField("target_cpu", 5, ProtoSchemaType::kInt32));
   }
 
   {
@@ -3533,11 +3741,12 @@
     event->name = "sched_wakeup_new";
     event->group = "sched";
     event->proto_field_id = 114;
-    event->fields.push_back(MakeField("comm", 1, kProtoString));
-    event->fields.push_back(MakeField("pid", 2, kProtoInt32));
-    event->fields.push_back(MakeField("prio", 3, kProtoInt32));
-    event->fields.push_back(MakeField("success", 4, kProtoInt32));
-    event->fields.push_back(MakeField("target_cpu", 5, kProtoInt32));
+    event->fields.push_back(MakeField("comm", 1, ProtoSchemaType::kString));
+    event->fields.push_back(MakeField("pid", 2, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("prio", 3, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("success", 4, ProtoSchemaType::kInt32));
+    event->fields.push_back(
+        MakeField("target_cpu", 5, ProtoSchemaType::kInt32));
   }
 
   {
@@ -3546,9 +3755,9 @@
     event->name = "sched_process_exec";
     event->group = "sched";
     event->proto_field_id = 237;
-    event->fields.push_back(MakeField("filename", 1, kProtoString));
-    event->fields.push_back(MakeField("pid", 2, kProtoInt32));
-    event->fields.push_back(MakeField("old_pid", 3, kProtoInt32));
+    event->fields.push_back(MakeField("filename", 1, ProtoSchemaType::kString));
+    event->fields.push_back(MakeField("pid", 2, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("old_pid", 3, ProtoSchemaType::kInt32));
   }
 
   {
@@ -3557,10 +3766,10 @@
     event->name = "sched_process_exit";
     event->group = "sched";
     event->proto_field_id = 238;
-    event->fields.push_back(MakeField("comm", 1, kProtoString));
-    event->fields.push_back(MakeField("pid", 2, kProtoInt32));
-    event->fields.push_back(MakeField("tgid", 3, kProtoInt32));
-    event->fields.push_back(MakeField("prio", 4, kProtoInt32));
+    event->fields.push_back(MakeField("comm", 1, ProtoSchemaType::kString));
+    event->fields.push_back(MakeField("pid", 2, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("tgid", 3, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("prio", 4, ProtoSchemaType::kInt32));
   }
 
   {
@@ -3569,10 +3778,13 @@
     event->name = "sched_process_fork";
     event->group = "sched";
     event->proto_field_id = 239;
-    event->fields.push_back(MakeField("parent_comm", 1, kProtoString));
-    event->fields.push_back(MakeField("parent_pid", 2, kProtoInt32));
-    event->fields.push_back(MakeField("child_comm", 3, kProtoString));
-    event->fields.push_back(MakeField("child_pid", 4, kProtoInt32));
+    event->fields.push_back(
+        MakeField("parent_comm", 1, ProtoSchemaType::kString));
+    event->fields.push_back(
+        MakeField("parent_pid", 2, ProtoSchemaType::kInt32));
+    event->fields.push_back(
+        MakeField("child_comm", 3, ProtoSchemaType::kString));
+    event->fields.push_back(MakeField("child_pid", 4, ProtoSchemaType::kInt32));
   }
 
   {
@@ -3581,9 +3793,9 @@
     event->name = "sched_process_free";
     event->group = "sched";
     event->proto_field_id = 240;
-    event->fields.push_back(MakeField("comm", 1, kProtoString));
-    event->fields.push_back(MakeField("pid", 2, kProtoInt32));
-    event->fields.push_back(MakeField("prio", 3, kProtoInt32));
+    event->fields.push_back(MakeField("comm", 1, ProtoSchemaType::kString));
+    event->fields.push_back(MakeField("pid", 2, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("prio", 3, ProtoSchemaType::kInt32));
   }
 
   {
@@ -3592,8 +3804,8 @@
     event->name = "sched_process_hang";
     event->group = "sched";
     event->proto_field_id = 241;
-    event->fields.push_back(MakeField("comm", 1, kProtoString));
-    event->fields.push_back(MakeField("pid", 2, kProtoInt32));
+    event->fields.push_back(MakeField("comm", 1, ProtoSchemaType::kString));
+    event->fields.push_back(MakeField("pid", 2, ProtoSchemaType::kInt32));
   }
 
   {
@@ -3602,9 +3814,9 @@
     event->name = "sched_process_wait";
     event->group = "sched";
     event->proto_field_id = 242;
-    event->fields.push_back(MakeField("comm", 1, kProtoString));
-    event->fields.push_back(MakeField("pid", 2, kProtoInt32));
-    event->fields.push_back(MakeField("prio", 3, kProtoInt32));
+    event->fields.push_back(MakeField("comm", 1, ProtoSchemaType::kString));
+    event->fields.push_back(MakeField("pid", 2, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("prio", 3, ProtoSchemaType::kInt32));
   }
 
   {
@@ -3613,9 +3825,9 @@
     event->name = "signal_deliver";
     event->group = "signal";
     event->proto_field_id = 324;
-    event->fields.push_back(MakeField("code", 1, kProtoInt32));
-    event->fields.push_back(MakeField("sa_flags", 2, kProtoUint64));
-    event->fields.push_back(MakeField("sig", 3, kProtoInt32));
+    event->fields.push_back(MakeField("code", 1, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("sa_flags", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("sig", 3, ProtoSchemaType::kInt32));
   }
 
   {
@@ -3624,12 +3836,12 @@
     event->name = "signal_generate";
     event->group = "signal";
     event->proto_field_id = 325;
-    event->fields.push_back(MakeField("code", 1, kProtoInt32));
-    event->fields.push_back(MakeField("comm", 2, kProtoString));
-    event->fields.push_back(MakeField("group", 3, kProtoInt32));
-    event->fields.push_back(MakeField("pid", 4, kProtoInt32));
-    event->fields.push_back(MakeField("result", 5, kProtoInt32));
-    event->fields.push_back(MakeField("sig", 6, kProtoInt32));
+    event->fields.push_back(MakeField("code", 1, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("comm", 2, ProtoSchemaType::kString));
+    event->fields.push_back(MakeField("group", 3, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("pid", 4, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("result", 5, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("sig", 6, ProtoSchemaType::kInt32));
   }
 
   {
@@ -3638,8 +3850,8 @@
     event->name = "sync_pt";
     event->group = "sync";
     event->proto_field_id = 38;
-    event->fields.push_back(MakeField("timeline", 1, kProtoString));
-    event->fields.push_back(MakeField("value", 2, kProtoString));
+    event->fields.push_back(MakeField("timeline", 1, ProtoSchemaType::kString));
+    event->fields.push_back(MakeField("value", 2, ProtoSchemaType::kString));
   }
 
   {
@@ -3648,8 +3860,8 @@
     event->name = "sync_timeline";
     event->group = "sync";
     event->proto_field_id = 39;
-    event->fields.push_back(MakeField("name", 1, kProtoString));
-    event->fields.push_back(MakeField("value", 2, kProtoString));
+    event->fields.push_back(MakeField("name", 1, ProtoSchemaType::kString));
+    event->fields.push_back(MakeField("value", 2, ProtoSchemaType::kString));
   }
 
   {
@@ -3658,9 +3870,9 @@
     event->name = "sync_wait";
     event->group = "sync";
     event->proto_field_id = 40;
-    event->fields.push_back(MakeField("name", 1, kProtoString));
-    event->fields.push_back(MakeField("status", 2, kProtoInt32));
-    event->fields.push_back(MakeField("begin", 3, kProtoUint32));
+    event->fields.push_back(MakeField("name", 1, ProtoSchemaType::kString));
+    event->fields.push_back(MakeField("status", 2, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("begin", 3, ProtoSchemaType::kUint32));
   }
 
   {
@@ -3669,10 +3881,12 @@
     event->name = "task_newtask";
     event->group = "task";
     event->proto_field_id = 235;
-    event->fields.push_back(MakeField("pid", 1, kProtoInt32));
-    event->fields.push_back(MakeField("comm", 2, kProtoString));
-    event->fields.push_back(MakeField("clone_flags", 3, kProtoUint64));
-    event->fields.push_back(MakeField("oom_score_adj", 4, kProtoInt32));
+    event->fields.push_back(MakeField("pid", 1, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("comm", 2, ProtoSchemaType::kString));
+    event->fields.push_back(
+        MakeField("clone_flags", 3, ProtoSchemaType::kUint64));
+    event->fields.push_back(
+        MakeField("oom_score_adj", 4, ProtoSchemaType::kInt32));
   }
 
   {
@@ -3681,10 +3895,11 @@
     event->name = "task_rename";
     event->group = "task";
     event->proto_field_id = 236;
-    event->fields.push_back(MakeField("pid", 1, kProtoInt32));
-    event->fields.push_back(MakeField("oldcomm", 2, kProtoString));
-    event->fields.push_back(MakeField("newcomm", 3, kProtoString));
-    event->fields.push_back(MakeField("oom_score_adj", 4, kProtoInt32));
+    event->fields.push_back(MakeField("pid", 1, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("oldcomm", 2, ProtoSchemaType::kString));
+    event->fields.push_back(MakeField("newcomm", 3, ProtoSchemaType::kString));
+    event->fields.push_back(
+        MakeField("oom_score_adj", 4, ProtoSchemaType::kInt32));
   }
 
   {
@@ -3693,9 +3908,11 @@
     event->name = "mm_vmscan_direct_reclaim_begin";
     event->group = "vmscan";
     event->proto_field_id = 46;
-    event->fields.push_back(MakeField("order", 1, kProtoInt32));
-    event->fields.push_back(MakeField("may_writepage", 2, kProtoInt32));
-    event->fields.push_back(MakeField("gfp_flags", 3, kProtoUint32));
+    event->fields.push_back(MakeField("order", 1, ProtoSchemaType::kInt32));
+    event->fields.push_back(
+        MakeField("may_writepage", 2, ProtoSchemaType::kInt32));
+    event->fields.push_back(
+        MakeField("gfp_flags", 3, ProtoSchemaType::kUint32));
   }
 
   {
@@ -3704,7 +3921,8 @@
     event->name = "mm_vmscan_direct_reclaim_end";
     event->group = "vmscan";
     event->proto_field_id = 47;
-    event->fields.push_back(MakeField("nr_reclaimed", 1, kProtoUint64));
+    event->fields.push_back(
+        MakeField("nr_reclaimed", 1, ProtoSchemaType::kUint64));
   }
 
   {
@@ -3713,8 +3931,8 @@
     event->name = "mm_vmscan_kswapd_wake";
     event->group = "vmscan";
     event->proto_field_id = 48;
-    event->fields.push_back(MakeField("nid", 1, kProtoInt32));
-    event->fields.push_back(MakeField("order", 2, kProtoInt32));
+    event->fields.push_back(MakeField("nid", 1, ProtoSchemaType::kInt32));
+    event->fields.push_back(MakeField("order", 2, ProtoSchemaType::kInt32));
   }
 
   {
@@ -3723,7 +3941,7 @@
     event->name = "mm_vmscan_kswapd_sleep";
     event->group = "vmscan";
     event->proto_field_id = 49;
-    event->fields.push_back(MakeField("nid", 1, kProtoInt32));
+    event->fields.push_back(MakeField("nid", 1, ProtoSchemaType::kInt32));
   }
 
   {
@@ -3732,7 +3950,7 @@
     event->name = "workqueue_activate_work";
     event->group = "workqueue";
     event->proto_field_id = 56;
-    event->fields.push_back(MakeField("work", 1, kProtoUint64));
+    event->fields.push_back(MakeField("work", 1, ProtoSchemaType::kUint64));
   }
 
   {
@@ -3741,7 +3959,7 @@
     event->name = "workqueue_execute_end";
     event->group = "workqueue";
     event->proto_field_id = 57;
-    event->fields.push_back(MakeField("work", 1, kProtoUint64));
+    event->fields.push_back(MakeField("work", 1, ProtoSchemaType::kUint64));
   }
 
   {
@@ -3750,8 +3968,8 @@
     event->name = "workqueue_execute_start";
     event->group = "workqueue";
     event->proto_field_id = 58;
-    event->fields.push_back(MakeField("work", 1, kProtoUint64));
-    event->fields.push_back(MakeField("function", 2, kProtoUint64));
+    event->fields.push_back(MakeField("work", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("function", 2, ProtoSchemaType::kUint64));
   }
 
   {
@@ -3760,11 +3978,12 @@
     event->name = "workqueue_queue_work";
     event->group = "workqueue";
     event->proto_field_id = 59;
-    event->fields.push_back(MakeField("work", 1, kProtoUint64));
-    event->fields.push_back(MakeField("function", 2, kProtoUint64));
-    event->fields.push_back(MakeField("workqueue", 3, kProtoUint64));
-    event->fields.push_back(MakeField("req_cpu", 4, kProtoUint32));
-    event->fields.push_back(MakeField("cpu", 5, kProtoUint32));
+    event->fields.push_back(MakeField("work", 1, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("function", 2, ProtoSchemaType::kUint64));
+    event->fields.push_back(
+        MakeField("workqueue", 3, ProtoSchemaType::kUint64));
+    event->fields.push_back(MakeField("req_cpu", 4, ProtoSchemaType::kUint32));
+    event->fields.push_back(MakeField("cpu", 5, ProtoSchemaType::kUint32));
   }
 
   return events;
diff --git a/src/traced/probes/ftrace/event_info_constants.cc b/src/traced/probes/ftrace/event_info_constants.cc
index 1cf4f18..f87b5fc 100644
--- a/src/traced/probes/ftrace/event_info_constants.cc
+++ b/src/traced/probes/ftrace/event_info_constants.cc
@@ -17,8 +17,9 @@
 #include "src/traced/probes/ftrace/event_info_constants.h"
 
 namespace perfetto {
+using protozero::proto_utils::ProtoSchemaType;
 
-Field MakeField(const char* name, uint32_t id, ProtoFieldType type) {
+Field MakeField(const char* name, uint32_t id, ProtoSchemaType type) {
   Field field{};
   field.ftrace_name = name;
   field.proto_field_id = id;
@@ -29,73 +30,74 @@
 std::vector<Field> GetStaticCommonFieldsInfo() {
   std::vector<Field> fields;
 
-  fields.push_back(MakeField("common_pid", 2, kProtoInt32));
+  fields.push_back(MakeField("common_pid", 2, ProtoSchemaType::kInt32));
 
   return fields;
 }
 
 bool SetTranslationStrategy(FtraceFieldType ftrace,
-                            ProtoFieldType proto,
+                            ProtoSchemaType proto,
                             TranslationStrategy* out) {
-  if (ftrace == kFtraceCommonPid32 && proto == kProtoInt32) {
+  if (ftrace == kFtraceCommonPid32 && proto == ProtoSchemaType::kInt32) {
     *out = kCommonPid32ToInt32;
-  } else if (ftrace == kFtraceCommonPid32 && proto == kProtoInt64) {
+  } else if (ftrace == kFtraceCommonPid32 && proto == ProtoSchemaType::kInt64) {
     *out = kCommonPid32ToInt64;
-  } else if (ftrace == kFtraceInode32 && proto == kProtoUint64) {
+  } else if (ftrace == kFtraceInode32 && proto == ProtoSchemaType::kUint64) {
     *out = kInode32ToUint64;
-  } else if (ftrace == kFtraceInode64 && proto == kProtoUint64) {
+  } else if (ftrace == kFtraceInode64 && proto == ProtoSchemaType::kUint64) {
     *out = kInode64ToUint64;
-  } else if (ftrace == kFtracePid32 && proto == kProtoInt32) {
+  } else if (ftrace == kFtracePid32 && proto == ProtoSchemaType::kInt32) {
     *out = kPid32ToInt32;
-  } else if (ftrace == kFtracePid32 && proto == kProtoInt64) {
+  } else if (ftrace == kFtracePid32 && proto == ProtoSchemaType::kInt64) {
     *out = kPid32ToInt64;
-  } else if (ftrace == kFtraceDevId32 && proto == kProtoUint64) {
+  } else if (ftrace == kFtraceDevId32 && proto == ProtoSchemaType::kUint64) {
     *out = kDevId32ToUint64;
-  } else if (ftrace == kFtraceDevId64 && proto == kProtoUint64) {
+  } else if (ftrace == kFtraceDevId64 && proto == ProtoSchemaType::kUint64) {
     *out = kDevId64ToUint64;
-  } else if (ftrace == kFtraceUint8 && proto == kProtoUint32) {
+  } else if (ftrace == kFtraceUint8 && proto == ProtoSchemaType::kUint32) {
     *out = kUint8ToUint32;
-  } else if (ftrace == kFtraceUint8 && proto == kProtoUint64) {
+  } else if (ftrace == kFtraceUint8 && proto == ProtoSchemaType::kUint64) {
     *out = kUint8ToUint64;
-  } else if (ftrace == kFtraceUint16 && proto == kProtoUint32) {
+  } else if (ftrace == kFtraceUint16 && proto == ProtoSchemaType::kUint32) {
     *out = kUint16ToUint32;
-  } else if (ftrace == kFtraceUint16 && proto == kProtoUint64) {
+  } else if (ftrace == kFtraceUint16 && proto == ProtoSchemaType::kUint64) {
     *out = kUint16ToUint64;
-  } else if (ftrace == kFtraceUint32 && proto == kProtoUint32) {
+  } else if (ftrace == kFtraceUint32 && proto == ProtoSchemaType::kUint32) {
     *out = kUint32ToUint32;
-  } else if (ftrace == kFtraceUint32 && proto == kProtoUint64) {
+  } else if (ftrace == kFtraceUint32 && proto == ProtoSchemaType::kUint64) {
     *out = kUint32ToUint64;
-  } else if (ftrace == kFtraceUint64 && proto == kProtoUint64) {
+  } else if (ftrace == kFtraceUint64 && proto == ProtoSchemaType::kUint64) {
     *out = kUint64ToUint64;
-  } else if (ftrace == kFtraceInt8 && proto == kProtoInt32) {
+  } else if (ftrace == kFtraceInt8 && proto == ProtoSchemaType::kInt32) {
     *out = kInt8ToInt32;
-  } else if (ftrace == kFtraceInt8 && proto == kProtoInt64) {
+  } else if (ftrace == kFtraceInt8 && proto == ProtoSchemaType::kInt64) {
     *out = kInt8ToInt64;
-  } else if (ftrace == kFtraceInt16 && proto == kProtoInt32) {
+  } else if (ftrace == kFtraceInt16 && proto == ProtoSchemaType::kInt32) {
     *out = kInt16ToInt32;
-  } else if (ftrace == kFtraceInt16 && proto == kProtoInt64) {
+  } else if (ftrace == kFtraceInt16 && proto == ProtoSchemaType::kInt64) {
     *out = kInt16ToInt64;
-  } else if (ftrace == kFtraceInt32 && proto == kProtoInt32) {
+  } else if (ftrace == kFtraceInt32 && proto == ProtoSchemaType::kInt32) {
     *out = kInt32ToInt32;
-  } else if (ftrace == kFtraceInt32 && proto == kProtoInt64) {
+  } else if (ftrace == kFtraceInt32 && proto == ProtoSchemaType::kInt64) {
     *out = kInt32ToInt64;
-  } else if (ftrace == kFtraceInt64 && proto == kProtoInt64) {
+  } else if (ftrace == kFtraceInt64 && proto == ProtoSchemaType::kInt64) {
     *out = kInt64ToInt64;
-  } else if (ftrace == kFtraceFixedCString && proto == kProtoString) {
+  } else if (ftrace == kFtraceFixedCString &&
+             proto == ProtoSchemaType::kString) {
     *out = kFixedCStringToString;
-  } else if (ftrace == kFtraceCString && proto == kProtoString) {
+  } else if (ftrace == kFtraceCString && proto == ProtoSchemaType::kString) {
     *out = kCStringToString;
-  } else if (ftrace == kFtraceStringPtr && proto == kProtoString) {
+  } else if (ftrace == kFtraceStringPtr && proto == ProtoSchemaType::kString) {
     *out = kStringPtrToString;
-  } else if (ftrace == kFtraceBool && proto == kProtoUint32) {
+  } else if (ftrace == kFtraceBool && proto == ProtoSchemaType::kUint32) {
     *out = kBoolToUint32;
-  } else if (ftrace == kFtraceBool && proto == kProtoUint64) {
+  } else if (ftrace == kFtraceBool && proto == ProtoSchemaType::kUint64) {
     *out = kBoolToUint64;
-  } else if (ftrace == kFtraceDataLoc && proto == kProtoString) {
+  } else if (ftrace == kFtraceDataLoc && proto == ProtoSchemaType::kString) {
     *out = kDataLocToString;
   } else {
     PERFETTO_DLOG("No translation strategy for '%s' -> '%s'", ToString(ftrace),
-                  ToString(proto));
+                  ProtoSchemaToString(proto));
     return false;
   }
   return true;
diff --git a/src/traced/probes/ftrace/event_info_constants.h b/src/traced/probes/ftrace/event_info_constants.h
index a608aab..ef1e51d 100644
--- a/src/traced/probes/ftrace/event_info_constants.h
+++ b/src/traced/probes/ftrace/event_info_constants.h
@@ -23,27 +23,10 @@
 #include <vector>
 
 #include "perfetto/base/logging.h"
+#include "perfetto/protozero/proto_utils.h"
 
 namespace perfetto {
 
-enum ProtoFieldType {
-  kProtoDouble = 1,
-  kProtoFloat,
-  kProtoInt32,
-  kProtoInt64,
-  kProtoUint32,
-  kProtoUint64,
-  kProtoSint32,
-  kProtoSint64,
-  kProtoFixed32,
-  kProtoFixed64,
-  kProtoSfixed32,
-  kProtoSfixed64,
-  kProtoBool,
-  kProtoString,
-  kProtoBytes,
-};
-
 enum FtraceFieldType {
   kFtraceUint8 = 1,
   kFtraceUint16,
@@ -100,42 +83,6 @@
   kDataLocToString,
 };
 
-inline const char* ToString(ProtoFieldType v) {
-  switch (v) {
-    case kProtoDouble:
-      return "double";
-    case kProtoFloat:
-      return "float";
-    case kProtoInt32:
-      return "int32";
-    case kProtoInt64:
-      return "int64";
-    case kProtoUint32:
-      return "uint32";
-    case kProtoUint64:
-      return "uint64";
-    case kProtoSint32:
-      return "sint32";
-    case kProtoSint64:
-      return "sint64";
-    case kProtoFixed32:
-      return "fixed32";
-    case kProtoFixed64:
-      return "fixed64";
-    case kProtoSfixed32:
-      return "sfixed32";
-    case kProtoSfixed64:
-      return "sfixed64";
-    case kProtoBool:
-      return "bool";
-    case kProtoString:
-      return "string";
-    case kProtoBytes:
-      return "bytes";
-  }
-  PERFETTO_FATAL("Not reached");  // for gcc
-}
-
 inline const char* ToString(FtraceFieldType v) {
   switch (v) {
     case kFtraceUint8:
@@ -193,7 +140,7 @@
   const char* ftrace_name;
 
   uint32_t proto_field_id;
-  ProtoFieldType proto_field_type;
+  protozero::proto_utils::ProtoSchemaType proto_field_type;
 
   TranslationStrategy strategy;
 };
@@ -223,10 +170,12 @@
 std::vector<Field> GetStaticCommonFieldsInfo();
 
 bool SetTranslationStrategy(FtraceFieldType ftrace,
-                            ProtoFieldType proto,
+                            protozero::proto_utils::ProtoSchemaType proto,
                             TranslationStrategy* out);
 
-Field MakeField(const char* name, uint32_t id, ProtoFieldType type);
+Field MakeField(const char* name,
+                uint32_t id,
+                protozero::proto_utils::ProtoSchemaType type);
 
 }  // namespace perfetto
 
diff --git a/src/traced/probes/ftrace/event_info_unittest.cc b/src/traced/probes/ftrace/event_info_unittest.cc
index 5cf4449..76d3d78 100644
--- a/src/traced/probes/ftrace/event_info_unittest.cc
+++ b/src/traced/probes/ftrace/event_info_unittest.cc
@@ -15,11 +15,13 @@
  */
 
 #include "src/traced/probes/ftrace/event_info.h"
+#include "perfetto/protozero/proto_utils.h"
 
 #include "gtest/gtest.h"
 
 namespace perfetto {
 namespace {
+using protozero::proto_utils::ProtoSchemaType;
 
 TEST(EventInfoTest, GetStaticEventInfoSanityCheck) {
   std::vector<Event> events = GetStaticEventInfo();
@@ -40,7 +42,7 @@
       // Non-empty name, proto field id, and proto field type.
       ASSERT_TRUE(field.ftrace_name);
       ASSERT_TRUE(field.proto_field_id);
-      ASSERT_TRUE(field.proto_field_type);
+      ASSERT_TRUE(static_cast<int>(field.proto_field_type));
 
       // Other fields should be zeroed.
       ASSERT_FALSE(field.ftrace_offset);
@@ -57,7 +59,7 @@
     // Non-empty name, group, and proto field id.
     ASSERT_TRUE(field.ftrace_name);
     ASSERT_TRUE(field.proto_field_id);
-    ASSERT_TRUE(field.proto_field_type);
+    ASSERT_TRUE(static_cast<int>(field.proto_field_type));
 
     // Other fields should be zeroed.
     ASSERT_FALSE(field.ftrace_offset);
@@ -69,22 +71,29 @@
 
 TEST(EventInfoTest, SetTranslationStrategySanityCheck) {
   TranslationStrategy strategy = kUint32ToUint32;
-  ASSERT_FALSE(SetTranslationStrategy(kFtraceCString, kProtoUint64, &strategy));
+  ASSERT_FALSE(SetTranslationStrategy(kFtraceCString, ProtoSchemaType::kUint64,
+                                      &strategy));
   ASSERT_EQ(strategy, kUint32ToUint32);
-  ASSERT_TRUE(SetTranslationStrategy(kFtraceCString, kProtoString, &strategy));
+  ASSERT_TRUE(SetTranslationStrategy(kFtraceCString, ProtoSchemaType::kString,
+                                     &strategy));
   ASSERT_EQ(strategy, kCStringToString);
-  ASSERT_TRUE(SetTranslationStrategy(kFtracePid32, kProtoInt32, &strategy));
-  ASSERT_EQ(strategy, kPid32ToInt32);
-  ASSERT_TRUE(SetTranslationStrategy(kFtraceInode32, kProtoUint64, &strategy));
-  ASSERT_EQ(strategy, kInode32ToUint64);
-  ASSERT_TRUE(SetTranslationStrategy(kFtraceInode64, kProtoUint64, &strategy));
-  ASSERT_EQ(strategy, kInode64ToUint64);
-  ASSERT_TRUE(SetTranslationStrategy(kFtraceDevId32, kProtoUint64, &strategy));
-  ASSERT_EQ(strategy, kDevId32ToUint64);
-  ASSERT_TRUE(SetTranslationStrategy(kFtraceDevId64, kProtoUint64, &strategy));
-  ASSERT_EQ(strategy, kDevId64ToUint64);
   ASSERT_TRUE(
-      SetTranslationStrategy(kFtraceCommonPid32, kProtoInt32, &strategy));
+      SetTranslationStrategy(kFtracePid32, ProtoSchemaType::kInt32, &strategy));
+  ASSERT_EQ(strategy, kPid32ToInt32);
+  ASSERT_TRUE(SetTranslationStrategy(kFtraceInode32, ProtoSchemaType::kUint64,
+                                     &strategy));
+  ASSERT_EQ(strategy, kInode32ToUint64);
+  ASSERT_TRUE(SetTranslationStrategy(kFtraceInode64, ProtoSchemaType::kUint64,
+                                     &strategy));
+  ASSERT_EQ(strategy, kInode64ToUint64);
+  ASSERT_TRUE(SetTranslationStrategy(kFtraceDevId32, ProtoSchemaType::kUint64,
+                                     &strategy));
+  ASSERT_EQ(strategy, kDevId32ToUint64);
+  ASSERT_TRUE(SetTranslationStrategy(kFtraceDevId64, ProtoSchemaType::kUint64,
+                                     &strategy));
+  ASSERT_EQ(strategy, kDevId64ToUint64);
+  ASSERT_TRUE(SetTranslationStrategy(kFtraceCommonPid32,
+                                     ProtoSchemaType::kInt32, &strategy));
   ASSERT_EQ(strategy, kCommonPid32ToInt32);
 }
 
diff --git a/src/traced/probes/ftrace/proto_translation_table.cc b/src/traced/probes/ftrace/proto_translation_table.cc
index 27ec0f7..2e2400f 100644
--- a/src/traced/probes/ftrace/proto_translation_table.cc
+++ b/src/traced/probes/ftrace/proto_translation_table.cc
@@ -21,6 +21,7 @@
 #include <algorithm>
 
 #include "perfetto/base/string_utils.h"
+#include "perfetto/protozero/proto_utils.h"
 #include "src/traced/probes/ftrace/event_info.h"
 #include "src/traced/probes/ftrace/ftrace_procfs.h"
 
@@ -32,6 +33,7 @@
 
 namespace {
 
+using protozero::proto_utils::ProtoSchemaType;
 using protos::pbzero::GenericFtraceEvent;
 
 ProtoTranslationTable::FtracePageHeaderSpec MakeFtracePageHeaderSpec(
@@ -74,7 +76,7 @@
                     const char* event_name_for_debug) {
   PERFETTO_DCHECK(field->ftrace_name);
   PERFETTO_DCHECK(field->proto_field_id);
-  PERFETTO_DCHECK(field->proto_field_type);
+  PERFETTO_DCHECK(static_cast<int>(field->proto_field_type));
   PERFETTO_DCHECK(!field->ftrace_offset);
   PERFETTO_DCHECK(!field->ftrace_size);
   PERFETTO_DCHECK(!field->ftrace_type);
@@ -100,7 +102,7 @@
         "Failed to find translation strategy for ftrace field \"%s.%s\" (%s -> "
         "%s)",
         event_name_for_debug, field->ftrace_name, ToString(field->ftrace_type),
-        ToString(field->proto_field_type));
+        protozero::proto_utils::ProtoSchemaToString(field->proto_field_type));
     // TODO(hjd): Uncomment DCHECK when proto generation is fixed.
     // PERFETTO_DFATAL("Failed to find translation strategy");
     return false;
@@ -168,14 +170,14 @@
 
 // Set proto field type and id based on the ftrace type.
 void SetProtoType(FtraceFieldType ftrace_type,
-                  ProtoFieldType* proto_type,
+                  ProtoSchemaType* proto_type,
                   uint32_t* proto_field_id) {
   switch (ftrace_type) {
     case kFtraceCString:
     case kFtraceFixedCString:
     case kFtraceStringPtr:
     case kFtraceDataLoc:
-      *proto_type = kProtoString;
+      *proto_type = ProtoSchemaType::kString;
       *proto_field_id = GenericFtraceEvent::Field::kStrValueFieldNumber;
       break;
     case kFtraceInt8:
@@ -184,7 +186,7 @@
     case kFtracePid32:
     case kFtraceCommonPid32:
     case kFtraceInt64:
-      *proto_type = kProtoInt64;
+      *proto_type = ProtoSchemaType::kInt64;
       *proto_field_id = GenericFtraceEvent::Field::kIntValueFieldNumber;
       break;
     case kFtraceUint8:
@@ -196,7 +198,7 @@
     case kFtraceUint64:
     case kFtraceInode32:
     case kFtraceInode64:
-      *proto_type = kProtoUint64;
+      *proto_type = ProtoSchemaType::kUint64;
       *proto_field_id = GenericFtraceEvent::Field::kUintValueFieldNumber;
       break;
   }
diff --git a/src/traced/probes/ftrace/proto_translation_table_unittest.cc b/src/traced/probes/ftrace/proto_translation_table_unittest.cc
index 28afbe7..ece9bf1 100644
--- a/src/traced/probes/ftrace/proto_translation_table_unittest.cc
+++ b/src/traced/probes/ftrace/proto_translation_table_unittest.cc
@@ -36,6 +36,7 @@
 
 namespace perfetto {
 namespace {
+using protozero::proto_utils::ProtoSchemaType;
 
 class MockFtraceProcfs : public FtraceProcfs {
  public:
@@ -82,7 +83,7 @@
     for (const Field& field : event.fields) {
       EXPECT_TRUE(field.proto_field_id);
       EXPECT_TRUE(field.ftrace_type);
-      EXPECT_TRUE(field.proto_field_type);
+      EXPECT_TRUE(static_cast<int>(field.proto_field_type));
     }
   }
   ASSERT_EQ(table_->common_fields().size(), 1u);
@@ -95,7 +96,7 @@
     EXPECT_TRUE(event);
     EXPECT_EQ(std::string(event->name), "print");
     EXPECT_EQ(std::string(event->group), "ftrace");
-    EXPECT_EQ(event->fields.at(1).proto_field_type, kProtoString);
+    EXPECT_EQ(event->fields.at(1).proto_field_type, ProtoSchemaType::kString);
     EXPECT_EQ(event->fields.at(1).ftrace_type, kFtraceCString);
     EXPECT_EQ(event->fields.at(1).strategy, kCStringToString);
   }
@@ -187,7 +188,7 @@
       event->fields.emplace_back(Field{});
       Field* field = &event->fields.back();
       field->proto_field_id = 501;
-      field->proto_field_type = kProtoString;
+      field->proto_field_type = ProtoSchemaType::kString;
       field->ftrace_name = "field_a";
     }
 
@@ -196,7 +197,7 @@
       event->fields.emplace_back(Field{});
       Field* field = &event->fields.back();
       field->proto_field_id = 502;
-      field->proto_field_type = kProtoString;
+      field->proto_field_type = ProtoSchemaType::kString;
       field->ftrace_name = "field_b";
     }
 
@@ -205,7 +206,7 @@
       event->fields.emplace_back(Field{});
       Field* field = &event->fields.back();
       field->proto_field_id = 503;
-      field->proto_field_type = kProtoString;
+      field->proto_field_type = ProtoSchemaType::kString;
       field->ftrace_name = "field_c";
     }
 
@@ -214,7 +215,7 @@
       event->fields.emplace_back(Field{});
       Field* field = &event->fields.back();
       field->proto_field_id = 504;
-      field->proto_field_type = kProtoUint64;
+      field->proto_field_type = ProtoSchemaType::kUint64;
       field->ftrace_name = "field_e";
     }
   }
@@ -414,7 +415,7 @@
   EXPECT_STREQ(str_field.ftrace_name, "field_a");
   EXPECT_EQ(str_field.proto_field_id,
             protos::pbzero::GenericFtraceEvent::Field::kStrValueFieldNumber);
-  EXPECT_EQ(str_field.proto_field_type, kProtoString);
+  EXPECT_EQ(str_field.proto_field_type, ProtoSchemaType::kString);
   EXPECT_EQ(str_field.ftrace_type, kFtraceFixedCString);
   EXPECT_EQ(str_field.ftrace_size, 16);
   EXPECT_EQ(str_field.ftrace_offset, 8);
@@ -424,7 +425,7 @@
   EXPECT_STREQ(bool_field.ftrace_name, "field_b");
   EXPECT_EQ(bool_field.proto_field_id,
             protos::pbzero::GenericFtraceEvent::Field::kUintValueFieldNumber);
-  EXPECT_EQ(bool_field.proto_field_type, kProtoUint64);
+  EXPECT_EQ(bool_field.proto_field_type, ProtoSchemaType::kUint64);
   EXPECT_EQ(bool_field.ftrace_type, kFtraceBool);
   EXPECT_EQ(bool_field.ftrace_size, 1);
   EXPECT_EQ(bool_field.ftrace_offset, 24);
@@ -434,7 +435,7 @@
   EXPECT_STREQ(int_field.ftrace_name, "field_c");
   EXPECT_EQ(int_field.proto_field_id,
             protos::pbzero::GenericFtraceEvent::Field::kIntValueFieldNumber);
-  EXPECT_EQ(int_field.proto_field_type, kProtoInt64);
+  EXPECT_EQ(int_field.proto_field_type, ProtoSchemaType::kInt64);
   EXPECT_EQ(int_field.ftrace_type, kFtraceInt32);
   EXPECT_EQ(int_field.ftrace_size, 4);
   EXPECT_EQ(int_field.ftrace_offset, 25);
@@ -444,7 +445,7 @@
   EXPECT_STREQ(uint_field.ftrace_name, "field_d");
   EXPECT_EQ(uint_field.proto_field_id,
             protos::pbzero::GenericFtraceEvent::Field::kUintValueFieldNumber);
-  EXPECT_EQ(uint_field.proto_field_type, kProtoUint64);
+  EXPECT_EQ(uint_field.proto_field_type, ProtoSchemaType::kUint64);
   EXPECT_EQ(uint_field.ftrace_type, kFtraceUint32);
   EXPECT_EQ(uint_field.ftrace_size, 4);
   EXPECT_EQ(uint_field.ftrace_offset, 33);
diff --git a/tools/ftrace_proto_gen/BUILD.gn b/tools/ftrace_proto_gen/BUILD.gn
index eedabd2..1f8d2e5 100644
--- a/tools/ftrace_proto_gen/BUILD.gn
+++ b/tools/ftrace_proto_gen/BUILD.gn
@@ -30,6 +30,8 @@
   sources = [
     "ftrace_proto_gen.cc",
     "ftrace_proto_gen.h",
+    "proto_gen_utils.cc",
+    "proto_gen_utils.h",
   ]
   deps = [
     "../../gn:default_deps",
diff --git a/tools/ftrace_proto_gen/ftrace_proto_gen.cc b/tools/ftrace_proto_gen/ftrace_proto_gen.cc
index a86d760..72dcbf8 100644
--- a/tools/ftrace_proto_gen/ftrace_proto_gen.cc
+++ b/tools/ftrace_proto_gen/ftrace_proto_gen.cc
@@ -27,219 +27,12 @@
 #include "perfetto/base/logging.h"
 #include "perfetto/base/pipe.h"
 #include "perfetto/base/string_splitter.h"
+#include "perfetto/base/string_utils.h"
 
 namespace perfetto {
 
-namespace {
-
-bool StartsWith(const std::string& str, const std::string& prefix) {
-  return str.compare(0, prefix.length(), prefix) == 0;
-}
-
-bool EndsWith(const std::string& str, const std::string& pattern) {
-  return str.rfind(pattern) == str.size() - pattern.size();
-}
-
-bool Contains(const std::string& haystack, const std::string& needle) {
-  return haystack.find(needle) != std::string::npos;
-}
-
-std::string RunClangFmt(const std::string& input) {
-  std::string output;
-  pid_t pid;
-  base::Pipe input_pipe = base::Pipe::Create(base::Pipe::kBothNonBlock);
-  base::Pipe output_pipe = base::Pipe::Create(base::Pipe::kBothNonBlock);
-  if ((pid = fork()) == 0) {
-    // Child
-    PERFETTO_CHECK(dup2(*input_pipe.rd, STDIN_FILENO) != -1);
-    PERFETTO_CHECK(dup2(*output_pipe.wr, STDOUT_FILENO) != -1);
-    input_pipe.wr.reset();
-    output_pipe.rd.reset();
-    PERFETTO_CHECK(execl("buildtools/linux64/clang-format", "clang-format",
-                         nullptr) != -1);
-  }
-  PERFETTO_CHECK(pid > 0);
-  // Parent
-  size_t written = 0;
-  size_t bytes_read = 0;
-  input_pipe.rd.reset();
-  output_pipe.wr.reset();
-  // This cannot be left uninitialized because there's as continue statement
-  // before the first assignment to this in the loop.
-  ssize_t r = -1;
-  do {
-    if (written < input.size()) {
-      ssize_t w =
-          write(*input_pipe.wr, &(input[written]), input.size() - written);
-      if (w == -1) {
-        if (errno == EAGAIN || errno == EINTR)
-          continue;
-        PERFETTO_FATAL("write failed");
-      }
-      written += static_cast<size_t>(w);
-      if (written == input.size())
-        input_pipe.wr.reset();
-    }
-
-    if (bytes_read + base::kPageSize > output.size())
-      output.resize(output.size() + base::kPageSize);
-    r = read(*output_pipe.rd, &(output[bytes_read]), base::kPageSize);
-    if (r == -1) {
-      if (errno == EAGAIN || errno == EINTR)
-        continue;
-      PERFETTO_FATAL("read failed");
-    }
-    if (r > 0)
-      bytes_read += static_cast<size_t>(r);
-  } while (r != 0);
-  output.resize(bytes_read);
-
-  int wstatus;
-  waitpid(pid, &wstatus, 0);
-  PERFETTO_CHECK(WIFEXITED(wstatus) && WEXITSTATUS(wstatus) == 0);
-  return output;
-}
-
-}  // namespace
-
-VerifyStream::VerifyStream(std::string filename)
-    : filename_(std::move(filename)) {
-  PERFETTO_CHECK(base::ReadFile(filename_, &expected_));
-}
-
-VerifyStream::~VerifyStream() {
-  std::string tidied = str();
-  if (EndsWith(filename_, "cc") || EndsWith(filename_, "proto"))
-    tidied = RunClangFmt(str());
-  if (expected_ != tidied) {
-    PERFETTO_FATAL("%s is out of date. Please run tools/run_ftrace_proto_gen.",
-                   filename_.c_str());
-  }
-}
-
-FtraceEventName::FtraceEventName(const std::string& full_name) {
-  if (full_name.rfind("removed", 0) != std::string::npos) {
-    valid_ = false;
-    return;
-  }
-  name_ = full_name.substr(full_name.find('/') + 1, std::string::npos);
-  group_ = full_name.substr(0, full_name.find('/'));
-  valid_ = true;
-}
-
-bool FtraceEventName::valid() const {
-  return valid_;
-}
-
-const std::string& FtraceEventName::name() const {
-  PERFETTO_CHECK(valid_);
-  return name_;
-}
-
-const std::string& FtraceEventName::group() const {
-  PERFETTO_CHECK(valid_);
-  return group_;
-}
-
-std::string ToCamelCase(const std::string& s) {
-  std::string result;
-  result.reserve(s.size());
-  bool upperCaseNextChar = true;
-  for (size_t i = 0; i < s.size(); i++) {
-    char c = s[i];
-    if (c == '_') {
-      upperCaseNextChar = true;
-      continue;
-    }
-    if (upperCaseNextChar) {
-      upperCaseNextChar = false;
-      c = static_cast<char>(toupper(c));
-    }
-    result.push_back(c);
-  }
-  return result;
-}
-
-ProtoType ProtoType::GetSigned() const {
-  PERFETTO_CHECK(type == NUMERIC);
-  if (is_signed)
-    return *this;
-
-  if (size == 64) {
-    return Numeric(64, true);
-  }
-
-  return Numeric(2 * size, true);
-}
-
-std::string ProtoType::ToString() const {
-  switch (type) {
-    case INVALID:
-      PERFETTO_FATAL("Invalid proto type");
-    case STRING:
-      return "string";
-    case NUMERIC: {
-      std::string s;
-      if (!is_signed)
-        s += "u";
-      s += "int";
-      s += std::to_string(size);
-      return s;
-    }
-  }
-  PERFETTO_FATAL("Not reached");  // for GCC.
-}
-
-// static
-ProtoType ProtoType::String() {
-  return {STRING, 0, false};
-}
-
-// static
-ProtoType ProtoType::Invalid() {
-  return {INVALID, 0, false};
-}
-
-// static
-ProtoType ProtoType::Numeric(uint16_t size, bool is_signed) {
-  PERFETTO_CHECK(size == 32 || size == 64);
-  return {NUMERIC, size, is_signed};
-}
-
-// static
-ProtoType ProtoType::FromDescriptor(
-    google::protobuf::FieldDescriptor::Type type) {
-  if (type == google::protobuf::FieldDescriptor::Type::TYPE_UINT64)
-    return Numeric(64, false);
-
-  if (type == google::protobuf::FieldDescriptor::Type::TYPE_INT64)
-    return Numeric(64, true);
-
-  if (type == google::protobuf::FieldDescriptor::Type::TYPE_UINT32)
-    return Numeric(32, false);
-
-  if (type == google::protobuf::FieldDescriptor::Type::TYPE_INT32)
-    return Numeric(32, true);
-
-  if (type == google::protobuf::FieldDescriptor::Type::TYPE_STRING)
-    return String();
-
-  return Invalid();
-}
-
-ProtoType GetCommon(ProtoType one, ProtoType other) {
-  // Always need to prefer the LHS as it is the one already present
-  // in the proto.
-  if (one.type == ProtoType::STRING)
-    return ProtoType::String();
-
-  if (one.is_signed || other.is_signed) {
-    one = one.GetSigned();
-    other = other.GetSigned();
-  }
-
-  return ProtoType::Numeric(std::max(one.size, other.size), one.is_signed);
-}
+using base::StartsWith;
+using base::Contains;
 
 std::vector<FtraceEventName> ReadWhitelist(const std::string& filename) {
   std::string line;
@@ -257,42 +50,6 @@
   return lines;
 }
 
-ProtoType InferProtoType(const FtraceEvent::Field& field) {
-  // Fixed length strings: "char foo[16]"
-  if (std::regex_match(field.type_and_name, std::regex(R"(char \w+\[\d+\])")))
-    return ProtoType::String();
-
-  // String pointers: "__data_loc char[] foo" (as in
-  // 'cpufreq_interactive_boost').
-  if (Contains(field.type_and_name, "char[] "))
-    return ProtoType::String();
-  if (Contains(field.type_and_name, "char * "))
-    return ProtoType::String();
-
-  // Variable length strings: "char* foo"
-  if (StartsWith(field.type_and_name, "char *"))
-    return ProtoType::String();
-
-  // Variable length strings: "char foo" + size: 0 (as in 'print').
-  if (StartsWith(field.type_and_name, "char ") && field.size == 0)
-    return ProtoType::String();
-
-  // ino_t, i_ino and dev_t are 32bit on some devices 64bit on others. For the
-  // protos we need to choose the largest possible size.
-  if (StartsWith(field.type_and_name, "ino_t ") ||
-      StartsWith(field.type_and_name, "i_ino ") ||
-      StartsWith(field.type_and_name, "dev_t ")) {
-    return ProtoType::Numeric(64, /* is_signed= */ false);
-  }
-
-  // Ints of various sizes:
-  if (field.size <= 4)
-    return ProtoType::Numeric(32, field.is_signed);
-  if (field.size <= 8)
-    return ProtoType::Numeric(64, field.is_signed);
-  return ProtoType::Invalid();
-}
-
 void PrintEventFormatterMain(const std::set<std::string>& events) {
   printf(
       "\nAdd output to FormatEventText in "
@@ -445,7 +202,7 @@
 
   for (const auto& field : proto.SortedFields()) {
     s += "    event->fields.push_back(MakeField(\"" + field->name + "\", " +
-         std::to_string(field->number) + ", kProto" +
+         std::to_string(field->number) + ", ProtoSchemaType::k" +
          ToCamelCase(field->type.ToString()) + "));\n";
   }
   return s;
@@ -458,10 +215,13 @@
   s += std::string("// ") + __FILE__ + "\n";
   s += "// Do not edit.\n";
   s += R"(
+#include "perfetto/protozero/proto_utils.h"
 #include "src/traced/probes/ftrace/event_info.h"
 
 namespace perfetto {
 
+using protozero::proto_utils::ProtoSchemaType;
+
 std::vector<Event> GetStaticEventInfo() {
   std::vector<Event> events;
 )";
@@ -485,60 +245,6 @@
   *fout << s;
 }
 
-Proto::Proto(std::string evt_name, const google::protobuf::Descriptor& desc)
-    : name(desc.name()), event_name(evt_name) {
-  for (int i = 0; i < desc.field_count(); ++i) {
-    const google::protobuf::FieldDescriptor* field = desc.field(i);
-    PERFETTO_CHECK(field);
-    AddField(Field{ProtoType::FromDescriptor(field->type()), field->name(),
-                   uint32_t(field->number())});
-  }
-}
-
-std::vector<const Proto::Field*> Proto::SortedFields() {
-  std::vector<const Proto::Field*> sorted_fields;
-
-  for (const auto& p : fields) {
-    sorted_fields.emplace_back(&p.second);
-  }
-  std::sort(sorted_fields.begin(), sorted_fields.end(),
-            [](const Proto::Field* a, const Proto::Field* b) {
-              return a->number < b->number;
-            });
-  return sorted_fields;
-}
-
-std::string Proto::ToString() {
-  std::string s;
-  s += "message " + name + " {\n";
-  for (const auto field : SortedFields()) {
-    s += "  optional " + field->type.ToString() + " " + field->name + " = " +
-         std::to_string(field->number) + ";\n";
-  }
-  s += "}\n";
-  return s;
-}
-
-void Proto::MergeFrom(const Proto& other) {
-  // Always keep number from the left hand side.
-  PERFETTO_CHECK(name == other.name);
-  for (const auto& p : other.fields) {
-    auto it = fields.find(p.first);
-    if (it == fields.end()) {
-      Proto::Field field = p.second;
-      field.number = ++max_id;
-      AddField(std::move(field));
-    } else {
-      it->second.type = GetCommon(it->second.type, p.second.type);
-    }
-  }
-}
-
-void Proto::AddField(Proto::Field other) {
-  max_id = std::max(max_id, other.number);
-  fields.emplace(other.name, std::move(other));
-}
-
 std::string ProtoHeader() {
   std::string s = "// Autogenerated by:\n";
   s += std::string("// ") + __FILE__ + "\n";
diff --git a/tools/ftrace_proto_gen/ftrace_proto_gen.h b/tools/ftrace_proto_gen/ftrace_proto_gen.h
index 5fdd679..3934dcb 100644
--- a/tools/ftrace_proto_gen/ftrace_proto_gen.h
+++ b/tools/ftrace_proto_gen/ftrace_proto_gen.h
@@ -25,69 +25,10 @@
 #include <vector>
 
 #include "src/traced/probes/ftrace/format_parser.h"
+#include "tools/ftrace_proto_gen/proto_gen_utils.h"
 
 namespace perfetto {
 
-class VerifyStream : public std::ostringstream {
- public:
-  VerifyStream(std::string filename);
-  virtual ~VerifyStream();
-
- private:
-  std::string filename_;
-  std::string expected_;
-};
-
-class FtraceEventName {
- public:
-  explicit FtraceEventName(const std::string& full_name);
-
-  bool valid() const;
-  const std::string& name() const;
-  const std::string& group() const;
-
- private:
-  bool valid_;
-  std::string name_;
-  std::string group_;
-};
-
-struct ProtoType {
-  enum Type { INVALID, NUMERIC, STRING };
-  Type type;
-  uint16_t size;
-  bool is_signed;
-
-  ProtoType GetSigned() const;
-  std::string ToString() const;
-
-  static ProtoType Invalid();
-  static ProtoType String();
-  static ProtoType Numeric(uint16_t size, bool is_signed);
-  static ProtoType FromDescriptor(google::protobuf::FieldDescriptor::Type type);
-};
-
-struct Proto {
-  Proto() = default;
-  Proto(std::string evt_name, const google::protobuf::Descriptor& desc);
-  struct Field {
-    ProtoType type;
-    std::string name;
-    uint32_t number;
-  };
-  std::string name;
-  std::string event_name;
-  std::map<std::string, Field> fields;
-
-  std::string ToString();
-  void MergeFrom(const Proto& other);
-  void AddField(Proto::Field field);
-  std::vector<const Field*> SortedFields();
-  uint32_t max_id = 0;
-};
-
-std::string ToCamelCase(const std::string& s);
-ProtoType GetCommon(ProtoType one, ProtoType other);
 void PrintFtraceEventProtoAdditions(const std::set<std::string>& events);
 void PrintEventFormatterMain(const std::set<std::string>& events);
 void PrintEventFormatterUsingStatements(const std::set<std::string>& events);
@@ -95,9 +36,6 @@
 void PrintInodeHandlerMain(const std::string& event_name,
                            const perfetto::Proto& proto);
 
-bool GenerateProto(const FtraceEvent& format, Proto* proto_out);
-ProtoType InferProtoType(const FtraceEvent::Field& field);
-
 std::vector<FtraceEventName> ReadWhitelist(const std::string& filename);
 void GenerateFtraceEventProto(const std::vector<FtraceEventName>& raw_whitelist,
                               const std::set<std::string>& groups,
diff --git a/tools/ftrace_proto_gen/proto_gen_utils.cc b/tools/ftrace_proto_gen/proto_gen_utils.cc
new file mode 100644
index 0000000..9e9f34e
--- /dev/null
+++ b/tools/ftrace_proto_gen/proto_gen_utils.cc
@@ -0,0 +1,327 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "tools/ftrace_proto_gen/proto_gen_utils.h"
+
+#include <fcntl.h>
+#include <sys/wait.h>
+#include <unistd.h>
+#include <algorithm>
+#include <fstream>
+#include <regex>
+
+#include "perfetto/base/file_utils.h"
+#include "perfetto/base/logging.h"
+#include "perfetto/base/pipe.h"
+#include "perfetto/base/string_splitter.h"
+#include "perfetto/base/string_utils.h"
+
+namespace perfetto {
+
+namespace {
+
+std::string RunClangFmt(const std::string& input) {
+  std::string output;
+  pid_t pid;
+  base::Pipe input_pipe = base::Pipe::Create(base::Pipe::kBothNonBlock);
+  base::Pipe output_pipe = base::Pipe::Create(base::Pipe::kBothNonBlock);
+  if ((pid = fork()) == 0) {
+    // Child
+    PERFETTO_CHECK(dup2(*input_pipe.rd, STDIN_FILENO) != -1);
+    PERFETTO_CHECK(dup2(*output_pipe.wr, STDOUT_FILENO) != -1);
+    input_pipe.wr.reset();
+    output_pipe.rd.reset();
+    PERFETTO_CHECK(execl("buildtools/linux64/clang-format", "clang-format",
+                         nullptr) != -1);
+  }
+  PERFETTO_CHECK(pid > 0);
+  // Parent
+  size_t written = 0;
+  size_t bytes_read = 0;
+  input_pipe.rd.reset();
+  output_pipe.wr.reset();
+  // This cannot be left uninitialized because there's as continue statement
+  // before the first assignment to this in the loop.
+  ssize_t r = -1;
+  do {
+    if (written < input.size()) {
+      ssize_t w =
+          write(*input_pipe.wr, &(input[written]), input.size() - written);
+      if (w == -1) {
+        if (errno == EAGAIN || errno == EINTR)
+          continue;
+        PERFETTO_FATAL("write failed");
+      }
+      written += static_cast<size_t>(w);
+      if (written == input.size())
+        input_pipe.wr.reset();
+    }
+
+    if (bytes_read + base::kPageSize > output.size())
+      output.resize(output.size() + base::kPageSize);
+    r = read(*output_pipe.rd, &(output[bytes_read]), base::kPageSize);
+    if (r == -1) {
+      if (errno == EAGAIN || errno == EINTR)
+        continue;
+      PERFETTO_FATAL("read failed");
+    }
+    if (r > 0)
+      bytes_read += static_cast<size_t>(r);
+  } while (r != 0);
+  output.resize(bytes_read);
+
+  int wstatus;
+  waitpid(pid, &wstatus, 0);
+  PERFETTO_CHECK(WIFEXITED(wstatus) && WEXITSTATUS(wstatus) == 0);
+  return output;
+}
+
+}  // namespace
+
+using base::EndsWith;
+using base::StartsWith;
+using base::Contains;
+
+VerifyStream::VerifyStream(std::string filename)
+    : filename_(std::move(filename)) {
+  PERFETTO_CHECK(base::ReadFile(filename_, &expected_));
+}
+
+VerifyStream::~VerifyStream() {
+  std::string tidied = str();
+  if (EndsWith(filename_, "cc") || EndsWith(filename_, "proto"))
+    tidied = RunClangFmt(str());
+  if (expected_ != tidied) {
+    PERFETTO_FATAL("%s is out of date. Please run tools/run_ftrace_proto_gen.",
+                   filename_.c_str());
+  }
+}
+
+FtraceEventName::FtraceEventName(const std::string& full_name) {
+  if (full_name.rfind("removed", 0) != std::string::npos) {
+    valid_ = false;
+    return;
+  }
+  name_ = full_name.substr(full_name.find('/') + 1, std::string::npos);
+  group_ = full_name.substr(0, full_name.find('/'));
+  valid_ = true;
+}
+
+bool FtraceEventName::valid() const {
+  return valid_;
+}
+
+const std::string& FtraceEventName::name() const {
+  PERFETTO_CHECK(valid_);
+  return name_;
+}
+
+const std::string& FtraceEventName::group() const {
+  PERFETTO_CHECK(valid_);
+  return group_;
+}
+
+std::string ToCamelCase(const std::string& s) {
+  std::string result;
+  result.reserve(s.size());
+  bool upperCaseNextChar = true;
+  for (size_t i = 0; i < s.size(); i++) {
+    char c = s[i];
+    if (c == '_') {
+      upperCaseNextChar = true;
+      continue;
+    }
+    if (upperCaseNextChar) {
+      upperCaseNextChar = false;
+      c = static_cast<char>(toupper(c));
+    }
+    result.push_back(c);
+  }
+  return result;
+}
+
+ProtoType ProtoType::GetSigned() const {
+  PERFETTO_CHECK(type == NUMERIC);
+  if (is_signed)
+    return *this;
+
+  if (size == 64) {
+    return Numeric(64, true);
+  }
+
+  return Numeric(2 * size, true);
+}
+
+std::string ProtoType::ToString() const {
+  switch (type) {
+    case INVALID:
+      PERFETTO_CHECK(false);
+    case STRING:
+      return "string";
+    case NUMERIC: {
+      std::string s;
+      if (!is_signed)
+        s += "u";
+      s += "int";
+      s += std::to_string(size);
+      return s;
+    }
+  }
+  PERFETTO_CHECK(false);  // for GCC.
+}
+
+// static
+ProtoType ProtoType::String() {
+  return {STRING, 0, false};
+}
+
+// static
+ProtoType ProtoType::Invalid() {
+  return {INVALID, 0, false};
+}
+
+// static
+ProtoType ProtoType::Numeric(uint16_t size, bool is_signed) {
+  PERFETTO_CHECK(size == 32 || size == 64);
+  return {NUMERIC, size, is_signed};
+}
+
+// static
+ProtoType ProtoType::FromDescriptor(
+    google::protobuf::FieldDescriptor::Type type) {
+  if (type == google::protobuf::FieldDescriptor::Type::TYPE_UINT64)
+    return Numeric(64, false);
+
+  if (type == google::protobuf::FieldDescriptor::Type::TYPE_INT64)
+    return Numeric(64, true);
+
+  if (type == google::protobuf::FieldDescriptor::Type::TYPE_UINT32)
+    return Numeric(32, false);
+
+  if (type == google::protobuf::FieldDescriptor::Type::TYPE_INT32)
+    return Numeric(32, true);
+
+  if (type == google::protobuf::FieldDescriptor::Type::TYPE_STRING)
+    return String();
+
+  return Invalid();
+}
+
+ProtoType GetCommon(ProtoType one, ProtoType other) {
+  // Always need to prefer the LHS as it is the one already present
+  // in the proto.
+  if (one.type == ProtoType::STRING)
+    return ProtoType::String();
+
+  if (one.is_signed || other.is_signed) {
+    one = one.GetSigned();
+    other = other.GetSigned();
+  }
+
+  return ProtoType::Numeric(std::max(one.size, other.size), one.is_signed);
+}
+
+ProtoType InferProtoType(const FtraceEvent::Field& field) {
+  // Fixed length strings: "char foo[16]"
+  if (std::regex_match(field.type_and_name, std::regex(R"(char \w+\[\d+\])")))
+    return ProtoType::String();
+
+  // String pointers: "__data_loc char[] foo" (as in
+  // 'cpufreq_interactive_boost').
+  if (Contains(field.type_and_name, "char[] "))
+    return ProtoType::String();
+  if (Contains(field.type_and_name, "char * "))
+    return ProtoType::String();
+
+  // Variable length strings: "char* foo"
+  if (StartsWith(field.type_and_name, "char *"))
+    return ProtoType::String();
+
+  // Variable length strings: "char foo" + size: 0 (as in 'print').
+  if (StartsWith(field.type_and_name, "char ") && field.size == 0)
+    return ProtoType::String();
+
+  // ino_t, i_ino and dev_t are 32bit on some devices 64bit on others. For the
+  // protos we need to choose the largest possible size.
+  if (StartsWith(field.type_and_name, "ino_t ") ||
+      StartsWith(field.type_and_name, "i_ino ") ||
+      StartsWith(field.type_and_name, "dev_t ")) {
+    return ProtoType::Numeric(64, /* is_signed= */ false);
+  }
+
+  // Ints of various sizes:
+  if (field.size <= 4)
+    return ProtoType::Numeric(32, field.is_signed);
+  if (field.size <= 8)
+    return ProtoType::Numeric(64, field.is_signed);
+  return ProtoType::Invalid();
+}
+
+Proto::Proto(std::string evt_name, const google::protobuf::Descriptor& desc)
+    : name(desc.name()), event_name(evt_name) {
+  for (int i = 0; i < desc.field_count(); ++i) {
+    const google::protobuf::FieldDescriptor* field = desc.field(i);
+    PERFETTO_CHECK(field);
+    AddField(Field{ProtoType::FromDescriptor(field->type()), field->name(),
+                   uint32_t(field->number())});
+  }
+}
+
+std::vector<const Proto::Field*> Proto::SortedFields() {
+  std::vector<const Proto::Field*> sorted_fields;
+
+  for (const auto& p : fields) {
+    sorted_fields.emplace_back(&p.second);
+  }
+  std::sort(sorted_fields.begin(), sorted_fields.end(),
+            [](const Proto::Field* a, const Proto::Field* b) {
+              return a->number < b->number;
+            });
+  return sorted_fields;
+}
+
+std::string Proto::ToString() {
+  std::string s;
+  s += "message " + name + " {\n";
+  for (const auto field : SortedFields()) {
+    s += "  optional " + field->type.ToString() + " " + field->name + " = " +
+         std::to_string(field->number) + ";\n";
+  }
+  s += "}\n";
+  return s;
+}
+
+void Proto::MergeFrom(const Proto& other) {
+  // Always keep number from the left hand side.
+  PERFETTO_CHECK(name == other.name);
+  for (const auto& p : other.fields) {
+    auto it = fields.find(p.first);
+    if (it == fields.end()) {
+      Proto::Field field = p.second;
+      field.number = ++max_id;
+      AddField(std::move(field));
+    } else {
+      it->second.type = GetCommon(it->second.type, p.second.type);
+    }
+  }
+}
+
+void Proto::AddField(Proto::Field other) {
+  max_id = std::max(max_id, other.number);
+  fields.emplace(other.name, std::move(other));
+}
+
+}  // namespace perfetto
diff --git a/tools/ftrace_proto_gen/proto_gen_utils.h b/tools/ftrace_proto_gen/proto_gen_utils.h
new file mode 100644
index 0000000..2d558ca
--- /dev/null
+++ b/tools/ftrace_proto_gen/proto_gen_utils.h
@@ -0,0 +1,98 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef TOOLS_FTRACE_PROTO_GEN_PROTO_GEN_UTILS_H_
+#define TOOLS_FTRACE_PROTO_GEN_PROTO_GEN_UTILS_H_
+
+#include <map>
+#include <set>
+#include <sstream>
+#include <string>
+#include <vector>
+
+#include <google/protobuf/descriptor.h>
+
+#include "src/traced/probes/ftrace/format_parser.h"
+
+namespace perfetto {
+
+class VerifyStream : public std::ostringstream {
+ public:
+  VerifyStream(std::string filename);
+  virtual ~VerifyStream();
+
+ private:
+  std::string filename_;
+  std::string expected_;
+};
+
+class FtraceEventName {
+ public:
+  explicit FtraceEventName(const std::string& full_name);
+
+  bool valid() const;
+  const std::string& name() const;
+  const std::string& group() const;
+
+ private:
+  bool valid_;
+  std::string name_;
+  std::string group_;
+};
+
+struct ProtoType {
+  enum Type { INVALID, NUMERIC, STRING };
+  Type type;
+  uint16_t size;
+  bool is_signed;
+
+  ProtoType GetSigned() const;
+  std::string ToString() const;
+
+  static ProtoType Invalid();
+  static ProtoType String();
+  static ProtoType Numeric(uint16_t size, bool is_signed);
+  static ProtoType FromDescriptor(google::protobuf::FieldDescriptor::Type type);
+};
+
+struct Proto {
+  Proto() = default;
+  Proto(std::string evt_name, const google::protobuf::Descriptor& desc);
+  struct Field {
+    ProtoType type;
+    std::string name;
+    uint32_t number;
+  };
+  std::string name;
+  std::string event_name;
+  std::map<std::string, Field> fields;
+
+  std::string ToString();
+  void MergeFrom(const Proto& other);
+  void AddField(Proto::Field field);
+  std::vector<const Field*> SortedFields();
+  uint32_t max_id = 0;
+};
+
+std::string ToCamelCase(const std::string& s);
+ProtoType GetCommon(ProtoType one, ProtoType other);
+std::string ProtoHeader();
+bool GenerateProto(const FtraceEvent& format, Proto* proto_out);
+ProtoType InferProtoType(const FtraceEvent::Field& field);
+
+}  // namespace perfetto
+
+#endif  // TOOLS_FTRACE_PROTO_GEN_PROTO_GEN_UTILS_H_