blob: 61e2718920b1259a804553d6035c05988de90ac7 [file] [log] [blame]
// Copyright 2025 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CRASHPAD_CLIENT_CRASH_HANDLER_TVOS_H_
#define CRASHPAD_CLIENT_CRASH_HANDLER_TVOS_H_
#include "client/crash_handler_base_ios.h"
#include "util/posix/signals.h"
namespace crashpad {
// A crash handler based on POSIX signals.
// The APIs to handle Mach exceptions are not available to third-party
// applications on tvOS.
class CrashHandler final : public CrashHandlerBase {
public:
CrashHandler(const CrashHandler&) = delete;
CrashHandler& operator=(const CrashHandler&) = delete;
static CrashHandler* Get();
static void ResetForTesting();
uint64_t GetThreadIdForTesting();
private:
CrashHandler();
~CrashHandler() override;
bool DoInitialize() override;
// The signal handler installed at OS-level.
static void CatchAndReraiseSignal(int signo,
siginfo_t* siginfo,
void* context);
Signals::OldActions old_actions_ = {};
static CrashHandler* instance_;
};
} // namespace crashpad
#endif // CRASHPAD_CLIENT_CRASH_HANDLER_TVOS_H_