Stefan Hajnoczi writes: > On Fri, Aug 05, 2016 at 06:59:34PM +0200, Lluís Vilanova wrote: >> +# hypertrace >> +hyperargs=$hypertrace >> +if test $hypertrace = "disabled"; then >> + hyperargs=0 >> +fi >> +echo "CONFIG_HYPERTRACE_ARGS=$hyperargs" >> $config_host_mak >> +hypertrace_events=hypertrace/trace-events >> +mkdir -p $(dirname $hypertrace_events) >> +echo "# See docs/trace-events.txt for syntax documentation." >> >$hypertrace_events >> +echo -n 'vcpu guest_hypertrace(' >>$hypertrace_events >> +for i in `seq $hypertrace`; do >> + if test $i != 1; then >> + echo -n ", " >>$hypertrace_events >> + fi >> + echo -n "uint64_t arg$i" >>$hypertrace_events >> +done >> +echo -n ') ' >>$hypertrace_events >> +for i in `seq $hypertrace`; do >> + echo -n "\" arg$i=0x%016\"PRIx64" >>$hypertrace_events >> +done >> +echo >>$hypertrace_events
> This reminds me of the first versions of "simpletrace" where the number > of arguments was fixed and argument size was fixed. > This meant strings cannot be traced, number of arguments is limited, and > you pay an space overhead for unused arguments. > Later on the format was changed to header (including .length field) and > binary data payload. This reduced the space overhead, elminated the > argument count limit, and allowed strings to be traced. > I think these are desirable qualities for any tracing mechanism and > would reconsider a fixed number of uint64_t arguments. The number of arguments is fixed at *compilation time*. What is not supported out of the box is multiplexing multiple guest events over the hypertrace event. That is, you need to do it yourself when post-processing the traces, but I don't think that's too bad. Cheers, Lluis