1// Copyright 2016 The Fuchsia Authors 2// 3// Use of this source code is governed by a MIT-style 4// license that can be found in the LICENSE file or at 5// https://opensource.org/licenses/MIT 6 7#pragma once 8 9#include <sys/types.h> 10#include <zircon/compiler.h> 11#include <zircon/types.h> 12 13__BEGIN_CDECLS 14 15typedef struct arch_exception_context arch_exception_context_t; 16typedef struct zx_exception_report zx_exception_report_t; 17 18// Called by arch code when it cannot handle an exception. 19// |context| is architecture-specific, and can be dumped to the console 20// using arch_dump_exception_context(). Implemented by non-arch code. 21zx_status_t dispatch_user_exception(uint exception_type, 22 arch_exception_context_t* context); 23 24// Dispatches an exception that was raised by a syscall using 25// thread_signal_policy_exception() (see <kernel/thread.h>), causing 26// dispatch_user_exception() to be called with the current context. 27// Implemented by arch code. 28zx_status_t arch_dispatch_user_policy_exception(void); 29 30// Dumps architecture-specific state to the console. |context| typically comes 31// from a call to dispatch_user_exception(). Implemented by arch code. 32void arch_dump_exception_context(const arch_exception_context_t* context); 33 34// Sets |report| using architecture-specific information from |context|. 35// Implemented by arch code. 36void arch_fill_in_exception_context( 37 const arch_exception_context_t* context, zx_exception_report_t* report); 38 39__END_CDECLS 40