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

#ifndef CRASH_REPORTER_KERNEL_UTIL_H_
#define CRASH_REPORTER_KERNEL_UTIL_H_

#include <string>

#include "crash-reporter/crash_collector.h"

namespace kernel_util {

// Enumeration to specify architecture type.
enum ArchKind {
  kArchUnknown,
  kArchArm,
  kArchMips,
  kArchX86,
  kArchX86_64,

  kArchCount,  // Number of architectures.
  kMaxValue = kArchCount
};

extern const char kKernelExecName[];

// Returns the architecture kind for which we are built.
ArchKind GetCompilerArch();

// Compute a stack signature string from a kernel dump.
std::string ComputeKernelStackSignature(const std::string& kernel_dump,
                                        ArchKind arch);

// BIOS crashes use a simple signature containing the crash PC.
std::string BiosCrashSignature(const std::string& dump);

// Compute a signature string from a NoC error.
std::string ComputeNoCErrorSignature(const std::string& dump);

// Watchdog reboots leave no stack trace. Generate a poor man's signature out
// of the last log line instead (minus the timestamp ended by ']').
std::string WatchdogSignature(const std::string& console_ramoops);

}  // namespace kernel_util

#endif  // CRASH_REPORTER_KERNEL_UTIL_H_
