errf.h File Reference

Error Display API. More...

`#include <3ds/types.h>`

Go to the source code of this file.

## Data Structures

struct | ERRF_ExceptionInfo
struct | ERRF_ExceptionData
struct | ERRF_FatalErrInfo

## Enumerations

enum | ERRF_ErrType { ERRF_ERRTYPE_GENERIC = 0 , ERRF_ERRTYPE_NAND_DAMAGED = 1 , ERRF_ERRTYPE_CARD_REMOVED = 2 , ERRF_ERRTYPE_EXCEPTION = 3 , ERRF_ERRTYPE_FAILURE = 4 , ERRF_ERRTYPE_LOG_ONLY = 5 }
| Types of errors that can be thrown by err:f. More...
enum | ERRF_ExceptionType { ERRF_EXCEPTION_PREFETCH_ABORT = 0 , ERRF_EXCEPTION_DATA_ABORT = 1 , ERRF_EXCEPTION_UNDEFINED = 2 , ERRF_EXCEPTION_VFP = 3 }
| Types of 'Exceptions' thrown for ERRF_ERRTYPE_EXCEPTION. More...

## Functions

Result | errfInit (void)
| Initializes ERR:f. Unless you plan to call ERRF_Throw yourself, do not use this.
void | errfExit (void)
| Exits ERR:f. Unless you plan to call ERRF_Throw yourself, do not use this.
Handle * | errfGetSessionHandle (void)
| Gets the current err:f API session handle. More...
Result | ERRF_Throw (const ERRF_FatalErrInfo *error)
| Throws a system error and possibly logs it. More...
Result | ERRF_ThrowResult (Result failure)
| Throws (and logs) a system error with the given Result code. More...
Result | ERRF_LogResult (Result failure)
| Logs a system error with the given Result code. More...
Result | ERRF_ThrowResultWithMessage (Result failure, const char *message)
| Throws a system error with the given Result code and message. More...
Result | ERRF_SetUserString (const char *user_string)
| Specify an additional user string to use for error reporting. More...
void | ERRF_ExceptionHandler (ERRF_ExceptionInfo *excep, CpuRegisters *regs) __attribute__((noreturn))
| Handles an exception using ErrDisp. More...

## Detailed Description

Error Display API.

## Enumeration Type Documentation

## ERRF_ErrType

enum ERRF_ErrType

Types of errors that can be thrown by err:f.

Enumerator
ERRF_ERRTYPE_GENERIC | Generic fatal error. Shows miscellaneous info, including the address of the caller.
ERRF_ERRTYPE_NAND_DAMAGED | Damaged NAND (CC_ERROR after reading CSR)
ERRF_ERRTYPE_CARD_REMOVED | Game content storage medium (cartridge and/or SD card) ejected. Not logged.
ERRF_ERRTYPE_EXCEPTION | CPU or VFP exception.
ERRF_ERRTYPE_FAILURE | Fatal error with a message instead of the caller's address.
ERRF_ERRTYPE_LOG_ONLY | Log-level failure. Does not display the exception and does not force the system to reboot.

## ERRF_ExceptionType

enum ERRF_ExceptionType

Types of 'Exceptions' thrown for ERRF_ERRTYPE_EXCEPTION.

Enumerator
ERRF_EXCEPTION_PREFETCH_ABORT | Prefetch Abort.
ERRF_EXCEPTION_DATA_ABORT | Data abort.
ERRF_EXCEPTION_UNDEFINED | Undefined instruction.
ERRF_EXCEPTION_VFP | VFP (floating point) exception.

## Function Documentation

## ERRF_ExceptionHandler()

void ERRF_ExceptionHandler | ( | ERRF_ExceptionInfo * | excep,
|  | CpuRegisters * | regs
| ) |  |

Handles an exception using ErrDisp.

Parameters

  excep | Exception information
  regs | CPU registers

You might want to clear ENVINFO's bit0 to be able to see any debugging information.

See also
  threadOnException

## ERRF_LogResult()

Result ERRF_LogResult | ( | Result | failure | ) |

Logs a system error with the given Result code.

Parameters

  [in] | failure | Result code to log.

Similar to ERRF_Throw, except that it does not display anything on the screen, nor does it force the system to reboot.

This function does fill in the address where this function was called from.

## ERRF_SetUserString()

Result ERRF_SetUserString | ( | const char * | user_string | ) |

Specify an additional user string to use for error reporting.

Parameters

  [in] | user_string | User string (up to 256 bytes, not including NUL byte)

## ERRF_Throw()

Result ERRF_Throw | ( | const ERRF_FatalErrInfo * | error | ) |

Throws a system error and possibly logs it.

Parameters

  [in] | error | Error to throw.

ErrDisp may convert the error info to ERRF_ERRTYPE_NAND_DAMAGED or ERRF_ERRTYPE_CARD_REMOVED depending on the error code.

Except with ERRF_ERRTYPE_LOG_ONLY, the system will panic and will need to be rebooted. Fatal error information will also be logged into a file, unless the type either ERRF_ERRTYPE_NAND_DAMAGED or ERRF_ERRTYPE_CARD_REMOVED.

No error will be shown if the system is asleep.

On retail units with vanilla firmware, no detailed information will be displayed on screen.

You may wish to use ERRF_ThrowResult() or ERRF_ThrowResultWithMessage() instead of constructing the ERRF_FatalErrInfo struct yourself.

## ERRF_ThrowResult()

Result ERRF_ThrowResult | ( | Result | failure | ) |

Throws (and logs) a system error with the given Result code.

Parameters

  [in] | failure | Result code to throw.

This calls ERRF_Throw with error type ERRF_ERRTYPE_GENERIC and fills in the required data.

This function does fill in the address where this function was called from.

## ERRF_ThrowResultWithMessage()

Result ERRF_ThrowResultWithMessage | ( | Result | failure,
|  | const char * | message
| ) |  |

Throws a system error with the given Result code and message.

Parameters

  [in] | failure | Result code to throw.
  [in] | message | The message to display.

This calls ERRF_Throw with error type ERRF_ERRTYPE_FAILURE and fills in the required data.

This function does not fill in the address where this function was called from because it would not be displayed.

## errfGetSessionHandle()

Handle* errfGetSessionHandle | ( | void |  | ) |

Gets the current err:f API session handle.

Returns
  The current err:f API session handle.