1*418b791dSBob Badour /** 2*418b791dSBob Badour * Copyright (c) 2019, The Linux Foundation. All rights reserved. 3*418b791dSBob Badour * 4*418b791dSBob Badour * Redistribution and use in source and binary forms, with or without 5*418b791dSBob Badour * modification, are permitted provided that the following conditions are 6*418b791dSBob Badour * met: 7*418b791dSBob Badour * * Redistributions of source code must retain the above copyright 8*418b791dSBob Badour * notice, this list of conditions and the following disclaimer. 9*418b791dSBob Badour * * Redistributions in binary form must reproduce the above 10*418b791dSBob Badour * copyright notice, this list of conditions and the following 11*418b791dSBob Badour * disclaimer in the documentation and/or other materials provided 12*418b791dSBob Badour * with the distribution. 13*418b791dSBob Badour * * Neither the name of The Linux Foundation nor the names of its 14*418b791dSBob Badour * contributors may be used to endorse or promote products derived 15*418b791dSBob Badour * from this software without specific prior written permission. 16*418b791dSBob Badour * 17*418b791dSBob Badour * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED 18*418b791dSBob Badour * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 19*418b791dSBob Badour * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT 20*418b791dSBob Badour * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS 21*418b791dSBob Badour * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22*418b791dSBob Badour * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23*418b791dSBob Badour * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR 24*418b791dSBob Badour * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 25*418b791dSBob Badour * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 26*418b791dSBob Badour * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN 27*418b791dSBob Badour * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28*418b791dSBob Badour */ 29*418b791dSBob Badour 30*418b791dSBob Badour #ifndef VERIFY_H 31*418b791dSBob Badour #define VERIFY_H 32*418b791dSBob Badour 33*418b791dSBob Badour #include "AEEstd.h" 34*418b791dSBob Badour 35*418b791dSBob Badour //#define VERIFY_PRINT_ERROR 36*418b791dSBob Badour //#define VERIFY_PRINT_INFO 37*418b791dSBob Badour 38*418b791dSBob Badour 39*418b791dSBob Badour #ifndef _WIN32 40*418b791dSBob Badour #define C_ASSERT(test) \ 41*418b791dSBob Badour switch(0) {\ 42*418b791dSBob Badour case 0:\ 43*418b791dSBob Badour case test:;\ 44*418b791dSBob Badour } 45*418b791dSBob Badour #endif // _WIN32 46*418b791dSBob Badour 47*418b791dSBob Badour #ifndef __V_STR__ 48*418b791dSBob Badour #define __V_STR__(x) #x ":" 49*418b791dSBob Badour #endif //__STR__ 50*418b791dSBob Badour #ifndef __V_TOSTR__ 51*418b791dSBob Badour #define __V_TOSTR__(x) __V_STR__(x) 52*418b791dSBob Badour #endif // __TOSTR__ 53*418b791dSBob Badour #ifndef __V_FILE_LINE__ 54*418b791dSBob Badour #define __V_FILE_LINE__ __FILE__ ":" __V_TOSTR__(__LINE__) 55*418b791dSBob Badour #endif /*__FILE_LINE__*/ 56*418b791dSBob Badour 57*418b791dSBob Badour 58*418b791dSBob Badour #ifdef __ANDROID__ 59*418b791dSBob Badour /*android */ 60*418b791dSBob Badour #if (defined VERIFY_PRINT_INFO) || (defined VERIFY_PRINT_ERROR) 61*418b791dSBob Badour #include <android/log.h> 62*418b791dSBob Badour #endif 63*418b791dSBob Badour 64*418b791dSBob Badour extern const char* __progname; 65*418b791dSBob Badour #ifdef VERIFY_PRINT_INFO 66*418b791dSBob Badour #define VERIFY_IPRINTF(format, ...) __android_log_print(ANDROID_LOG_DEBUG , __progname, __V_FILE_LINE__ format, ##__VA_ARGS__) 67*418b791dSBob Badour #endif 68*418b791dSBob Badour 69*418b791dSBob Badour #ifdef VERIFY_PRINT_ERROR 70*418b791dSBob Badour #define VERIFY_EPRINTF(format, ...) __android_log_print(ANDROID_LOG_ERROR , __progname, __V_FILE_LINE__ format, ##__VA_ARGS__) 71*418b791dSBob Badour #endif 72*418b791dSBob Badour 73*418b791dSBob Badour /* end android */ 74*418b791dSBob Badour #elif (defined __hexagon__) || (defined __qdsp6__) 75*418b791dSBob Badour /* q6 */ 76*418b791dSBob Badour 77*418b791dSBob Badour #ifdef VERIFY_PRINT_INFO 78*418b791dSBob Badour #define FARF_VERIFY_LOW 1 79*418b791dSBob Badour #define FARF_VERIFY_LOW_LEVEL HAP_LEVEL_LOW 80*418b791dSBob Badour #define VERIFY_IPRINTF(args...) FARF(VERIFY_LOW, args) 81*418b791dSBob Badour #endif 82*418b791dSBob Badour 83*418b791dSBob Badour #ifdef VERIFY_PRINT_ERROR 84*418b791dSBob Badour #define FARF_VERIFY_ERROR 1 85*418b791dSBob Badour #define FARF_VERIFY_ERROR_LEVEL HAP_LEVEL_ERROR 86*418b791dSBob Badour #define VERIFY_EPRINTF(args...) FARF(VERIFY_ERROR, args) 87*418b791dSBob Badour #endif 88*418b791dSBob Badour 89*418b791dSBob Badour #if (defined VERIFY_PRINT_INFO) || (defined VERIFY_PRINT_ERROR) 90*418b791dSBob Badour #include "HAP_farf.h" 91*418b791dSBob Badour #endif 92*418b791dSBob Badour 93*418b791dSBob Badour /* end q6 */ 94*418b791dSBob Badour #else 95*418b791dSBob Badour /* generic */ 96*418b791dSBob Badour 97*418b791dSBob Badour #if (defined VERIFY_PRINT_INFO) || (defined VERIFY_PRINT_ERROR) 98*418b791dSBob Badour #include <stdio.h> 99*418b791dSBob Badour #endif 100*418b791dSBob Badour 101*418b791dSBob Badour #ifdef VERIFY_PRINT_INFO 102*418b791dSBob Badour #define VERIFY_IPRINTF(format, ...) printf(__V_FILE_LINE__ format, ##__VA_ARGS__) 103*418b791dSBob Badour #endif 104*418b791dSBob Badour 105*418b791dSBob Badour #ifdef VERIFY_PRINT_ERROR 106*418b791dSBob Badour #define VERIFY_EPRINTF(format, ...) printf(__V_FILE_LINE__ format, ##__VA_ARGS__) 107*418b791dSBob Badour #endif 108*418b791dSBob Badour 109*418b791dSBob Badour /* end generic */ 110*418b791dSBob Badour #endif 111*418b791dSBob Badour 112*418b791dSBob Badour #ifndef VERIFY_PRINT_INFO 113*418b791dSBob Badour #define VERIFY_IPRINTF(format, ...) (void)0 114*418b791dSBob Badour #endif 115*418b791dSBob Badour 116*418b791dSBob Badour #ifndef VERIFY_PRINT_ERROR 117*418b791dSBob Badour #define VERIFY_EPRINTF(format, ...) (void)0 118*418b791dSBob Badour #endif 119*418b791dSBob Badour 120*418b791dSBob Badour #ifndef VERIFY 121*418b791dSBob Badour #define VERIFY(val) \ 122*418b791dSBob Badour do {\ 123*418b791dSBob Badour VERIFY_IPRINTF(":info: calling: " #val "\n");\ 124*418b791dSBob Badour if(0 == (val)) {\ 125*418b791dSBob Badour nErr = nErr == 0 ? -1 : nErr;\ 126*418b791dSBob Badour VERIFY_EPRINTF(":error: %d: " #val "\n", nErr);\ 127*418b791dSBob Badour goto bail;\ 128*418b791dSBob Badour } else {\ 129*418b791dSBob Badour VERIFY_IPRINTF(":info: passed: " #val "\n");\ 130*418b791dSBob Badour }\ 131*418b791dSBob Badour } while(0) 132*418b791dSBob Badour #endif //VERIFY 133*418b791dSBob Badour 134*418b791dSBob Badour #ifndef VERIFYC 135*418b791dSBob Badour #define VERIFYC(val,err_code) \ 136*418b791dSBob Badour do {\ 137*418b791dSBob Badour VERIFY_IPRINTF(":info: calling: " #val "\n");\ 138*418b791dSBob Badour if(0 == (val)) {\ 139*418b791dSBob Badour nErr = err_code;\ 140*418b791dSBob Badour VERIFY_EPRINTF(":Error: %x: " #val "\n", nErr);\ 141*418b791dSBob Badour goto bail;\ 142*418b791dSBob Badour } else {\ 143*418b791dSBob Badour VERIFY_IPRINTF(":info: passed: " #val "\n");\ 144*418b791dSBob Badour }\ 145*418b791dSBob Badour } while(0) 146*418b791dSBob Badour #endif //VERIFYC 147*418b791dSBob Badour 148*418b791dSBob Badour 149*418b791dSBob Badour #endif //VERIFY_H 150*418b791dSBob Badour 151