{
struct d_info *dip = __dip_find(dev);
- if (!dip || dip->is_plugged) return;
+ if (dip && !dip->is_plugged) {
+ dip->is_plugged = 1;
+ dip->last_plug = cur_time;
+ }
+}
- dip->is_plugged = 1;
- dip->last_plug = cur_time;
+static inline void unplug(struct d_info *dip, double cur_time)
+{
+ dip->is_plugged = 0;
+ dip->plugged_time += (cur_time - dip->last_plug);
}
void dip_unplug(__u32 dev, double cur_time, __u64 nios_up)
if (dip && dip->is_plugged) {
dip->nplugs++;
- dip->plugged_time += (cur_time - dip->last_plug);
- dip->is_plugged = 0;
dip->nios_up += nios_up;
+ unplug(dip, cur_time);
}
}
struct d_info *dip = __dip_find(dev);
if (dip && dip->is_plugged) {
- dip->plugged_time += (cur_time - dip->last_plug);
- dip->n_timer_unplugs++;
dip->nios_upt += nios_up;
dip->nplugs_t++;
+ unplug(dip, cur_time);
}
}
int n_plugs;
struct plug_info {
- long n_plugs, n_timer_unplugs;
+ long n_plugs, n_unplugs_t;
double t_percent;
} plug_info;
FILE *ofp = arg;
double delta, pct;
- if (dip->nplugs > 0) {
- if (dip->is_plugged) dip_unplug(dip->device, dip->end_time, 0);
+ if (dip->is_plugged)
+ dip_unplug(dip->device, dip->end_time, 0);
+ if ((dip->nplugs + dip->nplugs_t) > 0) {
delta = dip->end_time - dip->start_time;
- pct = 100.0 * ((dip->plugged_time / delta) / delta);
+ pct = 100.0 * (dip->plugged_time / delta);
fprintf(ofp, "%10s | %10d(%10d) | %13.9lf%%\n",
make_dev_hdr(dev_info, 15, dip, 1),
- dip->nplugs, dip->n_timer_unplugs, pct);
+ dip->nplugs, dip->nplugs_t, pct);
if (easy_parse_avgs) {
fprintf(xavgs_ofp,
"PLG %s %d %d %.9lf\n",
make_dev_hdr(dev_info, 15, dip, 0),
- dip->nplugs, dip->n_timer_unplugs, pct);
+ dip->nplugs, dip->nplugs_t, pct);
}
n_plugs++;
plug_info.n_plugs += dip->nplugs;
- plug_info.n_timer_unplugs += dip->n_timer_unplugs;
+ plug_info.n_unplugs_t += dip->nplugs_t;
plug_info.t_percent += pct;
}
}
fprintf(ofp, "%10s | %10s %10s | %s\n",
"Overall", "# Plugs", "# Timer Us", "% Time Q Plugged");
fprintf(ofp, "%10s | %10ld(%10ld) | %13.9lf%%\n", "Average",
- p->n_plugs / n_plugs, p->n_timer_unplugs / n_plugs,
+ p->n_plugs / n_plugs, p->n_unplugs_t / n_plugs,
p->t_percent / n_plugs);
}