Lines Matching refs:group
58 /* NOTE first counter group should always be CP, since we unconditionally
63 const struct fd_perfcntr_group *group;
213 select_counter(struct counter_group *group, int ctr, int n)
215 assert(n < group->group->num_countables);
216 assert(ctr < group->group->num_counters);
218 group->label[ctr] = group->group->countables[n].name;
219 group->counter[ctr].select_val = n;
242 if (group->group->counters[ctr].enable) {
243 OUT_PKT0(ring, group->group->counters[ctr].enable, 1);
247 if (group->group->counters[ctr].clear) {
248 OUT_PKT0(ring, group->group->counters[ctr].clear, 1);
251 OUT_PKT0(ring, group->group->counters[ctr].clear, 1);
255 OUT_PKT0(ring, group->group->counters[ctr].select_reg, 1);
258 if (group->group->counters[ctr].enable) {
259 OUT_PKT0(ring, group->group->counters[ctr].enable, 1);
268 if (group->group->counters[ctr].enable) {
269 OUT_PKT4(ring, group->group->counters[ctr].enable, 1);
273 if (group->group->counters[ctr].clear) {
274 OUT_PKT4(ring, group->group->counters[ctr].clear, 1);
277 OUT_PKT4(ring, group->group->counters[ctr].clear, 1);
281 OUT_PKT4(ring, group->group->counters[ctr].select_reg, 1);
284 if (group->group->counters[ctr].enable) {
285 OUT_PKT4(ring, group->group->counters[ctr].enable, 1);
292 group->last[ctr] = *group->counter[ctr].val_lo;
293 group->stime[ctr] = gettime_us();
297 resample_counter(struct counter_group *group, int ctr)
299 uint32_t val = *group->counter[ctr].val_lo;
301 uint32_t dt = delta(group->stime[ctr], t);
302 uint32_t dval = delta(group->last[ctr], val);
303 group->current[ctr] = (float)dval * 1000000.0 / (float)dt;
304 group->last[ctr] = val;
305 group->stime[ctr] = t;
321 struct counter_group *group = &dev.groups[i];
322 for (unsigned j = 0; j < group->group->num_counters; j++) {
323 resample_counter(group, j);
433 redraw_counter(WINDOW *win, int row, struct counter_group *group, int ctr,
436 redraw_counter_label(win, row, group->label[ctr], selected);
451 if (strstr(group->label[ctr], "CYCLE") ||
452 strstr(group->label[ctr], "BUSY") || strstr(group->label[ctr], "IDLE"))
453 redraw_counter_value_cycles(win, group->current[ctr]);
455 redraw_counter_value_raw(win, group->current[ctr]);
476 struct counter_group *group = &dev.groups[i];
483 if (j < group->group->num_counters) {
485 redraw_group_header(win, row - scroll, group->group->name);
489 for (; j < group->group->num_counters; j++) {
491 redraw_counter(win, row - scroll, group, j, row == current_cntr);
518 struct counter_group *group = &dev.groups[i];
525 /* account for group header: */
526 if (j < group->group->num_counters) {
527 /* cannot select group header.. return null to indicate this
535 for (; j < group->group->num_counters; j++) {
539 return group;
553 struct counter_group *group;
560 group = current_counter(&cnt);
565 uint32_t selected = group->counter[cnt].select_val;
566 for (int i = 0; i < group->group->num_countables; i++) {
567 if (group->group->countables[i].selector == selected) {
582 int max = MIN2(dh - 2, group->group->num_countables);
595 assert(n < group->group->num_countables);
596 selector = group->group->countables[n].selector;
599 if (n < group->group->num_countables)
600 waddstr(dialog, group->group->countables[n].name);
613 current = MIN2(group->group->num_countables - 1, current + 1);
618 select_counter(group, cnt, selector);
728 const struct counter_group *group = &dev.groups[i];
729 for (unsigned j = 0; j < group->group->num_counters; j++) {
730 const char *label = group->label[j];
731 float val = group->current[j];
735 label = group->group->countables[0].name;
757 struct counter_group *group = &dev.groups[i];
764 for (; j < group->group->num_counters; j++) {
765 select_counter(group, j, group->counter[j].select_val);
774 struct counter_group *group = &dev.groups[i];
776 group->group = &groups[i];
778 max_rows += group->group->num_counters + 1;
783 if (group->group->num_counters <= 1)
787 for (unsigned j = 0; j < group->group->num_counters; j++) {
788 group->counter[j].counter = &group->group->counters[j];
790 group->counter[j].val_hi =
791 dev.io + (group->counter[j].counter->counter_reg_hi * 4);
792 group->counter[j].val_lo =
793 dev.io + (group->counter[j].counter->counter_reg_lo * 4);
795 group->counter[j].select_val = j;
798 for (unsigned j = 0; j < group->group->num_countables; j++) {
800 MAX2(ctr_width, strlen(group->group->countables[j].name) + 1);
816 struct counter_group *group = &dev.groups[i];
824 config_setting_get_member(setting, group->group->name);
826 for (; j < group->group->num_counters; j++) {
830 config_setting_set_int(s, group->counter[j].select_val);
859 struct counter_group *group = &dev.groups[i];
867 config_setting_get_member(setting, group->group->name);
871 config_setting_add(setting, group->group->name, CONFIG_TYPE_GROUP);
874 for (; j < group->group->num_counters; j++) {
882 select_counter(group, j, config_setting_get_int(s));