Lines Matching refs:group
48 /* NOTE first counter group should always be CP, since we unconditionally
53 const struct fd_perfcntr_group *group;
192 select_counter(struct counter_group *group, int ctr, int n)
194 assert(n < group->group->num_countables);
195 assert(ctr < group->group->num_counters);
197 group->label[ctr] = group->group->countables[n].name;
198 group->counter[ctr].select_val = n;
221 if (group->group->counters[ctr].enable) {
222 OUT_PKT0(ring, group->group->counters[ctr].enable, 1);
226 if (group->group->counters[ctr].clear) {
227 OUT_PKT0(ring, group->group->counters[ctr].clear, 1);
230 OUT_PKT0(ring, group->group->counters[ctr].clear, 1);
234 OUT_PKT0(ring, group->group->counters[ctr].select_reg, 1);
237 if (group->group->counters[ctr].enable) {
238 OUT_PKT0(ring, group->group->counters[ctr].enable, 1);
247 if (group->group->counters[ctr].enable) {
248 OUT_PKT4(ring, group->group->counters[ctr].enable, 1);
252 if (group->group->counters[ctr].clear) {
253 OUT_PKT4(ring, group->group->counters[ctr].clear, 1);
256 OUT_PKT4(ring, group->group->counters[ctr].clear, 1);
260 OUT_PKT4(ring, group->group->counters[ctr].select_reg, 1);
263 if (group->group->counters[ctr].enable) {
264 OUT_PKT4(ring, group->group->counters[ctr].enable, 1);
271 group->last[ctr] = *group->counter[ctr].val_lo;
272 group->stime[ctr] = gettime_us();
276 resample_counter(struct counter_group *group, int ctr)
278 uint32_t val = *group->counter[ctr].val_lo;
280 uint32_t dt = delta(group->stime[ctr], t);
281 uint32_t dval = delta(group->last[ctr], val);
282 group->current[ctr] = (float)dval * 1000000.0 / (float)dt;
283 group->last[ctr] = val;
284 group->stime[ctr] = t;
302 struct counter_group *group = &dev.groups[i];
303 for (unsigned j = 0; j < group->group->num_counters; j++) {
304 resample_counter(group, j);
414 redraw_counter(WINDOW *win, int row, struct counter_group *group, int ctr,
417 redraw_counter_label(win, row, group->label[ctr], selected);
432 if (strstr(group->label[ctr], "CYCLE") ||
433 strstr(group->label[ctr], "BUSY") || strstr(group->label[ctr], "IDLE"))
434 redraw_counter_value_cycles(win, group->current[ctr]);
436 redraw_counter_value_raw(win, group->current[ctr]);
457 struct counter_group *group = &dev.groups[i];
464 if (j < group->group->num_counters) {
466 redraw_group_header(win, row - scroll, group->group->name);
470 for (; j < group->group->num_counters; j++) {
472 redraw_counter(win, row - scroll, group, j, row == current_cntr);
499 struct counter_group *group = &dev.groups[i];
506 /* account for group header: */
507 if (j < group->group->num_counters) {
508 /* cannot select group header.. return null to indicate this
516 for (; j < group->group->num_counters; j++) {
520 return group;
534 struct counter_group *group;
541 group = current_counter(&cnt);
546 uint32_t selected = group->counter[cnt].select_val;
547 for (int i = 0; i < group->group->num_countables; i++) {
548 if (group->group->countables[i].selector == selected) {
563 int max = MIN2(dh - 2, group->group->num_countables);
576 assert(n < group->group->num_countables);
577 selector = group->group->countables[n].selector;
580 if (n < group->group->num_countables)
581 waddstr(dialog, group->group->countables[n].name);
594 current = MIN2(group->group->num_countables - 1, current + 1);
599 select_counter(group, cnt, selector);
705 struct counter_group *group = &dev.groups[i];
712 for (; j < group->group->num_counters; j++) {
713 select_counter(group, j, group->counter[j].select_val);
722 struct counter_group *group = &dev.groups[i];
724 group->group = &groups[i];
726 max_rows += group->group->num_counters + 1;
731 if (group->group->num_counters <= 1)
735 for (unsigned j = 0; j < group->group->num_counters; j++) {
736 group->counter[j].counter = &group->group->counters[j];
738 group->counter[j].val_hi =
739 dev.io + (group->counter[j].counter->counter_reg_hi * 4);
740 group->counter[j].val_lo =
741 dev.io + (group->counter[j].counter->counter_reg_lo * 4);
743 group->counter[j].select_val = j;
746 for (unsigned j = 0; j < group->group->num_countables; j++) {
748 MAX2(ctr_width, strlen(group->group->countables[j].name) + 1);
764 struct counter_group *group = &dev.groups[i];
772 config_setting_get_member(setting, group->group->name);
774 for (; j < group->group->num_counters; j++) {
778 config_setting_set_int(s, group->counter[j].select_val);
807 struct counter_group *group = &dev.groups[i];
815 config_setting_get_member(setting, group->group->name);
819 config_setting_add(setting, group->group->name, CONFIG_TYPE_GROUP);
822 for (; j < group->group->num_counters; j++) {
830 select_counter(group, j, config_setting_get_int(s));