Home | History | Annotate | Download | only in utils
      1 /* Copyright (C) 2008 The Android Open Source Project
      2 **
      3 ** This software is licensed under the terms of the GNU General Public
      4 ** License version 2, as published by the Free Software Foundation, and
      5 ** may be copied, distributed, and modified under those terms.
      6 **
      7 ** This program is distributed in the hope that it will be useful,
      8 ** but WITHOUT ANY WARRANTY; without even the implied warranty of
      9 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     10 ** GNU General Public License for more details.
     11 */
     12 #ifndef ANDROID_UTILS_PANIC_H
     13 #define ANDROID_UTILS_PANIC_H
     14 
     15 #include <stdarg.h>
     16 
     17 #include "android/utils/compiler.h"
     18 
     19 ANDROID_BEGIN_HEADER
     20 
     21 /* Print formatted panic message and halts the process */
     22 void __attribute__((noreturn)) android_panic ( const char*  fmt, ... );
     23 
     24 /* Variant of android_vpanic which take va_list formating arguments */
     25 void __attribute__((noreturn)) android_vpanic( const char*  fmt, va_list  args );
     26 
     27 /* Convenience macro */
     28 #define  APANIC(...)    android_panic(__VA_ARGS__)
     29 
     30 typedef void (*APanicHandlerFunc)(const char*, va_list) __attribute__((noreturn));
     31 
     32 /* Register a new panic handler. This should only be used for unit-testing */
     33 void android_panic_registerHandler( APanicHandlerFunc  handler );
     34 
     35 ANDROID_END_HEADER
     36 
     37 #endif /* ANDROID_UTILS_PANIC_H */
     38