[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v2.2 07/15] xen: generate hypercall interface related code
On 03.11.21 16:08, Jan Beulich wrote: On 03.11.2021 11:20, Juergen Gross wrote:+# Generate the output +END { + # Verbatim generated lines + for (i = 1; i <= e; i++) + printf("%s\n", emit[i]); + printf("\n"); + # Generate prototypes + for (i = 1; i <= n; i++) { + for (p = 1; p <= n_pre[i]; p++) { + printf("%s %s_%s(", rettype[pre[i, p]], pre[i, p], fn[i]); + if (n_args[i] == 0) + printf("void"); + else + for (j = 1; j <= n_args[i]; j++) { + if (j > 1) + printf(", "); + if (ptr[i, j]) + printf("XEN_GUEST_HANDLE_PARAM(%s)", typ[i, j]); + else + printf("%s", typ[i, j]); + printf(" %s", arg[i, j]); + } + printf(");\n"); + } + } + # Generate call sequences and args array contents + for (ca in caller) { + if (caller[ca] != 1) + continue; + need_mask = 0; + for (pl = 1; pl <= n_prios[ca]; pl++) { + for (pll = pl; pll > 1; pll--) { + if (prio_list[ca, pl] > p_list[pll - 1]) + break; + else + p_list[pll] = p_list[pll - 1]; + } + p_list[pll] = prio_list[ca, pl]; + # If any prio but the default one has more than 1 entry we need "mask" + if (p_list[pll] != 100 && prios[ca, p_list[pll]] > 1) + need_mask = 1; + } + printf("\n"); + printf("#define call_handlers_%s(num, ret, a1, a2, a3, a4, a5) \\\n", ca); + printf("{ \\\n");In order to require a semicolon at the use site(s) of the macro I think you want "({ \\\n" here. Everything else looks good to me so far, but I'd really like to take a look at the generated output: Would you happen to have available an instance, to supply in reply? Okay. The generated file is attached. Juergen Attachment:
hypercall-defs.h Attachment:
OpenPGP_0xB0DE9DD628BF132F.asc Attachment:
OpenPGP_signature
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |