[igt-dev] [IGT 1/2] tools/intel_gpu_top: Add support for stdout logging

Chris Wilson chris at chris-wilson.co.uk
Mon Feb 11 12:21:26 UTC 2019


Quoting Tvrtko Ursulin (2019-02-11 11:45:22)
> +static enum {
> +       INTERACTIVE,
> +       STDOUT,
> +       JSON
> +} output_mode;
> +
> +struct cnt_item {
> +       struct pmu_counter *pmu;

/* "%*.*f", fmt_d, fmt_dd, X */

I tried fmt_d == fmt_width and fmt_dd == fmt_decimals

It's called field width and precision in the manpage, so
maybe fmt_width and fmt_precision.

Having figured that out, the use makes sense.

> +       unsigned int fmt_d;
> +       unsigned int fmt_dd;
> +       double d;
> +       double t;
> +       double s;
> +       const char *name;
> +       const char *unit;
> +
> +       /* Internal fields. */
> +       char buf[16];
> +};
> +
> +struct cnt_group {
> +       const char *name;
> +       const char *display_name;
> +       struct cnt_item *items;
> +};
> +
> +static unsigned int json_indent_level;
> +
> +static const char *json_indent[] = {
> +       "",
> +       "\t",
> +       "\t\t",
> +       "\t\t\t",
> +       "\t\t\t\t",
> +       "\t\t\t\t\t",
> +};
> +
> +#define ARRAY_SIZE(arr) (sizeof(arr)/sizeof(arr[0]))
> +
> +static unsigned int json_prev_struct_members;
> +static unsigned int json_struct_members;
> +
> +static void
> +json_open_struct(const char *name)
> +{
> +       assert(json_indent_level < ARRAY_SIZE(json_indent));
> +
> +       json_prev_struct_members = json_struct_members;
> +       json_struct_members = 0;
> +
> +       if (name)
> +               printf("%s%s\"%s\": {\n",
> +                      json_prev_struct_members ? ",\n" : "",
> +                      json_indent[json_indent_level],

"%*s", json_indent_level, "\t\t\t\t\t"
didn't stick?

I could follow the flow, dug into a few of the details, and only have
some nits. One thing, could we feed in a perf record? I was thinking for
testing the various output modes with known data, but may also be useful
for replay.

Reviewed-by: Chris Wilson <chris at chris-wilson.co.uk>
-Chris


More information about the igt-dev mailing list