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

tools/rtla: Add for_each_monitored_cpu() helper

The rtla tools have many instances of iterating over CPUs while
checking if they are monitored.

Add a for_each_monitored_cpu() helper macro to make the code
more readable and reduce code duplication.

Signed-off-by: Costa Shulyupin <costa.shul@redhat.com>
Reviewed-by: Tomas Glozar <tglozar@redhat.com>
Link: https://lore.kernel.org/r/20251002123553.389467-1-costa.shul@redhat.com
Signed-off-by: Tomas Glozar <tglozar@redhat.com>

authored by

Costa Shulyupin and committed by
Tomas Glozar
04fa6bf3 0d5077c7

+23 -58
+4
tools/tracing/rtla/src/common.h
··· 107 107 struct timerlat_u_params user; 108 108 }; 109 109 110 + #define for_each_monitored_cpu(cpu, nr_cpus, common) \ 111 + for (cpu = 0; cpu < nr_cpus; cpu++) \ 112 + if (!(common)->cpus || CPU_ISSET(cpu, &(common)->monitored_cpus)) 113 + 110 114 struct tool_ops; 111 115 112 116 /*
+7 -21
tools/tracing/rtla/src/osnoise_hist.c
··· 247 247 if (!params->common.hist.no_index) 248 248 trace_seq_printf(s, "Index"); 249 249 250 - for (cpu = 0; cpu < data->nr_cpus; cpu++) { 251 - if (params->common.cpus && !CPU_ISSET(cpu, &params->common.monitored_cpus)) 252 - continue; 250 + for_each_monitored_cpu(cpu, data->nr_cpus, &params->common) { 253 251 254 252 if (!data->hist[cpu].count) 255 253 continue; ··· 276 278 if (!params->common.hist.no_index) 277 279 trace_seq_printf(trace->seq, "count:"); 278 280 279 - for (cpu = 0; cpu < data->nr_cpus; cpu++) { 280 - if (params->common.cpus && !CPU_ISSET(cpu, &params->common.monitored_cpus)) 281 - continue; 281 + for_each_monitored_cpu(cpu, data->nr_cpus, &params->common) { 282 282 283 283 if (!data->hist[cpu].count) 284 284 continue; ··· 288 292 if (!params->common.hist.no_index) 289 293 trace_seq_printf(trace->seq, "min: "); 290 294 291 - for (cpu = 0; cpu < data->nr_cpus; cpu++) { 292 - if (params->common.cpus && !CPU_ISSET(cpu, &params->common.monitored_cpus)) 293 - continue; 295 + for_each_monitored_cpu(cpu, data->nr_cpus, &params->common) { 294 296 295 297 if (!data->hist[cpu].count) 296 298 continue; ··· 301 307 if (!params->common.hist.no_index) 302 308 trace_seq_printf(trace->seq, "avg: "); 303 309 304 - for (cpu = 0; cpu < data->nr_cpus; cpu++) { 305 - if (params->common.cpus && !CPU_ISSET(cpu, &params->common.monitored_cpus)) 306 - continue; 310 + for_each_monitored_cpu(cpu, data->nr_cpus, &params->common) { 307 311 308 312 if (!data->hist[cpu].count) 309 313 continue; ··· 317 325 if (!params->common.hist.no_index) 318 326 trace_seq_printf(trace->seq, "max: "); 319 327 320 - for (cpu = 0; cpu < data->nr_cpus; cpu++) { 321 - if (params->common.cpus && !CPU_ISSET(cpu, &params->common.monitored_cpus)) 322 - continue; 328 + for_each_monitored_cpu(cpu, data->nr_cpus, &params->common) { 323 329 324 330 if (!data->hist[cpu].count) 325 331 continue; ··· 352 362 trace_seq_printf(trace->seq, "%-6d", 353 363 bucket * data->bucket_size); 354 364 355 - for (cpu = 0; cpu < data->nr_cpus; cpu++) { 356 - if (params->common.cpus && !CPU_ISSET(cpu, &params->common.monitored_cpus)) 357 - continue; 365 + for_each_monitored_cpu(cpu, data->nr_cpus, &params->common) { 358 366 359 367 if (!data->hist[cpu].count) 360 368 continue; ··· 388 400 if (!params->common.hist.no_index) 389 401 trace_seq_printf(trace->seq, "over: "); 390 402 391 - for (cpu = 0; cpu < data->nr_cpus; cpu++) { 392 - if (params->common.cpus && !CPU_ISSET(cpu, &params->common.monitored_cpus)) 393 - continue; 403 + for_each_monitored_cpu(cpu, data->nr_cpus, &params->common) { 394 404 395 405 if (!data->hist[cpu].count) 396 406 continue;
+1 -3
tools/tracing/rtla/src/osnoise_top.c
··· 243 243 244 244 osnoise_top_header(top); 245 245 246 - for (i = 0; i < nr_cpus; i++) { 247 - if (params->common.cpus && !CPU_ISSET(i, &params->common.monitored_cpus)) 248 - continue; 246 + for_each_monitored_cpu(i, nr_cpus, &params->common) { 249 247 osnoise_top_print(top, i); 250 248 } 251 249
+2 -7
tools/tracing/rtla/src/timerlat.c
··· 126 126 127 127 nr_cpus = sysconf(_SC_NPROCESSORS_CONF); 128 128 129 - for (i = 0; i < nr_cpus; i++) { 130 - if (params->common.cpus && !CPU_ISSET(i, &params->common.monitored_cpus)) 131 - continue; 129 + for_each_monitored_cpu(i, nr_cpus, &params->common) { 132 130 if (save_cpu_idle_disable_state(i) < 0) { 133 131 err_msg("Could not save cpu idle state.\n"); 134 132 return -1; ··· 219 221 if (dma_latency_fd >= 0) 220 222 close(dma_latency_fd); 221 223 if (params->deepest_idle_state >= -1) { 222 - for (i = 0; i < nr_cpus; i++) { 223 - if (params->common.cpus && 224 - !CPU_ISSET(i, &params->common.monitored_cpus)) 225 - continue; 224 + for_each_monitored_cpu(i, nr_cpus, &params->common) { 226 225 restore_cpu_idle_disable_state(i); 227 226 } 228 227 }
+8 -24
tools/tracing/rtla/src/timerlat_hist.c
··· 305 305 if (!params->common.hist.no_index) 306 306 trace_seq_printf(s, "Index"); 307 307 308 - for (cpu = 0; cpu < data->nr_cpus; cpu++) { 309 - if (params->common.cpus && !CPU_ISSET(cpu, &params->common.monitored_cpus)) 310 - continue; 308 + for_each_monitored_cpu(cpu, data->nr_cpus, &params->common) { 311 309 312 310 if (!data->hist[cpu].irq_count && !data->hist[cpu].thread_count) 313 311 continue; ··· 357 359 if (!params->common.hist.no_index) 358 360 trace_seq_printf(trace->seq, "count:"); 359 361 360 - for (cpu = 0; cpu < data->nr_cpus; cpu++) { 361 - if (params->common.cpus && !CPU_ISSET(cpu, &params->common.monitored_cpus)) 362 - continue; 362 + for_each_monitored_cpu(cpu, data->nr_cpus, &params->common) { 363 363 364 364 if (!data->hist[cpu].irq_count && !data->hist[cpu].thread_count) 365 365 continue; ··· 379 383 if (!params->common.hist.no_index) 380 384 trace_seq_printf(trace->seq, "min: "); 381 385 382 - for (cpu = 0; cpu < data->nr_cpus; cpu++) { 383 - if (params->common.cpus && !CPU_ISSET(cpu, &params->common.monitored_cpus)) 384 - continue; 386 + for_each_monitored_cpu(cpu, data->nr_cpus, &params->common) { 385 387 386 388 if (!data->hist[cpu].irq_count && !data->hist[cpu].thread_count) 387 389 continue; ··· 407 413 if (!params->common.hist.no_index) 408 414 trace_seq_printf(trace->seq, "avg: "); 409 415 410 - for (cpu = 0; cpu < data->nr_cpus; cpu++) { 411 - if (params->common.cpus && !CPU_ISSET(cpu, &params->common.monitored_cpus)) 412 - continue; 416 + for_each_monitored_cpu(cpu, data->nr_cpus, &params->common) { 413 417 414 418 if (!data->hist[cpu].irq_count && !data->hist[cpu].thread_count) 415 419 continue; ··· 435 443 if (!params->common.hist.no_index) 436 444 trace_seq_printf(trace->seq, "max: "); 437 445 438 - for (cpu = 0; cpu < data->nr_cpus; cpu++) { 439 - if (params->common.cpus && !CPU_ISSET(cpu, &params->common.monitored_cpus)) 440 - continue; 446 + for_each_monitored_cpu(cpu, data->nr_cpus, &params->common) { 441 447 442 448 if (!data->hist[cpu].irq_count && !data->hist[cpu].thread_count) 443 449 continue; ··· 480 490 sum.min_thread = ~0; 481 491 sum.min_user = ~0; 482 492 483 - for (cpu = 0; cpu < data->nr_cpus; cpu++) { 484 - if (params->common.cpus && !CPU_ISSET(cpu, &params->common.monitored_cpus)) 485 - continue; 493 + for_each_monitored_cpu(cpu, data->nr_cpus, &params->common) { 486 494 487 495 if (!data->hist[cpu].irq_count && !data->hist[cpu].thread_count) 488 496 continue; ··· 627 639 trace_seq_printf(trace->seq, "%-6d", 628 640 bucket * data->bucket_size); 629 641 630 - for (cpu = 0; cpu < data->nr_cpus; cpu++) { 631 - if (params->common.cpus && !CPU_ISSET(cpu, &params->common.monitored_cpus)) 632 - continue; 642 + for_each_monitored_cpu(cpu, data->nr_cpus, &params->common) { 633 643 634 644 if (!data->hist[cpu].irq_count && !data->hist[cpu].thread_count) 635 645 continue; ··· 665 679 if (!params->common.hist.no_index) 666 680 trace_seq_printf(trace->seq, "over: "); 667 681 668 - for (cpu = 0; cpu < data->nr_cpus; cpu++) { 669 - if (params->common.cpus && !CPU_ISSET(cpu, &params->common.monitored_cpus)) 670 - continue; 682 + for_each_monitored_cpu(cpu, data->nr_cpus, &params->common) { 671 683 672 684 if (!data->hist[cpu].irq_count && !data->hist[cpu].thread_count) 673 685 continue;
+1 -3
tools/tracing/rtla/src/timerlat_top.c
··· 459 459 460 460 timerlat_top_header(params, top); 461 461 462 - for (i = 0; i < nr_cpus; i++) { 463 - if (params->common.cpus && !CPU_ISSET(i, &params->common.monitored_cpus)) 464 - continue; 462 + for_each_monitored_cpu(i, nr_cpus, &params->common) { 465 463 timerlat_top_print(top, i); 466 464 timerlat_top_update_sum(top, i, &summary); 467 465 }