Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

tools/power turbostat: Allocate average counters dynamically

The current static definition of average{} is inconsistent with
the dynamically allocated even{} and odd{} counters.

Allocate average{} counters dynamically.

No functional change.

Signed-off-by: Len Brown <len.brown@intel.com>

Len Brown 3cecd4a6 439632cf

+131 -112
+131 -112
tools/power/x86/turbostat/turbostat.c
··· 2383 2383 } 2384 2384 2385 2385 struct system_summary { 2386 - struct thread_data threads; 2387 - struct core_data cores; 2388 - struct pkg_data packages; 2386 + struct thread_data *threads; 2387 + struct core_data *cores; 2388 + struct pkg_data *packages; 2389 2389 } average; 2390 2390 2391 2391 struct platform_counters { ··· 3308 3308 char *delim = "\t"; 3309 3309 int printed = 0; 3310 3310 3311 - if (t == &average.threads) { 3311 + if (t == average.threads) { 3312 3312 pplat_cnt = count & 1 ? &platform_counters_odd : &platform_counters_even; 3313 3313 ++count; 3314 3314 } ··· 3322 3322 return 0; 3323 3323 3324 3324 /*if not summary line and --cpu is used */ 3325 - if ((t != &average.threads) && (cpu_subset && !CPU_ISSET_S(t->cpu_id, cpu_subset_size, cpu_subset))) 3325 + if ((t != average.threads) && (cpu_subset && !CPU_ISSET_S(t->cpu_id, cpu_subset_size, cpu_subset))) 3326 3326 return 0; 3327 3327 3328 3328 if (DO_BIC(BIC_USEC)) { ··· 3342 3342 tsc = t->tsc * tsc_tweak; 3343 3343 3344 3344 /* topo columns, print blanks on 1st (average) line */ 3345 - if (t == &average.threads) { 3345 + if (t == average.threads) { 3346 3346 if (DO_BIC(BIC_Package)) 3347 3347 outp += sprintf(outp, "%s-", (printed++ ? delim : "")); 3348 3348 if (DO_BIC(BIC_Die)) ··· 3723 3723 } 3724 3724 } 3725 3725 3726 - if (DO_BIC(BIC_SysWatt) && (t == &average.threads)) 3726 + if (DO_BIC(BIC_SysWatt) && (t == average.threads)) 3727 3727 outp += sprintf(outp, fmt8, (printed++ ? delim : ""), 3728 3728 rapl_counter_get_value(&pplat_cnt->energy_psys, RAPL_UNIT_WATTS, interval_float)); 3729 - if (DO_BIC(BIC_Sys_J) && (t == &average.threads)) 3729 + if (DO_BIC(BIC_Sys_J) && (t == average.threads)) 3730 3730 outp += sprintf(outp, fmt8, (printed++ ? delim : ""), 3731 3731 rapl_counter_get_value(&pplat_cnt->energy_psys, RAPL_UNIT_JOULES, interval_float)); 3732 3732 ··· 3766 3766 if ((!count || (header_iterations && !(count % header_iterations))) || !summary_only) 3767 3767 print_header("\t"); 3768 3768 3769 - format_counters(&average.threads, &average.cores, &average.packages); 3769 + format_counters(average.threads, average.cores, average.packages); 3770 3770 3771 3771 count++; 3772 3772 ··· 4170 4170 4171 4171 /* copy un-changing apic_id's */ 4172 4172 if (DO_BIC(BIC_APIC)) 4173 - average.threads.apic_id = t->apic_id; 4173 + average.threads->apic_id = t->apic_id; 4174 4174 if (DO_BIC(BIC_X2APIC)) 4175 - average.threads.x2apic_id = t->x2apic_id; 4175 + average.threads->x2apic_id = t->x2apic_id; 4176 4176 4177 4177 /* remember first tv_begin */ 4178 - if (average.threads.tv_begin.tv_sec == 0) 4179 - average.threads.tv_begin = procsysfs_tv_begin; 4178 + if (average.threads->tv_begin.tv_sec == 0) 4179 + average.threads->tv_begin = procsysfs_tv_begin; 4180 4180 4181 4181 /* remember last tv_end */ 4182 - average.threads.tv_end = t->tv_end; 4182 + average.threads->tv_end = t->tv_end; 4183 4183 4184 - average.threads.tsc += t->tsc; 4185 - average.threads.aperf += t->aperf; 4186 - average.threads.mperf += t->mperf; 4187 - average.threads.c1 += t->c1; 4184 + average.threads->tsc += t->tsc; 4185 + average.threads->aperf += t->aperf; 4186 + average.threads->mperf += t->mperf; 4187 + average.threads->c1 += t->c1; 4188 4188 4189 - average.threads.instr_count += t->instr_count; 4189 + average.threads->instr_count += t->instr_count; 4190 4190 4191 - average.threads.irq_count += t->irq_count; 4192 - average.threads.nmi_count += t->nmi_count; 4193 - average.threads.smi_count += t->smi_count; 4191 + average.threads->irq_count += t->irq_count; 4192 + average.threads->nmi_count += t->nmi_count; 4193 + average.threads->smi_count += t->smi_count; 4194 4194 4195 - average.threads.llc.references += t->llc.references; 4196 - average.threads.llc.misses += t->llc.misses; 4195 + average.threads->llc.references += t->llc.references; 4196 + average.threads->llc.misses += t->llc.misses; 4197 4197 4198 - average.threads.l2.references += t->l2.references; 4199 - average.threads.l2.hits += t->l2.hits; 4198 + average.threads->l2.references += t->l2.references; 4199 + average.threads->l2.hits += t->l2.hits; 4200 4200 4201 4201 for (i = 0, mp = sys.tp; mp; i++, mp = mp->next) { 4202 4202 if (mp->format == FORMAT_RAW) 4203 4203 continue; 4204 - average.threads.counter[i] += t->counter[i]; 4204 + average.threads->counter[i] += t->counter[i]; 4205 4205 } 4206 4206 4207 4207 for (i = 0, pp = sys.perf_tp; pp; i++, pp = pp->next) { 4208 4208 if (pp->format == FORMAT_RAW) 4209 4209 continue; 4210 - average.threads.perf_counter[i] += t->perf_counter[i]; 4210 + average.threads->perf_counter[i] += t->perf_counter[i]; 4211 4211 } 4212 4212 4213 4213 for (i = 0, ppmt = sys.pmt_tp; ppmt; i++, ppmt = ppmt->next) { 4214 - average.threads.pmt_counter[i] += t->pmt_counter[i]; 4214 + average.threads->pmt_counter[i] += t->pmt_counter[i]; 4215 4215 } 4216 4216 4217 4217 /* sum per-core values only for 1st thread in core */ 4218 4218 if (!is_cpu_first_thread_in_core(t, c)) 4219 4219 return 0; 4220 4220 4221 - average.cores.c3 += c->c3; 4222 - average.cores.c6 += c->c6; 4223 - average.cores.c7 += c->c7; 4224 - average.cores.mc6_us += c->mc6_us; 4221 + average.cores->c3 += c->c3; 4222 + average.cores->c6 += c->c6; 4223 + average.cores->c7 += c->c7; 4224 + average.cores->mc6_us += c->mc6_us; 4225 4225 4226 - average.cores.core_temp_c = MAX(average.cores.core_temp_c, c->core_temp_c); 4227 - average.cores.core_throt_cnt = MAX(average.cores.core_throt_cnt, c->core_throt_cnt); 4226 + average.cores->core_temp_c = MAX(average.cores->core_temp_c, c->core_temp_c); 4227 + average.cores->core_throt_cnt = MAX(average.cores->core_throt_cnt, c->core_throt_cnt); 4228 4228 4229 - rapl_counter_accumulate(&average.cores.core_energy, &c->core_energy); 4229 + rapl_counter_accumulate(&average.cores->core_energy, &c->core_energy); 4230 4230 4231 4231 for (i = 0, mp = sys.cp; mp; i++, mp = mp->next) { 4232 4232 if (mp->format == FORMAT_RAW) 4233 4233 continue; 4234 - average.cores.counter[i] += c->counter[i]; 4234 + average.cores->counter[i] += c->counter[i]; 4235 4235 } 4236 4236 4237 4237 for (i = 0, pp = sys.perf_cp; pp; i++, pp = pp->next) { 4238 4238 if (pp->format == FORMAT_RAW) 4239 4239 continue; 4240 - average.cores.perf_counter[i] += c->perf_counter[i]; 4240 + average.cores->perf_counter[i] += c->perf_counter[i]; 4241 4241 } 4242 4242 4243 4243 for (i = 0, ppmt = sys.pmt_cp; ppmt; i++, ppmt = ppmt->next) { 4244 - average.cores.pmt_counter[i] += c->pmt_counter[i]; 4244 + average.cores->pmt_counter[i] += c->pmt_counter[i]; 4245 4245 } 4246 4246 4247 4247 /* sum per-pkg values only for 1st core in pkg */ ··· 4249 4249 return 0; 4250 4250 4251 4251 if (DO_BIC(BIC_Totl_c0)) 4252 - average.packages.pkg_wtd_core_c0 += p->pkg_wtd_core_c0; 4252 + average.packages->pkg_wtd_core_c0 += p->pkg_wtd_core_c0; 4253 4253 if (DO_BIC(BIC_Any_c0)) 4254 - average.packages.pkg_any_core_c0 += p->pkg_any_core_c0; 4254 + average.packages->pkg_any_core_c0 += p->pkg_any_core_c0; 4255 4255 if (DO_BIC(BIC_GFX_c0)) 4256 - average.packages.pkg_any_gfxe_c0 += p->pkg_any_gfxe_c0; 4256 + average.packages->pkg_any_gfxe_c0 += p->pkg_any_gfxe_c0; 4257 4257 if (DO_BIC(BIC_CPUGFX)) 4258 - average.packages.pkg_both_core_gfxe_c0 += p->pkg_both_core_gfxe_c0; 4258 + average.packages->pkg_both_core_gfxe_c0 += p->pkg_both_core_gfxe_c0; 4259 4259 4260 - average.packages.pc2 += p->pc2; 4260 + average.packages->pc2 += p->pc2; 4261 4261 if (DO_BIC(BIC_Pkgpc3)) 4262 - average.packages.pc3 += p->pc3; 4262 + average.packages->pc3 += p->pc3; 4263 4263 if (DO_BIC(BIC_Pkgpc6)) 4264 - average.packages.pc6 += p->pc6; 4264 + average.packages->pc6 += p->pc6; 4265 4265 if (DO_BIC(BIC_Pkgpc7)) 4266 - average.packages.pc7 += p->pc7; 4267 - average.packages.pc8 += p->pc8; 4268 - average.packages.pc9 += p->pc9; 4269 - average.packages.pc10 += p->pc10; 4270 - average.packages.die_c6 += p->die_c6; 4266 + average.packages->pc7 += p->pc7; 4267 + average.packages->pc8 += p->pc8; 4268 + average.packages->pc9 += p->pc9; 4269 + average.packages->pc10 += p->pc10; 4270 + average.packages->die_c6 += p->die_c6; 4271 4271 4272 - average.packages.cpu_lpi = p->cpu_lpi; 4273 - average.packages.sys_lpi = p->sys_lpi; 4272 + average.packages->cpu_lpi = p->cpu_lpi; 4273 + average.packages->sys_lpi = p->sys_lpi; 4274 4274 4275 - rapl_counter_accumulate(&average.packages.energy_pkg, &p->energy_pkg); 4276 - rapl_counter_accumulate(&average.packages.energy_dram, &p->energy_dram); 4277 - rapl_counter_accumulate(&average.packages.energy_cores, &p->energy_cores); 4278 - rapl_counter_accumulate(&average.packages.energy_gfx, &p->energy_gfx); 4275 + rapl_counter_accumulate(&average.packages->energy_pkg, &p->energy_pkg); 4276 + rapl_counter_accumulate(&average.packages->energy_dram, &p->energy_dram); 4277 + rapl_counter_accumulate(&average.packages->energy_cores, &p->energy_cores); 4278 + rapl_counter_accumulate(&average.packages->energy_gfx, &p->energy_gfx); 4279 4279 4280 - average.packages.gfx_rc6_ms = p->gfx_rc6_ms; 4281 - average.packages.uncore_mhz = p->uncore_mhz; 4282 - average.packages.gfx_mhz = p->gfx_mhz; 4283 - average.packages.gfx_act_mhz = p->gfx_act_mhz; 4284 - average.packages.sam_mc6_ms = p->sam_mc6_ms; 4285 - average.packages.sam_mhz = p->sam_mhz; 4286 - average.packages.sam_act_mhz = p->sam_act_mhz; 4280 + average.packages->gfx_rc6_ms = p->gfx_rc6_ms; 4281 + average.packages->uncore_mhz = p->uncore_mhz; 4282 + average.packages->gfx_mhz = p->gfx_mhz; 4283 + average.packages->gfx_act_mhz = p->gfx_act_mhz; 4284 + average.packages->sam_mc6_ms = p->sam_mc6_ms; 4285 + average.packages->sam_mhz = p->sam_mhz; 4286 + average.packages->sam_act_mhz = p->sam_act_mhz; 4287 4287 4288 - average.packages.pkg_temp_c = MAX(average.packages.pkg_temp_c, p->pkg_temp_c); 4288 + average.packages->pkg_temp_c = MAX(average.packages->pkg_temp_c, p->pkg_temp_c); 4289 4289 4290 - rapl_counter_accumulate(&average.packages.rapl_pkg_perf_status, &p->rapl_pkg_perf_status); 4291 - rapl_counter_accumulate(&average.packages.rapl_dram_perf_status, &p->rapl_dram_perf_status); 4290 + rapl_counter_accumulate(&average.packages->rapl_pkg_perf_status, &p->rapl_pkg_perf_status); 4291 + rapl_counter_accumulate(&average.packages->rapl_dram_perf_status, &p->rapl_dram_perf_status); 4292 4292 4293 4293 for (i = 0, mp = sys.pp; mp; i++, mp = mp->next) { 4294 4294 if ((mp->format == FORMAT_RAW) && (topo.num_packages == 0)) 4295 - average.packages.counter[i] = p->counter[i]; 4295 + average.packages->counter[i] = p->counter[i]; 4296 4296 else 4297 - average.packages.counter[i] += p->counter[i]; 4297 + average.packages->counter[i] += p->counter[i]; 4298 4298 } 4299 4299 4300 4300 for (i = 0, pp = sys.perf_pp; pp; i++, pp = pp->next) { 4301 4301 if ((pp->format == FORMAT_RAW) && (topo.num_packages == 0)) 4302 - average.packages.perf_counter[i] = p->perf_counter[i]; 4302 + average.packages->perf_counter[i] = p->perf_counter[i]; 4303 4303 else 4304 - average.packages.perf_counter[i] += p->perf_counter[i]; 4304 + average.packages->perf_counter[i] += p->perf_counter[i]; 4305 4305 } 4306 4306 4307 4307 for (i = 0, ppmt = sys.pmt_pp; ppmt; i++, ppmt = ppmt->next) { 4308 - average.packages.pmt_counter[i] += p->pmt_counter[i]; 4308 + average.packages->pmt_counter[i] += p->pmt_counter[i]; 4309 4309 } 4310 4310 4311 4311 return 0; ··· 4322 4322 struct perf_counter_info *pp; 4323 4323 struct pmt_counter *ppmt; 4324 4324 4325 - clear_counters(&average.threads, &average.cores, &average.packages); 4325 + clear_counters(average.threads, average.cores, average.packages); 4326 4326 4327 4327 for_all_cpus(sum_counters, t, c, p); 4328 4328 4329 4329 /* Use the global time delta for the average. */ 4330 - average.threads.tv_delta = tv_delta; 4330 + average.threads->tv_delta = tv_delta; 4331 4331 4332 - average.threads.tsc /= topo.allowed_cpus; 4333 - average.threads.aperf /= topo.allowed_cpus; 4334 - average.threads.mperf /= topo.allowed_cpus; 4335 - average.threads.instr_count /= topo.allowed_cpus; 4336 - average.threads.c1 /= topo.allowed_cpus; 4332 + average.threads->tsc /= topo.allowed_cpus; 4333 + average.threads->aperf /= topo.allowed_cpus; 4334 + average.threads->mperf /= topo.allowed_cpus; 4335 + average.threads->instr_count /= topo.allowed_cpus; 4336 + average.threads->c1 /= topo.allowed_cpus; 4337 4337 4338 - if (average.threads.irq_count > 9999999) 4338 + if (average.threads->irq_count > 9999999) 4339 4339 sums_need_wide_columns = 1; 4340 - if (average.threads.nmi_count > 9999999) 4340 + if (average.threads->nmi_count > 9999999) 4341 4341 sums_need_wide_columns = 1; 4342 4342 4343 - average.cores.c3 /= topo.allowed_cores; 4344 - average.cores.c6 /= topo.allowed_cores; 4345 - average.cores.c7 /= topo.allowed_cores; 4346 - average.cores.mc6_us /= topo.allowed_cores; 4343 + average.cores->c3 /= topo.allowed_cores; 4344 + average.cores->c6 /= topo.allowed_cores; 4345 + average.cores->c7 /= topo.allowed_cores; 4346 + average.cores->mc6_us /= topo.allowed_cores; 4347 4347 4348 4348 if (DO_BIC(BIC_Totl_c0)) 4349 - average.packages.pkg_wtd_core_c0 /= topo.allowed_packages; 4349 + average.packages->pkg_wtd_core_c0 /= topo.allowed_packages; 4350 4350 if (DO_BIC(BIC_Any_c0)) 4351 - average.packages.pkg_any_core_c0 /= topo.allowed_packages; 4351 + average.packages->pkg_any_core_c0 /= topo.allowed_packages; 4352 4352 if (DO_BIC(BIC_GFX_c0)) 4353 - average.packages.pkg_any_gfxe_c0 /= topo.allowed_packages; 4353 + average.packages->pkg_any_gfxe_c0 /= topo.allowed_packages; 4354 4354 if (DO_BIC(BIC_CPUGFX)) 4355 - average.packages.pkg_both_core_gfxe_c0 /= topo.allowed_packages; 4355 + average.packages->pkg_both_core_gfxe_c0 /= topo.allowed_packages; 4356 4356 4357 - average.packages.pc2 /= topo.allowed_packages; 4357 + average.packages->pc2 /= topo.allowed_packages; 4358 4358 if (DO_BIC(BIC_Pkgpc3)) 4359 - average.packages.pc3 /= topo.allowed_packages; 4359 + average.packages->pc3 /= topo.allowed_packages; 4360 4360 if (DO_BIC(BIC_Pkgpc6)) 4361 - average.packages.pc6 /= topo.allowed_packages; 4361 + average.packages->pc6 /= topo.allowed_packages; 4362 4362 if (DO_BIC(BIC_Pkgpc7)) 4363 - average.packages.pc7 /= topo.allowed_packages; 4363 + average.packages->pc7 /= topo.allowed_packages; 4364 4364 4365 - average.packages.pc8 /= topo.allowed_packages; 4366 - average.packages.pc9 /= topo.allowed_packages; 4367 - average.packages.pc10 /= topo.allowed_packages; 4368 - average.packages.die_c6 /= topo.allowed_packages; 4365 + average.packages->pc8 /= topo.allowed_packages; 4366 + average.packages->pc9 /= topo.allowed_packages; 4367 + average.packages->pc10 /= topo.allowed_packages; 4368 + average.packages->die_c6 /= topo.allowed_packages; 4369 4369 4370 4370 for (i = 0, mp = sys.tp; mp; i++, mp = mp->next) { 4371 4371 if (mp->format == FORMAT_RAW) 4372 4372 continue; 4373 4373 if (mp->type == COUNTER_ITEMS) { 4374 - if (average.threads.counter[i] > 9999999) 4374 + if (average.threads->counter[i] > 9999999) 4375 4375 sums_need_wide_columns = 1; 4376 4376 continue; 4377 4377 } 4378 - average.threads.counter[i] /= topo.allowed_cpus; 4378 + average.threads->counter[i] /= topo.allowed_cpus; 4379 4379 } 4380 4380 for (i = 0, mp = sys.cp; mp; i++, mp = mp->next) { 4381 4381 if (mp->format == FORMAT_RAW) 4382 4382 continue; 4383 4383 if (mp->type == COUNTER_ITEMS) { 4384 - if (average.cores.counter[i] > 9999999) 4384 + if (average.cores->counter[i] > 9999999) 4385 4385 sums_need_wide_columns = 1; 4386 4386 } 4387 - average.cores.counter[i] /= topo.allowed_cores; 4387 + average.cores->counter[i] /= topo.allowed_cores; 4388 4388 } 4389 4389 for (i = 0, mp = sys.pp; mp; i++, mp = mp->next) { 4390 4390 if (mp->format == FORMAT_RAW) 4391 4391 continue; 4392 4392 if (mp->type == COUNTER_ITEMS) { 4393 - if (average.packages.counter[i] > 9999999) 4393 + if (average.packages->counter[i] > 9999999) 4394 4394 sums_need_wide_columns = 1; 4395 4395 } 4396 - average.packages.counter[i] /= topo.allowed_packages; 4396 + average.packages->counter[i] /= topo.allowed_packages; 4397 4397 } 4398 4398 4399 4399 for (i = 0, pp = sys.perf_tp; pp; i++, pp = pp->next) { 4400 4400 if (pp->format == FORMAT_RAW) 4401 4401 continue; 4402 4402 if (pp->type == COUNTER_ITEMS) { 4403 - if (average.threads.perf_counter[i] > 9999999) 4403 + if (average.threads->perf_counter[i] > 9999999) 4404 4404 sums_need_wide_columns = 1; 4405 4405 continue; 4406 4406 } 4407 - average.threads.perf_counter[i] /= topo.allowed_cpus; 4407 + average.threads->perf_counter[i] /= topo.allowed_cpus; 4408 4408 } 4409 4409 for (i = 0, pp = sys.perf_cp; pp; i++, pp = pp->next) { 4410 4410 if (pp->format == FORMAT_RAW) 4411 4411 continue; 4412 4412 if (pp->type == COUNTER_ITEMS) { 4413 - if (average.cores.perf_counter[i] > 9999999) 4413 + if (average.cores->perf_counter[i] > 9999999) 4414 4414 sums_need_wide_columns = 1; 4415 4415 } 4416 - average.cores.perf_counter[i] /= topo.allowed_cores; 4416 + average.cores->perf_counter[i] /= topo.allowed_cores; 4417 4417 } 4418 4418 for (i = 0, pp = sys.perf_pp; pp; i++, pp = pp->next) { 4419 4419 if (pp->format == FORMAT_RAW) 4420 4420 continue; 4421 4421 if (pp->type == COUNTER_ITEMS) { 4422 - if (average.packages.perf_counter[i] > 9999999) 4422 + if (average.packages->perf_counter[i] > 9999999) 4423 4423 sums_need_wide_columns = 1; 4424 4424 } 4425 - average.packages.perf_counter[i] /= topo.allowed_packages; 4425 + average.packages->perf_counter[i] /= topo.allowed_packages; 4426 4426 } 4427 4427 4428 4428 for (i = 0, ppmt = sys.pmt_tp; ppmt; i++, ppmt = ppmt->next) { 4429 - average.threads.pmt_counter[i] /= topo.allowed_cpus; 4429 + average.threads->pmt_counter[i] /= topo.allowed_cpus; 4430 4430 } 4431 4431 for (i = 0, ppmt = sys.pmt_cp; ppmt; i++, ppmt = ppmt->next) { 4432 - average.cores.pmt_counter[i] /= topo.allowed_cores; 4432 + average.cores->pmt_counter[i] /= topo.allowed_cores; 4433 4433 } 4434 4434 for (i = 0, ppmt = sys.pmt_pp; ppmt; i++, ppmt = ppmt->next) { 4435 - average.packages.pmt_counter[i] /= topo.allowed_packages; 4435 + average.packages->pmt_counter[i] /= topo.allowed_packages; 4436 4436 } 4437 4437 } 4438 4438 ··· 9687 9687 9688 9688 } 9689 9689 9690 + void allocate_counters_1(struct thread_data **t, struct core_data **c, struct pkg_data **p) 9691 + { 9692 + *t = calloc(1, sizeof(struct thread_data)); 9693 + if (*t == NULL) 9694 + goto error; 9695 + 9696 + *c = calloc(1, sizeof(struct core_data)); 9697 + if (*c == NULL) 9698 + goto error; 9699 + 9700 + *p = calloc(1, sizeof(struct pkg_data)); 9701 + if (*p == NULL) 9702 + goto error; 9703 + 9704 + return; 9705 + error: 9706 + err(1, "calloc counters_1"); 9707 + } 9690 9708 void allocate_counters(struct thread_data **t, struct core_data **c, struct pkg_data **p) 9691 9709 { 9692 9710 int i; ··· 9831 9813 topology_probe(startup); 9832 9814 allocate_irq_buffers(); 9833 9815 allocate_fd_percpu(); 9816 + allocate_counters_1(&average.threads, &average.cores, &average.packages); 9834 9817 allocate_counters(&thread_even, &core_even, &package_even); 9835 9818 allocate_counters(&thread_odd, &core_odd, &package_odd); 9836 9819 allocate_output_buffer();