1 /*
2  * Copyright (c) 2001-2019, Arm Limited and Contributors. All rights reserved.
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  */
6 
7 #ifndef __TST_HOST_LOG_H__
8 #define __TST_HOST_LOG_H__
9 
10 #include <stdint.h>
11 #include <stdio.h>
12 
13 
14 #define TEST_PRINTF_ERROR(format, ...)  {\
15         fprintf(stderr, "%s(): " format, __FUNCTION__, ##__VA_ARGS__);\
16         fprintf(stderr, "\n");\
17         fflush(stderr);\
18 }
19 #define TEST_FPRINTF_ERROR(fd, format, ...)  {\
20         fprintf(fd, "%s(): " format, __FUNCTION__, ##__VA_ARGS__);\
21         fprintf(fd, "\n");\
22         fflush(fd);\
23         fprintf(stderr, "%s(): " format, __FUNCTION__, ##__VA_ARGS__);\
24         fprintf(stderr, "\n");\
25         fflush(stderr);\
26 }
27 #define TEST_PRINTF_MESSAGE(format, ...)  {\
28         fprintf(stderr, format, ##__VA_ARGS__);\
29         fflush(stderr);\
30 }
31 
32 //to print buffers during fips tests without debug compilation
33 #define TEST_PRINT_WORD_BUFF_TRACE(buffName, size, buff) {\
34     unsigned int i = 0;\
35     TEST_PRINTF_MESSAGE("printing %s, word size %d", buffName, (unsigned int)size);\
36     for (i=0; i< size; i++) {\
37         if (!(i%4)) {\
38             TEST_PRINTF_MESSAGE("\n\t");\
39         }\
40         TEST_PRINTF_MESSAGE("  0x%08X  ", (unsigned int)(*((unsigned int *)buff+i)));\
41     }\
42     TEST_PRINTF_MESSAGE("\n");\
43 }
44 
45 #define TEST_PRINT_BYTE_BUFF_TRACE(buffName, size, buff) {\
46     unsigned int i = 0;\
47     TEST_PRINTF_MESSAGE("printing %s, byte size %d", buffName, (unsigned int)size);\
48     for (i=0; i< size; i++) {\
49         if (!(i%16)) {\
50             TEST_PRINTF_MESSAGE("\n\t");\
51         }\
52         TEST_PRINTF_MESSAGE("0x%02X ", (unsigned char)(*((unsigned char *)buff+i)));\
53     }\
54     TEST_PRINTF_MESSAGE("\n");\
55 }
56 
57 #define TEST_PRINTF_TRACE(format, ...)  {\
58     fprintf(stdout, "%s(): " format, __FUNCTION__, ##__VA_ARGS__);\
59     fprintf(stdout, "\n");\
60     fflush(stdout);\
61 }
62 
63 #ifdef TEST_DEBUG
64 #define TEST_FPRINTF(fd, format, ...)  {\
65      fprintf(fd, "%s(): " format, __FUNCTION__, ##__VA_ARGS__);\
66      fprintf(fd, "\n");\
67      fflush(fd);\
68 }
69 #define TEST_PRINTF(format, ...)  {\
70      fprintf(stdout, "%s(): " format, __FUNCTION__, ##__VA_ARGS__);\
71      fprintf(stdout, "\n");\
72      fflush(stdout);\
73 }
74 
75 #define TEST_PRINTF1(format, ...)  {\
76      fprintf(stdout, " " format, ##__VA_ARGS__);\
77      fflush(stdout);\
78 }
79 
80 #define TEST_FPRINTF1(fd, format, ...)  {\
81      fprintf(fd, " " format, ##__VA_ARGS__);\
82      fflush(fd);\
83 }
84 
85 #define TEST_PRINT_WORD_BUFF(buffName, size, buff) {\
86     unsigned int i = 0;\
87     TEST_PRINTF("printing %s, word size %d", buffName, (unsigned int)size);\
88     for (i=0; i< size; i++) {\
89         if (!(i%4)) {\
90             TEST_PRINTF1("\n\t");\
91         }\
92         TEST_PRINTF1("  0x%08X  ", (unsigned int)(*((unsigned int *)buff+i)));\
93     }\
94     TEST_PRINTF1("\n");\
95 }
96 
97 
98 #define TEST_PRINT_BYTE_BUFF(buffName, size, buff) {\
99     unsigned int i = 0;\
100     TEST_PRINTF("printing %s, byte size %d", buffName, (unsigned int)size);\
101     for (i=0; i< size; i++) {\
102         if (!(i%16)) {\
103             TEST_PRINTF1("\n\t");\
104         }\
105         TEST_PRINTF1("0x%02X ", (unsigned char)(*((unsigned char *)buff+i)));\
106     }\
107     TEST_PRINTF1("\n");\
108 }
109 
110 #define TEST_PRINT_BYTE_BUFFP(buffName, size, buff) {\
111     unsigned int idxT = 0;\
112     uint8_t *buffP = (uint8_t *)(buff);\
113     TEST_PRINTF("printing %s, byte size %d", buffName, (unsigned int)size);\
114     for (idxT=0; idxT< size; idxT++) {\
115         if (!(idxT%16)) {\
116             TEST_PRINTF1("\n\t");\
117         }\
118         TEST_PRINTF1("0x%02X ", buffP[idxT]);\
119     }\
120     TEST_PRINTF1("\n");\
121 }
122 
123 #define TEST_FPRINT_LONG_NUM(fd, buffName, buff, size) {\
124     unsigned int i = 0;\
125     TEST_FPRINTF(fd, "printing %s, byte size %d", buffName, (unsigned int)size);\
126     TEST_FPRINTF1(fd, "0x");\
127     for (i=0; i< size; i++) {\
128         fprintf(fd, "%02X", (unsigned char)(*((unsigned char *)buff+i)));\
129     }\
130     fprintf(fd, "\n");\
131 }
132 
133 #define TEST_FPRINT_BYTE_BUFF(fd, buffName, buff, size) {\
134     unsigned int i = 0;\
135     TEST_FPRINTF(fd, "printing %s, byte size %d", buffName, (unsigned int)size);\
136     for (i=0; i< size; i++) {\
137         if (!(i%16)) {\
138             TEST_FPRINTF1(fd, "\n\t");\
139         }\
140         TEST_FPRINTF1(fd, "0x%02X ", (unsigned char)(*((unsigned char *)buff+i)));\
141     }\
142     TEST_FPRINTF1(fd, "\n");\
143 }
144 
145 #define TEST_FPRINT_BYTE_BUFF_MAX(fd, buffName, buff, size, maxSize) {\
146     int i = 0;\
147     int minSize = ((size>maxSize)?maxSize:size);\
148     TEST_FPRINTF(fd, "printing %s, buff size %d, max size %d", buffName, (unsigned int)size, (unsigned int)maxSize);\
149     for (i=0; i< minSize; i++) {\
150         if (!(i%16)) {\
151             TEST_FPRINTF1(fd, "\n\t");\
152         }\
153         TEST_FPRINTF1(fd, "0x%02X ", (unsigned char)(*((unsigned char *)buff+i)));\
154     }\
155     TEST_FPRINTF1(fd, "\n");\
156 }
157 
158 #else
159 #define TEST_FPRINTF(fd, format, ...)  do{ }while(0)
160 #define TEST_PRINTF(format, ...)  do{ }while(0)
161 #define TEST_PRINTF1(format, ...)  do{ }while(0)
162 #define TEST_PRINT_BYTE_BUFF(str, size, buff) do{ }while(0)
163 #define TEST_PRINT_BYTE_BUFFP(buffName, size, buff) do{ }while(0)
164 #define TEST_PRINT_WORD_BUFF(str, size, buff) do{ }while(0)
165 #define TEST_FPRINT_LONG_NUM(fd, buffName, buff, size)  do{ }while(0)
166 #define TEST_FPRINT_BYTE_BUFF(fd, buffName, buff, size)  do{ }while(0)
167 #define TEST_FPRINT_BYTE_BUFF_MAX(fd, buffName, buff, size, maxSize)  do{ }while(0)
168 #endif
169 #endif /*__TST_HOST_LOG_H__*/
170