// Autogenerated by:
// ../../tools/ftrace_proto_gen/ftrace_proto_gen.cc
// 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;

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "binder_transaction";
    event->group = "binder";
    event->proto_field_id = 50;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "binder_transaction_received";
    event->group = "binder";
    event->proto_field_id = 51;
    event->fields.push_back(MakeField("debug_id", 1, ProtoSchemaType::kInt32));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "binder_set_priority";
    event->group = "binder";
    event->proto_field_id = 52;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "binder_lock";
    event->group = "binder";
    event->proto_field_id = 53;
    event->fields.push_back(MakeField("tag", 1, ProtoSchemaType::kString));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "binder_locked";
    event->group = "binder";
    event->proto_field_id = 54;
    event->fields.push_back(MakeField("tag", 1, ProtoSchemaType::kString));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "binder_unlock";
    event->group = "binder";
    event->proto_field_id = 55;
    event->fields.push_back(MakeField("tag", 1, ProtoSchemaType::kString));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "binder_transaction_alloc_buf";
    event->group = "binder";
    event->proto_field_id = 323;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "block_rq_issue";
    event->group = "block";
    event->proto_field_id = 45;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "block_bio_backmerge";
    event->group = "block";
    event->proto_field_id = 115;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "block_bio_bounce";
    event->group = "block";
    event->proto_field_id = 116;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "block_bio_complete";
    event->group = "block";
    event->proto_field_id = 117;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "block_bio_frontmerge";
    event->group = "block";
    event->proto_field_id = 118;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "block_bio_queue";
    event->group = "block";
    event->proto_field_id = 119;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "block_bio_remap";
    event->group = "block";
    event->proto_field_id = 120;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "block_dirty_buffer";
    event->group = "block";
    event->proto_field_id = 121;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "block_getrq";
    event->group = "block";
    event->proto_field_id = 122;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "block_plug";
    event->group = "block";
    event->proto_field_id = 123;
    event->fields.push_back(MakeField("comm", 1, ProtoSchemaType::kString));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "block_rq_abort";
    event->group = "block";
    event->proto_field_id = 124;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "block_rq_complete";
    event->group = "block";
    event->proto_field_id = 125;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "block_rq_insert";
    event->group = "block";
    event->proto_field_id = 126;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "block_rq_remap";
    event->group = "block";
    event->proto_field_id = 128;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "block_rq_requeue";
    event->group = "block";
    event->proto_field_id = 129;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "block_sleeprq";
    event->group = "block";
    event->proto_field_id = 130;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "block_split";
    event->group = "block";
    event->proto_field_id = 131;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "block_touch_buffer";
    event->group = "block";
    event->proto_field_id = 132;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "block_unplug";
    event->group = "block";
    event->proto_field_id = 133;
    event->fields.push_back(MakeField("nr_rq", 1, ProtoSchemaType::kInt32));
    event->fields.push_back(MakeField("comm", 2, ProtoSchemaType::kString));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "cgroup_attach_task";
    event->group = "cgroup";
    event->proto_field_id = 67;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "cgroup_mkdir";
    event->group = "cgroup";
    event->proto_field_id = 68;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "cgroup_remount";
    event->group = "cgroup";
    event->proto_field_id = 69;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "cgroup_rmdir";
    event->group = "cgroup";
    event->proto_field_id = 70;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "cgroup_transfer_tasks";
    event->group = "cgroup";
    event->proto_field_id = 71;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "cgroup_destroy_root";
    event->group = "cgroup";
    event->proto_field_id = 72;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "cgroup_release";
    event->group = "cgroup";
    event->proto_field_id = 73;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "cgroup_rename";
    event->group = "cgroup";
    event->proto_field_id = 74;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "cgroup_setup_root";
    event->group = "cgroup";
    event->proto_field_id = 75;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "clk_enable";
    event->group = "clk";
    event->proto_field_id = 320;
    event->fields.push_back(MakeField("name", 1, ProtoSchemaType::kString));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "clk_disable";
    event->group = "clk";
    event->proto_field_id = 321;
    event->fields.push_back(MakeField("name", 1, ProtoSchemaType::kString));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "clk_set_rate";
    event->group = "clk";
    event->proto_field_id = 322;
    event->fields.push_back(MakeField("name", 1, ProtoSchemaType::kString));
    event->fields.push_back(MakeField("rate", 2, ProtoSchemaType::kUint64));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "mm_compaction_begin";
    event->group = "compaction";
    event->proto_field_id = 99;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "mm_compaction_defer_compaction";
    event->group = "compaction";
    event->proto_field_id = 100;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "mm_compaction_deferred";
    event->group = "compaction";
    event->proto_field_id = 101;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "mm_compaction_defer_reset";
    event->group = "compaction";
    event->proto_field_id = 102;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "mm_compaction_end";
    event->group = "compaction";
    event->proto_field_id = 103;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "mm_compaction_finished";
    event->group = "compaction";
    event->proto_field_id = 104;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "mm_compaction_isolate_freepages";
    event->group = "compaction";
    event->proto_field_id = 105;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "mm_compaction_isolate_migratepages";
    event->group = "compaction";
    event->proto_field_id = 106;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "mm_compaction_kcompactd_sleep";
    event->group = "compaction";
    event->proto_field_id = 107;
    event->fields.push_back(MakeField("nid", 1, ProtoSchemaType::kInt32));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "mm_compaction_kcompactd_wake";
    event->group = "compaction";
    event->proto_field_id = 108;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "mm_compaction_migratepages";
    event->group = "compaction";
    event->proto_field_id = 109;
    event->fields.push_back(
        MakeField("nr_migrated", 1, ProtoSchemaType::kUint64));
    event->fields.push_back(
        MakeField("nr_failed", 2, ProtoSchemaType::kUint64));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "mm_compaction_suitable";
    event->group = "compaction";
    event->proto_field_id = 110;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "mm_compaction_try_to_compact_pages";
    event->group = "compaction";
    event->proto_field_id = 111;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "mm_compaction_wakeup_kcompactd";
    event->group = "compaction";
    event->proto_field_id = 112;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_da_write_begin";
    event->group = "ext4";
    event->proto_field_id = 41;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_da_write_end";
    event->group = "ext4";
    event->proto_field_id = 42;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_sync_file_enter";
    event->group = "ext4";
    event->proto_field_id = 43;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_sync_file_exit";
    event->group = "ext4";
    event->proto_field_id = 44;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_alloc_da_blocks";
    event->group = "ext4";
    event->proto_field_id = 134;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_allocate_blocks";
    event->group = "ext4";
    event->proto_field_id = 135;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_allocate_inode";
    event->group = "ext4";
    event->proto_field_id = 136;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_begin_ordered_truncate";
    event->group = "ext4";
    event->proto_field_id = 137;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_collapse_range";
    event->group = "ext4";
    event->proto_field_id = 138;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_da_release_space";
    event->group = "ext4";
    event->proto_field_id = 139;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_da_reserve_space";
    event->group = "ext4";
    event->proto_field_id = 140;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_da_update_reserve_space";
    event->group = "ext4";
    event->proto_field_id = 141;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_da_write_pages";
    event->group = "ext4";
    event->proto_field_id = 142;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_da_write_pages_extent";
    event->group = "ext4";
    event->proto_field_id = 143;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_direct_IO_enter";
    event->group = "ext4";
    event->proto_field_id = 144;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_direct_IO_exit";
    event->group = "ext4";
    event->proto_field_id = 145;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_discard_blocks";
    event->group = "ext4";
    event->proto_field_id = 146;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_discard_preallocations";
    event->group = "ext4";
    event->proto_field_id = 147;
    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_drop_inode";
    event->group = "ext4";
    event->proto_field_id = 148;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_es_cache_extent";
    event->group = "ext4";
    event->proto_field_id = 149;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_es_find_delayed_extent_range_enter";
    event->group = "ext4";
    event->proto_field_id = 150;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_es_find_delayed_extent_range_exit";
    event->group = "ext4";
    event->proto_field_id = 151;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_es_insert_extent";
    event->group = "ext4";
    event->proto_field_id = 152;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_es_lookup_extent_enter";
    event->group = "ext4";
    event->proto_field_id = 153;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_es_lookup_extent_exit";
    event->group = "ext4";
    event->proto_field_id = 154;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_es_remove_extent";
    event->group = "ext4";
    event->proto_field_id = 155;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_es_shrink";
    event->group = "ext4";
    event->proto_field_id = 156;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_es_shrink_count";
    event->group = "ext4";
    event->proto_field_id = 157;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_es_shrink_scan_enter";
    event->group = "ext4";
    event->proto_field_id = 158;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_es_shrink_scan_exit";
    event->group = "ext4";
    event->proto_field_id = 159;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_evict_inode";
    event->group = "ext4";
    event->proto_field_id = 160;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_ext_convert_to_initialized_enter";
    event->group = "ext4";
    event->proto_field_id = 161;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_ext_convert_to_initialized_fastpath";
    event->group = "ext4";
    event->proto_field_id = 162;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_ext_handle_unwritten_extents";
    event->group = "ext4";
    event->proto_field_id = 163;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_ext_in_cache";
    event->group = "ext4";
    event->proto_field_id = 164;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_ext_load_extent";
    event->group = "ext4";
    event->proto_field_id = 165;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_ext_map_blocks_enter";
    event->group = "ext4";
    event->proto_field_id = 166;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_ext_map_blocks_exit";
    event->group = "ext4";
    event->proto_field_id = 167;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_ext_put_in_cache";
    event->group = "ext4";
    event->proto_field_id = 168;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_ext_remove_space";
    event->group = "ext4";
    event->proto_field_id = 169;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_ext_remove_space_done";
    event->group = "ext4";
    event->proto_field_id = 170;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_ext_rm_idx";
    event->group = "ext4";
    event->proto_field_id = 171;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_ext_rm_leaf";
    event->group = "ext4";
    event->proto_field_id = 172;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_ext_show_extent";
    event->group = "ext4";
    event->proto_field_id = 173;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_fallocate_enter";
    event->group = "ext4";
    event->proto_field_id = 174;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_fallocate_exit";
    event->group = "ext4";
    event->proto_field_id = 175;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_find_delalloc_range";
    event->group = "ext4";
    event->proto_field_id = 176;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_forget";
    event->group = "ext4";
    event->proto_field_id = 177;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_free_blocks";
    event->group = "ext4";
    event->proto_field_id = 178;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_free_inode";
    event->group = "ext4";
    event->proto_field_id = 179;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_get_implied_cluster_alloc_exit";
    event->group = "ext4";
    event->proto_field_id = 180;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_get_reserved_cluster_alloc";
    event->group = "ext4";
    event->proto_field_id = 181;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_ind_map_blocks_enter";
    event->group = "ext4";
    event->proto_field_id = 182;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_ind_map_blocks_exit";
    event->group = "ext4";
    event->proto_field_id = 183;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_insert_range";
    event->group = "ext4";
    event->proto_field_id = 184;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_invalidatepage";
    event->group = "ext4";
    event->proto_field_id = 185;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_journal_start";
    event->group = "ext4";
    event->proto_field_id = 186;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_journal_start_reserved";
    event->group = "ext4";
    event->proto_field_id = 187;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_journalled_invalidatepage";
    event->group = "ext4";
    event->proto_field_id = 188;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_journalled_write_end";
    event->group = "ext4";
    event->proto_field_id = 189;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_load_inode";
    event->group = "ext4";
    event->proto_field_id = 190;
    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
    event->fields.push_back(MakeField("ino", 2, ProtoSchemaType::kUint64));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_load_inode_bitmap";
    event->group = "ext4";
    event->proto_field_id = 191;
    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
    event->fields.push_back(MakeField("group", 2, ProtoSchemaType::kUint32));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_mark_inode_dirty";
    event->group = "ext4";
    event->proto_field_id = 192;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_mb_bitmap_load";
    event->group = "ext4";
    event->proto_field_id = 193;
    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
    event->fields.push_back(MakeField("group", 2, ProtoSchemaType::kUint32));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_mb_buddy_bitmap_load";
    event->group = "ext4";
    event->proto_field_id = 194;
    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
    event->fields.push_back(MakeField("group", 2, ProtoSchemaType::kUint32));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_mb_discard_preallocations";
    event->group = "ext4";
    event->proto_field_id = 195;
    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
    event->fields.push_back(MakeField("needed", 2, ProtoSchemaType::kInt32));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_mb_new_group_pa";
    event->group = "ext4";
    event->proto_field_id = 196;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_mb_new_inode_pa";
    event->group = "ext4";
    event->proto_field_id = 197;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_mb_release_group_pa";
    event->group = "ext4";
    event->proto_field_id = 198;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_mb_release_inode_pa";
    event->group = "ext4";
    event->proto_field_id = 199;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_mballoc_alloc";
    event->group = "ext4";
    event->proto_field_id = 200;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_mballoc_discard";
    event->group = "ext4";
    event->proto_field_id = 201;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_mballoc_free";
    event->group = "ext4";
    event->proto_field_id = 202;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_mballoc_prealloc";
    event->group = "ext4";
    event->proto_field_id = 203;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_other_inode_update_time";
    event->group = "ext4";
    event->proto_field_id = 204;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_punch_hole";
    event->group = "ext4";
    event->proto_field_id = 205;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_read_block_bitmap_load";
    event->group = "ext4";
    event->proto_field_id = 206;
    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
    event->fields.push_back(MakeField("group", 2, ProtoSchemaType::kUint32));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_readpage";
    event->group = "ext4";
    event->proto_field_id = 207;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_releasepage";
    event->group = "ext4";
    event->proto_field_id = 208;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_remove_blocks";
    event->group = "ext4";
    event->proto_field_id = 209;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_request_blocks";
    event->group = "ext4";
    event->proto_field_id = 210;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_request_inode";
    event->group = "ext4";
    event->proto_field_id = 211;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_sync_fs";
    event->group = "ext4";
    event->proto_field_id = 212;
    event->fields.push_back(MakeField("dev", 1, ProtoSchemaType::kUint64));
    event->fields.push_back(MakeField("wait", 2, ProtoSchemaType::kInt32));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_trim_all_free";
    event->group = "ext4";
    event->proto_field_id = 213;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_trim_extent";
    event->group = "ext4";
    event->proto_field_id = 214;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_truncate_enter";
    event->group = "ext4";
    event->proto_field_id = 215;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_truncate_exit";
    event->group = "ext4";
    event->proto_field_id = 216;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_unlink_enter";
    event->group = "ext4";
    event->proto_field_id = 217;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_unlink_exit";
    event->group = "ext4";
    event->proto_field_id = 218;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_write_begin";
    event->group = "ext4";
    event->proto_field_id = 219;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_write_end";
    event->group = "ext4";
    event->proto_field_id = 230;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_writepage";
    event->group = "ext4";
    event->proto_field_id = 231;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_writepages";
    event->group = "ext4";
    event->proto_field_id = 232;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_writepages_result";
    event->group = "ext4";
    event->proto_field_id = 233;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ext4_zero_range";
    event->group = "ext4";
    event->proto_field_id = 234;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "f2fs_do_submit_bio";
    event->group = "f2fs";
    event->proto_field_id = 243;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "f2fs_evict_inode";
    event->group = "f2fs";
    event->proto_field_id = 244;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "f2fs_fallocate";
    event->group = "f2fs";
    event->proto_field_id = 245;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "f2fs_get_data_block";
    event->group = "f2fs";
    event->proto_field_id = 246;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "f2fs_get_victim";
    event->group = "f2fs";
    event->proto_field_id = 247;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "f2fs_iget";
    event->group = "f2fs";
    event->proto_field_id = 248;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "f2fs_iget_exit";
    event->group = "f2fs";
    event->proto_field_id = 249;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "f2fs_new_inode";
    event->group = "f2fs";
    event->proto_field_id = 250;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "f2fs_readpage";
    event->group = "f2fs";
    event->proto_field_id = 251;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "f2fs_reserve_new_block";
    event->group = "f2fs";
    event->proto_field_id = 252;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "f2fs_set_page_dirty";
    event->group = "f2fs";
    event->proto_field_id = 253;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "f2fs_submit_write_page";
    event->group = "f2fs";
    event->proto_field_id = 254;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "f2fs_sync_file_enter";
    event->group = "f2fs";
    event->proto_field_id = 255;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "f2fs_sync_file_exit";
    event->group = "f2fs";
    event->proto_field_id = 256;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "f2fs_sync_fs";
    event->group = "f2fs";
    event->proto_field_id = 257;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "f2fs_truncate";
    event->group = "f2fs";
    event->proto_field_id = 258;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "f2fs_truncate_blocks_enter";
    event->group = "f2fs";
    event->proto_field_id = 259;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "f2fs_truncate_blocks_exit";
    event->group = "f2fs";
    event->proto_field_id = 260;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "f2fs_truncate_data_blocks_range";
    event->group = "f2fs";
    event->proto_field_id = 261;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "f2fs_truncate_inode_blocks_enter";
    event->group = "f2fs";
    event->proto_field_id = 262;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "f2fs_truncate_inode_blocks_exit";
    event->group = "f2fs";
    event->proto_field_id = 263;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "f2fs_truncate_node";
    event->group = "f2fs";
    event->proto_field_id = 264;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "f2fs_truncate_nodes_enter";
    event->group = "f2fs";
    event->proto_field_id = 265;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "f2fs_truncate_nodes_exit";
    event->group = "f2fs";
    event->proto_field_id = 266;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "f2fs_truncate_partial_nodes";
    event->group = "f2fs";
    event->proto_field_id = 267;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "f2fs_unlink_enter";
    event->group = "f2fs";
    event->proto_field_id = 268;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "f2fs_unlink_exit";
    event->group = "f2fs";
    event->proto_field_id = 269;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "f2fs_vm_page_mkwrite";
    event->group = "f2fs";
    event->proto_field_id = 270;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "f2fs_write_begin";
    event->group = "f2fs";
    event->proto_field_id = 271;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "f2fs_write_checkpoint";
    event->group = "f2fs";
    event->proto_field_id = 272;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "f2fs_write_end";
    event->group = "f2fs";
    event->proto_field_id = 273;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "fence_init";
    event->group = "fence";
    event->proto_field_id = 316;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "fence_destroy";
    event->group = "fence";
    event->proto_field_id = 317;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "fence_enable_signal";
    event->group = "fence";
    event->proto_field_id = 318;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "fence_signaled";
    event->group = "fence";
    event->proto_field_id = 319;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "mm_filemap_add_to_page_cache";
    event->group = "filemap";
    event->proto_field_id = 97;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "mm_filemap_delete_from_page_cache";
    event->group = "filemap";
    event->proto_field_id = 98;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "print";
    event->group = "ftrace";
    event->proto_field_id = 3;
    event->fields.push_back(MakeField("ip", 1, ProtoSchemaType::kUint64));
    event->fields.push_back(MakeField("buf", 2, ProtoSchemaType::kString));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "i2c_read";
    event->group = "i2c";
    event->proto_field_id = 27;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "i2c_write";
    event->group = "i2c";
    event->proto_field_id = 28;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "i2c_result";
    event->group = "i2c";
    event->proto_field_id = 29;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "i2c_reply";
    event->group = "i2c";
    event->proto_field_id = 30;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "smbus_read";
    event->group = "i2c";
    event->proto_field_id = 31;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "smbus_write";
    event->group = "i2c";
    event->proto_field_id = 32;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "smbus_result";
    event->group = "i2c";
    event->proto_field_id = 33;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "smbus_reply";
    event->group = "i2c";
    event->proto_field_id = 34;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ipi_entry";
    event->group = "ipi";
    event->proto_field_id = 21;
    event->fields.push_back(MakeField("reason", 1, ProtoSchemaType::kString));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ipi_exit";
    event->group = "ipi";
    event->proto_field_id = 22;
    event->fields.push_back(MakeField("reason", 1, ProtoSchemaType::kString));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ipi_raise";
    event->group = "ipi";
    event->proto_field_id = 23;
    event->fields.push_back(
        MakeField("target_cpus", 1, ProtoSchemaType::kUint32));
    event->fields.push_back(MakeField("reason", 2, ProtoSchemaType::kString));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "softirq_entry";
    event->group = "irq";
    event->proto_field_id = 24;
    event->fields.push_back(MakeField("vec", 1, ProtoSchemaType::kUint32));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "softirq_exit";
    event->group = "irq";
    event->proto_field_id = 25;
    event->fields.push_back(MakeField("vec", 1, ProtoSchemaType::kUint32));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "softirq_raise";
    event->group = "irq";
    event->proto_field_id = 26;
    event->fields.push_back(MakeField("vec", 1, ProtoSchemaType::kUint32));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "irq_handler_entry";
    event->group = "irq";
    event->proto_field_id = 36;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "irq_handler_exit";
    event->group = "irq";
    event->proto_field_id = 37;
    event->fields.push_back(MakeField("irq", 1, ProtoSchemaType::kInt32));
    event->fields.push_back(MakeField("ret", 2, ProtoSchemaType::kInt32));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "alloc_pages_iommu_end";
    event->group = "kmem";
    event->proto_field_id = 274;
    event->fields.push_back(
        MakeField("gfp_flags", 1, ProtoSchemaType::kUint32));
    event->fields.push_back(MakeField("order", 2, ProtoSchemaType::kUint32));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "alloc_pages_iommu_fail";
    event->group = "kmem";
    event->proto_field_id = 275;
    event->fields.push_back(
        MakeField("gfp_flags", 1, ProtoSchemaType::kUint32));
    event->fields.push_back(MakeField("order", 2, ProtoSchemaType::kUint32));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "alloc_pages_iommu_start";
    event->group = "kmem";
    event->proto_field_id = 276;
    event->fields.push_back(
        MakeField("gfp_flags", 1, ProtoSchemaType::kUint32));
    event->fields.push_back(MakeField("order", 2, ProtoSchemaType::kUint32));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "alloc_pages_sys_end";
    event->group = "kmem";
    event->proto_field_id = 277;
    event->fields.push_back(
        MakeField("gfp_flags", 1, ProtoSchemaType::kUint32));
    event->fields.push_back(MakeField("order", 2, ProtoSchemaType::kUint32));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "alloc_pages_sys_fail";
    event->group = "kmem";
    event->proto_field_id = 278;
    event->fields.push_back(
        MakeField("gfp_flags", 1, ProtoSchemaType::kUint32));
    event->fields.push_back(MakeField("order", 2, ProtoSchemaType::kUint32));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "alloc_pages_sys_start";
    event->group = "kmem";
    event->proto_field_id = 279;
    event->fields.push_back(
        MakeField("gfp_flags", 1, ProtoSchemaType::kUint32));
    event->fields.push_back(MakeField("order", 2, ProtoSchemaType::kUint32));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "dma_alloc_contiguous_retry";
    event->group = "kmem";
    event->proto_field_id = 280;
    event->fields.push_back(MakeField("tries", 1, ProtoSchemaType::kInt32));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "iommu_map_range";
    event->group = "kmem";
    event->proto_field_id = 281;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "iommu_sec_ptbl_map_range_end";
    event->group = "kmem";
    event->proto_field_id = 282;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "iommu_sec_ptbl_map_range_start";
    event->group = "kmem";
    event->proto_field_id = 283;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ion_alloc_buffer_end";
    event->group = "kmem";
    event->proto_field_id = 284;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ion_alloc_buffer_fail";
    event->group = "kmem";
    event->proto_field_id = 285;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ion_alloc_buffer_fallback";
    event->group = "kmem";
    event->proto_field_id = 286;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ion_alloc_buffer_start";
    event->group = "kmem";
    event->proto_field_id = 287;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ion_cp_alloc_retry";
    event->group = "kmem";
    event->proto_field_id = 288;
    event->fields.push_back(MakeField("tries", 1, ProtoSchemaType::kInt32));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ion_cp_secure_buffer_end";
    event->group = "kmem";
    event->proto_field_id = 289;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ion_cp_secure_buffer_start";
    event->group = "kmem";
    event->proto_field_id = 290;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ion_prefetching";
    event->group = "kmem";
    event->proto_field_id = 291;
    event->fields.push_back(MakeField("len", 1, ProtoSchemaType::kUint64));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    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, ProtoSchemaType::kUint32));
    event->fields.push_back(MakeField("len", 2, ProtoSchemaType::kUint64));
    event->fields.push_back(
        MakeField("pool_total", 3, ProtoSchemaType::kInt32));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    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, ProtoSchemaType::kUint32));
    event->fields.push_back(MakeField("len", 2, ProtoSchemaType::kUint64));
    event->fields.push_back(
        MakeField("pool_total", 3, ProtoSchemaType::kInt32));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ion_secure_cma_allocate_end";
    event->group = "kmem";
    event->proto_field_id = 294;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ion_secure_cma_allocate_start";
    event->group = "kmem";
    event->proto_field_id = 295;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ion_secure_cma_shrink_pool_end";
    event->group = "kmem";
    event->proto_field_id = 296;
    event->fields.push_back(
        MakeField("drained_size", 1, ProtoSchemaType::kUint64));
    event->fields.push_back(
        MakeField("skipped_size", 2, ProtoSchemaType::kUint64));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ion_secure_cma_shrink_pool_start";
    event->group = "kmem";
    event->proto_field_id = 297;
    event->fields.push_back(
        MakeField("drained_size", 1, ProtoSchemaType::kUint64));
    event->fields.push_back(
        MakeField("skipped_size", 2, ProtoSchemaType::kUint64));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "kfree";
    event->group = "kmem";
    event->proto_field_id = 298;
    event->fields.push_back(
        MakeField("call_site", 1, ProtoSchemaType::kUint64));
    event->fields.push_back(MakeField("ptr", 2, ProtoSchemaType::kUint64));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "kmalloc";
    event->group = "kmem";
    event->proto_field_id = 299;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "kmalloc_node";
    event->group = "kmem";
    event->proto_field_id = 300;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "kmem_cache_alloc";
    event->group = "kmem";
    event->proto_field_id = 301;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "kmem_cache_alloc_node";
    event->group = "kmem";
    event->proto_field_id = 302;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "kmem_cache_free";
    event->group = "kmem";
    event->proto_field_id = 303;
    event->fields.push_back(
        MakeField("call_site", 1, ProtoSchemaType::kUint64));
    event->fields.push_back(MakeField("ptr", 2, ProtoSchemaType::kUint64));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "migrate_pages_end";
    event->group = "kmem";
    event->proto_field_id = 304;
    event->fields.push_back(MakeField("mode", 1, ProtoSchemaType::kInt32));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "migrate_pages_start";
    event->group = "kmem";
    event->proto_field_id = 305;
    event->fields.push_back(MakeField("mode", 1, ProtoSchemaType::kInt32));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "migrate_retry";
    event->group = "kmem";
    event->proto_field_id = 306;
    event->fields.push_back(MakeField("tries", 1, ProtoSchemaType::kInt32));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "mm_page_alloc";
    event->group = "kmem";
    event->proto_field_id = 307;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "mm_page_alloc_extfrag";
    event->group = "kmem";
    event->proto_field_id = 308;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "mm_page_alloc_zone_locked";
    event->group = "kmem";
    event->proto_field_id = 309;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "mm_page_free";
    event->group = "kmem";
    event->proto_field_id = 310;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "mm_page_free_batched";
    event->group = "kmem";
    event->proto_field_id = 311;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "mm_page_pcpu_drain";
    event->group = "kmem";
    event->proto_field_id = 312;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "rss_stat";
    event->group = "kmem";
    event->proto_field_id = 313;
    event->fields.push_back(MakeField("member", 1, ProtoSchemaType::kInt32));
    event->fields.push_back(MakeField("size", 2, ProtoSchemaType::kInt64));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ion_heap_shrink";
    event->group = "kmem";
    event->proto_field_id = 314;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "ion_heap_grow";
    event->group = "kmem";
    event->proto_field_id = 315;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "lowmemory_kill";
    event->group = "lowmemorykiller";
    event->proto_field_id = 35;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "mdp_cmd_kickoff";
    event->group = "mdss";
    event->proto_field_id = 76;
    event->fields.push_back(MakeField("ctl_num", 1, ProtoSchemaType::kUint32));
    event->fields.push_back(
        MakeField("kickoff_cnt", 2, ProtoSchemaType::kInt32));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "mdp_commit";
    event->group = "mdss";
    event->proto_field_id = 77;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "mdp_perf_set_ot";
    event->group = "mdss";
    event->proto_field_id = 78;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "mdp_sspp_change";
    event->group = "mdss";
    event->proto_field_id = 79;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "tracing_mark_write";
    event->group = "mdss";
    event->proto_field_id = 80;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "mdp_cmd_pingpong_done";
    event->group = "mdss";
    event->proto_field_id = 81;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "mdp_compare_bw";
    event->group = "mdss";
    event->proto_field_id = 82;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "mdp_perf_set_panic_luts";
    event->group = "mdss";
    event->proto_field_id = 83;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "mdp_sspp_set";
    event->group = "mdss";
    event->proto_field_id = 84;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "mdp_cmd_readptr_done";
    event->group = "mdss";
    event->proto_field_id = 85;
    event->fields.push_back(MakeField("ctl_num", 1, ProtoSchemaType::kUint32));
    event->fields.push_back(MakeField("koff_cnt", 2, ProtoSchemaType::kInt32));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "mdp_misr_crc";
    event->group = "mdss";
    event->proto_field_id = 86;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "mdp_perf_set_qos_luts";
    event->group = "mdss";
    event->proto_field_id = 87;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "mdp_trace_counter";
    event->group = "mdss";
    event->proto_field_id = 88;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "mdp_cmd_release_bw";
    event->group = "mdss";
    event->proto_field_id = 89;
    event->fields.push_back(MakeField("ctl_num", 1, ProtoSchemaType::kUint32));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "mdp_mixer_update";
    event->group = "mdss";
    event->proto_field_id = 90;
    event->fields.push_back(
        MakeField("mixer_num", 1, ProtoSchemaType::kUint32));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "mdp_perf_set_wm_levels";
    event->group = "mdss";
    event->proto_field_id = 91;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "mdp_video_underrun_done";
    event->group = "mdss";
    event->proto_field_id = 92;
    event->fields.push_back(MakeField("ctl_num", 1, ProtoSchemaType::kUint32));
    event->fields.push_back(
        MakeField("underrun_cnt", 2, ProtoSchemaType::kUint32));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "mdp_cmd_wait_pingpong";
    event->group = "mdss";
    event->proto_field_id = 93;
    event->fields.push_back(MakeField("ctl_num", 1, ProtoSchemaType::kUint32));
    event->fields.push_back(
        MakeField("kickoff_cnt", 2, ProtoSchemaType::kInt32));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "mdp_perf_prefill_calc";
    event->group = "mdss";
    event->proto_field_id = 94;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "mdp_perf_update_bus";
    event->group = "mdss";
    event->proto_field_id = 95;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "rotator_bw_ao_as_context";
    event->group = "mdss";
    event->proto_field_id = 96;
    event->fields.push_back(MakeField("state", 1, ProtoSchemaType::kUint32));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "mm_event_record";
    event->group = "mm_event";
    event->proto_field_id = 328;
    event->fields.push_back(MakeField("avg_lat", 1, ProtoSchemaType::kUint32));
    event->fields.push_back(MakeField("count", 2, ProtoSchemaType::kUint32));
    event->fields.push_back(MakeField("max_lat", 3, ProtoSchemaType::kUint32));
    event->fields.push_back(MakeField("type", 4, ProtoSchemaType::kUint32));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "oom_score_adj_update";
    event->group = "oom";
    event->proto_field_id = 326;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "cpu_frequency";
    event->group = "power";
    event->proto_field_id = 11;
    event->fields.push_back(MakeField("state", 1, ProtoSchemaType::kUint32));
    event->fields.push_back(MakeField("cpu_id", 2, ProtoSchemaType::kUint32));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "cpu_frequency_limits";
    event->group = "power";
    event->proto_field_id = 12;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "cpu_idle";
    event->group = "power";
    event->proto_field_id = 13;
    event->fields.push_back(MakeField("state", 1, ProtoSchemaType::kUint32));
    event->fields.push_back(MakeField("cpu_id", 2, ProtoSchemaType::kUint32));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "clock_enable";
    event->group = "power";
    event->proto_field_id = 14;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "clock_disable";
    event->group = "power";
    event->proto_field_id = 15;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "clock_set_rate";
    event->group = "power";
    event->proto_field_id = 16;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "suspend_resume";
    event->group = "power";
    event->proto_field_id = 113;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "gpu_frequency";
    event->group = "power";
    event->proto_field_id = 332;
    event->fields.push_back(MakeField("gpu_id", 1, ProtoSchemaType::kUint32));
    event->fields.push_back(MakeField("state", 2, ProtoSchemaType::kUint32));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "sys_enter";
    event->group = "raw_syscalls";
    event->proto_field_id = 329;
    event->fields.push_back(MakeField("id", 1, ProtoSchemaType::kInt64));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "sys_exit";
    event->group = "raw_syscalls";
    event->proto_field_id = 330;
    event->fields.push_back(MakeField("id", 1, ProtoSchemaType::kInt64));
    event->fields.push_back(MakeField("ret", 2, ProtoSchemaType::kInt64));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "regulator_disable";
    event->group = "regulator";
    event->proto_field_id = 60;
    event->fields.push_back(MakeField("name", 1, ProtoSchemaType::kString));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "regulator_disable_complete";
    event->group = "regulator";
    event->proto_field_id = 61;
    event->fields.push_back(MakeField("name", 1, ProtoSchemaType::kString));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "regulator_enable";
    event->group = "regulator";
    event->proto_field_id = 62;
    event->fields.push_back(MakeField("name", 1, ProtoSchemaType::kString));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "regulator_enable_complete";
    event->group = "regulator";
    event->proto_field_id = 63;
    event->fields.push_back(MakeField("name", 1, ProtoSchemaType::kString));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "regulator_enable_delay";
    event->group = "regulator";
    event->proto_field_id = 64;
    event->fields.push_back(MakeField("name", 1, ProtoSchemaType::kString));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "regulator_set_voltage";
    event->group = "regulator";
    event->proto_field_id = 65;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "regulator_set_voltage_complete";
    event->group = "regulator";
    event->proto_field_id = 66;
    event->fields.push_back(MakeField("name", 1, ProtoSchemaType::kString));
    event->fields.push_back(MakeField("val", 2, ProtoSchemaType::kUint32));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "sched_switch";
    event->group = "sched";
    event->proto_field_id = 4;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "sched_wakeup";
    event->group = "sched";
    event->proto_field_id = 17;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "sched_blocked_reason";
    event->group = "sched";
    event->proto_field_id = 18;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "sched_cpu_hotplug";
    event->group = "sched";
    event->proto_field_id = 19;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "sched_waking";
    event->group = "sched";
    event->proto_field_id = 20;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "sched_wakeup_new";
    event->group = "sched";
    event->proto_field_id = 114;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "sched_process_exec";
    event->group = "sched";
    event->proto_field_id = 237;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "sched_process_exit";
    event->group = "sched";
    event->proto_field_id = 238;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "sched_process_fork";
    event->group = "sched";
    event->proto_field_id = 239;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "sched_process_free";
    event->group = "sched";
    event->proto_field_id = 240;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "sched_process_hang";
    event->group = "sched";
    event->proto_field_id = 241;
    event->fields.push_back(MakeField("comm", 1, ProtoSchemaType::kString));
    event->fields.push_back(MakeField("pid", 2, ProtoSchemaType::kInt32));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "sched_process_wait";
    event->group = "sched";
    event->proto_field_id = 242;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "signal_deliver";
    event->group = "signal";
    event->proto_field_id = 324;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "signal_generate";
    event->group = "signal";
    event->proto_field_id = 325;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "sync_pt";
    event->group = "sync";
    event->proto_field_id = 38;
    event->fields.push_back(MakeField("timeline", 1, ProtoSchemaType::kString));
    event->fields.push_back(MakeField("value", 2, ProtoSchemaType::kString));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "sync_timeline";
    event->group = "sync";
    event->proto_field_id = 39;
    event->fields.push_back(MakeField("name", 1, ProtoSchemaType::kString));
    event->fields.push_back(MakeField("value", 2, ProtoSchemaType::kString));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "sync_wait";
    event->group = "sync";
    event->proto_field_id = 40;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "0";
    event->group = "systrace";
    event->proto_field_id = 331;
    event->fields.push_back(MakeField("flag", 1, ProtoSchemaType::kInt32));
    event->fields.push_back(MakeField("name", 2, ProtoSchemaType::kString));
    event->fields.push_back(MakeField("pid", 3, ProtoSchemaType::kInt32));
    event->fields.push_back(MakeField("value", 4, ProtoSchemaType::kInt64));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "task_newtask";
    event->group = "task";
    event->proto_field_id = 235;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "task_rename";
    event->group = "task";
    event->proto_field_id = 236;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "mm_vmscan_direct_reclaim_begin";
    event->group = "vmscan";
    event->proto_field_id = 46;
    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));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "mm_vmscan_direct_reclaim_end";
    event->group = "vmscan";
    event->proto_field_id = 47;
    event->fields.push_back(
        MakeField("nr_reclaimed", 1, ProtoSchemaType::kUint64));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "mm_vmscan_kswapd_wake";
    event->group = "vmscan";
    event->proto_field_id = 48;
    event->fields.push_back(MakeField("nid", 1, ProtoSchemaType::kInt32));
    event->fields.push_back(MakeField("order", 2, ProtoSchemaType::kInt32));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "mm_vmscan_kswapd_sleep";
    event->group = "vmscan";
    event->proto_field_id = 49;
    event->fields.push_back(MakeField("nid", 1, ProtoSchemaType::kInt32));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "workqueue_activate_work";
    event->group = "workqueue";
    event->proto_field_id = 56;
    event->fields.push_back(MakeField("work", 1, ProtoSchemaType::kUint64));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "workqueue_execute_end";
    event->group = "workqueue";
    event->proto_field_id = 57;
    event->fields.push_back(MakeField("work", 1, ProtoSchemaType::kUint64));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "workqueue_execute_start";
    event->group = "workqueue";
    event->proto_field_id = 58;
    event->fields.push_back(MakeField("work", 1, ProtoSchemaType::kUint64));
    event->fields.push_back(MakeField("function", 2, ProtoSchemaType::kUint64));
  }

  {
    events.emplace_back(Event{});
    Event* event = &events.back();
    event->name = "workqueue_queue_work";
    event->group = "workqueue";
    event->proto_field_id = 59;
    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;
}

}  // namespace perfetto
