mirror of https://github.com/acidanthera/audk.git
58 lines
2.1 KiB
C
58 lines
2.1 KiB
C
/** @file
|
|
The implementation of the __assert function used internally by the assert macro
|
|
to insert diagnostic messages into code.
|
|
|
|
Copyright (c) 2010 - 2011, Intel Corporation. All rights reserved.<BR>
|
|
This program and the accompanying materials are licensed and made available under
|
|
the terms and conditions of the BSD License that accompanies this distribution.
|
|
The full text of the license may be found at
|
|
http://opensource.org/licenses/bsd-license.
|
|
|
|
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|
**/
|
|
#include <LibConfig.h>
|
|
#include <sys/EfiCdefs.h>
|
|
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
|
|
/** Internal helper function for the assert macro.
|
|
The __assert function prints a diagnostic message then exits the
|
|
currently running application.
|
|
|
|
This function should NEVER be called directly.
|
|
|
|
Some pre-processors do not provide the __func__ identifier. When that is
|
|
the case, __func__ will be NULL. This function accounts for this and
|
|
will modify the diagnostic message appropriately.
|
|
|
|
|
|
@param[in] file The name of the file containing the assert.
|
|
@param[in] func The name of the function containing the assert
|
|
or NULL.
|
|
@param[in] line The line number the assert is located on.
|
|
@param[in] failedexpr A literal representation of the assert's expression.
|
|
|
|
@return The __assert function will never return. It terminates execution
|
|
of the current application and returns to the environment that
|
|
the application was launched from.
|
|
**/
|
|
void
|
|
__assert(
|
|
IN const char *file,
|
|
IN const char *func,
|
|
IN int line,
|
|
IN const char *failedexpr
|
|
)
|
|
{
|
|
if (func == NULL)
|
|
printf("Assertion failed: (%s), file %s, line %d.\n",
|
|
failedexpr, file, line);
|
|
else
|
|
printf("Assertion failed: (%s), file %s, function %s, line %d.\n",
|
|
failedexpr, file, func, line);
|
|
abort();
|
|
/* NOTREACHED */
|
|
}
|