| /** @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 */ | |
| } |