// Copyright 2016 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "garnet/bin/ktrace_provider/tags.h"

#include <mutex>

#include <lib/zircon-internal/ktrace.h>

namespace ktrace_provider {
namespace {

#define TAG_TYPE_16B TagType::kBasic
#define TAG_TYPE_32B TagType::kQuad
#define TAG_TYPE_NAME TagType::kName
#define KTRACE_DEF(num, type, name, group) \
  {num, KTRACE_GRP_##group, TAG_TYPE_##type, #name},

constexpr TagInfo kTags[] = {
#include <lib/zircon-internal/ktrace-def.h>
};

std::once_flag g_tags_once;
TagMap g_tags;

}  // namespace

const TagMap& GetTags() {
  std::call_once(g_tags_once, [] {
    for (const auto& item : kTags) {
      g_tags.emplace(item.num, item);
    }
  });
  return g_tags;
}

}  // namespace ktrace_provider
