// Copyright 2019 The Fuchsia Authors
//
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file or at
// https://opensource.org/licenses/MIT

#ifndef ZIRCON_KERNEL_INCLUDE_PLATFORM_HALT_HELPER_H_
#define ZIRCON_KERNEL_INCLUDE_PLATFORM_HALT_HELPER_H_

#include <platform.h>
#include <zircon/boot/crash-reason.h>

// Gracefully halt and perform |action|.
//
// This function attempts to acquire the halt token.  If successful, it will perform |action| or
// panic if the system cannot be successfully halted before |panic_deadline| is reached.
//
// If the halt token cannot be acquired, this function will block forever.
void platform_graceful_halt_helper(platform_halt_action action, zircon_crash_reason_t,
                                   zx_time_t panic_deadline);

// Gracefully halt secondary (non-boot) CPUs.
//
// While the mechanism used is platform dependent, this function attempts to shut them down
// gracefully so that secondary CPUs aren't holding any kernel locks.
//
// Returns an error if all secondary CPU could not be not successfully shutdown before |deadline| is
// reached.
//
// This function must be called from the primary (boot) CPU.
zx_status_t platform_halt_secondary_cpus(zx_time_t deadline);

#endif  // ZIRCON_KERNEL_INCLUDE_PLATFORM_HALT_HELPER_H_
