On 9/8/22 7:16 AM, Wander Lairson Costa wrote:
+#ifdef DEBUG +static void print_array_hex(const char *title, const char *prefix_str,
const void *buf, int len)
+{
- const __u8 *ptr = buf;
- int i, rowsize = HEX_DUMP_SIZE;
- if (!len || !buf)
return;
- printf("\t\t%s", title);
- for (i = 0; i < len; i++) {
if (!(i % rowsize))
printf("\n%s%.8x:", prefix_str, i);
printf(" %.2x", ptr[i]);
- }
- printf("\n");
+} +#endif
+TEST(verify_report) +{
- __u8 reportdata[TDX_REPORTDATA_LEN];
- struct tdreport tdreport;
- struct tdx_report_req req;
- int devfd, i;
- devfd = open(TDX_GUEST_DEVNAME, O_RDWR | O_SYNC);
- ASSERT_LT(0, devfd);
- /* Generate sample report data */
- for (i = 0; i < TDX_REPORTDATA_LEN; i++)
reportdata[i] = i;
- /* Initialize IOCTL request */
- req.subtype = 0;
- req.reportdata = (__u64)reportdata;
- req.rpd_len = TDX_REPORTDATA_LEN;
- req.tdreport = (__u64)&tdreport;
- req.tdr_len = sizeof(tdreport);
- /* Get TDREPORT */
- ASSERT_EQ(0, ioctl(devfd, TDX_CMD_GET_REPORT, &req));
+#ifdef DEBUG
- print_array_hex("\n\t\tTDX report data\n", "",
reportdata, sizeof(reportdata));
- print_array_hex("\n\t\tTDX tdreport data\n", "",
&tdreport, sizeof(tdreport));
+#endif
You can unconditionally define print_array_hex, and use `if (DEBUG)` instead of #ifdef `DEBUG here`. The compiler will get rid of the unused code when DEBUG is not defined as expected, but you get the parser to validate it independent of the definition of DEBUG.
Currently, DEBUG is a macro, so we cannot use if (DEBUG) directly. You are suggesting to change DEBUG to a variable? Any reason to make this change? I think both changes are functionally similar. So I am wondering why to make this change?