From e2e5b49215cabd82f99bdc0c6e1b6f69ff233d19 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Wed, 14 Nov 2012 09:51:41 +0100 Subject: score: Add rtems_fatal() --- cpukit/sapi/Makefile.am | 3 ++- cpukit/sapi/include/rtems/fatal.h | 50 +++++++++++++++++++++++++++++---------- cpukit/sapi/src/fatal2.c | 27 +++++++++++++++++++++ doc/user/fatal.t | 31 ++++++++++++++++++++++++ 4 files changed, 97 insertions(+), 14 deletions(-) create mode 100644 cpukit/sapi/src/fatal2.c diff --git a/cpukit/sapi/Makefile.am b/cpukit/sapi/Makefile.am index 4406708dae..232028e63c 100644 --- a/cpukit/sapi/Makefile.am +++ b/cpukit/sapi/Makefile.am @@ -37,7 +37,8 @@ libsapi_a_SOURCES = src/debug.c src/extension.c src/extensioncreate.c \ src/iounregisterdriver.c src/iowrite.c src/posixapi.c \ src/rtemsapi.c src/extensiondata.c src/getversionstring.c \ src/chainappendnotify.c src/chaingetnotify.c src/chaingetwait.c \ - src/chainprependnotify.c src/rbheap.c src/interrdesc.c + src/chainprependnotify.c src/rbheap.c src/interrdesc.c \ + src/fatal2.c libsapi_a_CPPFLAGS = $(AM_CPPFLAGS) include $(srcdir)/preinstall.am diff --git a/cpukit/sapi/include/rtems/fatal.h b/cpukit/sapi/include/rtems/fatal.h index 8f646a9417..66926054b9 100644 --- a/cpukit/sapi/include/rtems/fatal.h +++ b/cpukit/sapi/include/rtems/fatal.h @@ -1,13 +1,9 @@ /** - * @file rtems/fatal.h + * @file * - * This include file contains constants and prototypes related - * to the Fatal Error Manager. This manager processes all fatal or - * irrecoverable errors. - * - * This manager provides directives to: + * @ingroup ClassicFatal * - * - announce a fatal error has occurred + * @brief Fatal API. */ /* @@ -29,20 +25,46 @@ extern "C" { #endif -/* - * rtems_fatal_error_occurred +/** + * @defgroup ClassicFatal Fatal + * + * @ingroup ClassicRTEMS * - * DESCRIPTION: + * @brief The Fatal Manager provides functions for fatal system states and or + * irrecoverable errors. * - * This is the routine which implements the rtems_fatal_error_occurred - * directive. It is invoked when the application or RTEMS - * determines that a fatal error has occurred. + * @{ */ +/** + * @brief Invokes the internal error handler with a source of + * INTERNAL_ERROR_RTEMS_API and is internal set to false. + * + * @param[in] the_error A 32-bit fatal error code. + * + * @return This function will not return. + * + * @see _Internal_error_Occurred(). + */ void rtems_fatal_error_occurred( uint32_t the_error ) RTEMS_COMPILER_NO_RETURN_ATTRIBUTE; +/** + * @brief Invokes the internal error handler with is internal set to false. + * + * @param[in] source The fatal source. + * @param[in] error The fatal code. + * + * @return This function will not return. + * + * @see _Internal_error_Occurred(). + */ +void rtems_fatal( + rtems_fatal_source source, + rtems_fatal_code error +) RTEMS_COMPILER_NO_RETURN_ATTRIBUTE; + /** * @brief Returns a description for an internal error code. * @@ -53,6 +75,8 @@ void rtems_fatal_error_occurred( */ const char *rtems_internal_error_description( rtems_fatal_code error ); +/** @} */ + #ifdef __cplusplus } #endif diff --git a/cpukit/sapi/src/fatal2.c b/cpukit/sapi/src/fatal2.c new file mode 100644 index 0000000000..efaf4265ed --- /dev/null +++ b/cpukit/sapi/src/fatal2.c @@ -0,0 +1,27 @@ +/* + * Copyright (c) 2012 embedded brains GmbH. All rights reserved. + * + * embedded brains GmbH + * Obere Lagerstr. 30 + * 82178 Puchheim + * Germany + * + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. + */ + +#if HAVE_CONFIG_H + #include "config.h" +#endif + +#include + +void rtems_fatal( + rtems_fatal_source source, + rtems_fatal_code error +) +{ + _Internal_error_Occurred( source, false, error ); +} diff --git a/doc/user/fatal.t b/doc/user/fatal.t index fd5a7ea0c0..aa9c2bf0a6 100644 --- a/doc/user/fatal.t +++ b/doc/user/fatal.t @@ -15,6 +15,7 @@ manager is: @itemize @bullet @item @code{@value{DIRPREFIX}fatal_error_occurred} - Invoke the fatal error handler +@item @code{@value{DIRPREFIX}fatal} - Invoke the fatal error handler with error source @end itemize @section Background @@ -168,6 +169,36 @@ NOT RETURN to the caller. The user-defined extension for this directive may wish to initiate a global shutdown. +@c +@c +@c +@page +@subsection FATAL - Invoke the fatal error handler with error source + +@cindex announce fatal error +@cindex fatal error, announce + +@subheading CALLING SEQUENCE: + +@ifset is-C +@findex rtems_fatal +@example +void rtems_fatal( + rtems_fatal_source source, + rtems_fatal_code error +); +@end example +@end ifset + +@subheading DIRECTIVE STATUS CODES + +NONE + +@subheading DESCRIPTION: + +This directive invokes the internal error handler with is internal set to +false. See also @code{@value{DIRPREFIX}fatal_error_occurred}. + @c @c @c -- cgit v1.2.3