Home
last modified time | relevance | path

Searched refs:tool (Results 1 – 25 of 370) sorted by relevance

12345678910>>...15

/linux/tools/perf/util/
H A Dtool.c16 static int perf_session__process_compressed_event(const struct perf_tool *tool __maybe_unused, in perf_session__process_compressed_event()
83 static int process_event_synth_tracing_data_stub(const struct perf_tool *tool __maybe_unused, in process_event_synth_tracing_data_stub()
91 static int process_event_synth_attr_stub(const struct perf_tool *tool __maybe_unused, in process_event_synth_attr_stub()
99 static int process_event_synth_event_update_stub(const struct perf_tool *tool __maybe_unused, in process_event_synth_event_update_stub()
110 int process_event_sample_stub(const struct perf_tool *tool __maybe_unused, in process_event_sample_stub()
120 static int process_event_stub(const struct perf_tool *tool __maybe_unused, in process_event_stub()
129 static int process_finished_round_stub(const struct perf_tool *tool __maybe_unused, in process_finished_round_stub()
152 static s64 process_event_auxtrace_stub(const struct perf_tool *tool __maybe_unused, in process_event_auxtrace_stub()
162 static int process_event_op2_stub(const struct perf_tool *tool __maybe_unused, in process_event_op2_stub()
172 int process_event_thread_map_stub(const struct perf_tool *tool __maybe_unused, in process_event_thread_map_stub()
[all …]
H A Dsynthetic-events.h44 typedef int (*perf_event__handler_t)(const struct perf_tool *tool, union perf_event *event,
47 int perf_event__synthesize_attrs(const struct perf_tool *tool, struct evlist *evlist, perf_event__h…
48 int perf_event__synthesize_attr(const struct perf_tool *tool, struct perf_event_attr *attr, u32 ids…
49 int perf_event__synthesize_build_id(const struct perf_tool *tool,
57 int perf_event__synthesize_mmap2_build_id(const struct perf_tool *tool,
68 int perf_event__synthesize_cpu_map(const struct perf_tool *tool, const struct perf_cpu_map *cpus, p…
69 int perf_event__synthesize_event_update_cpus(const struct perf_tool *tool, struct evsel *evsel, per…
70 int perf_event__synthesize_event_update_name(const struct perf_tool *tool, struct evsel *evsel, per…
71 int perf_event__synthesize_event_update_scale(const struct perf_tool *tool, struct evsel *evsel, pe…
72 int perf_event__synthesize_event_update_unit(const struct perf_tool *tool, struct evsel *evsel, per…
[all …]
H A Ddata-convert-json.c36 struct perf_tool tool; member
131 static void output_sample_callchain_entry(const struct perf_tool *tool, in output_sample_callchain_entry() argument
134 struct convert_json *c = container_of(tool, struct convert_json, tool); in output_sample_callchain_entry()
159 static int process_sample_event(const struct perf_tool *tool, in process_sample_event() argument
165 struct convert_json *c = container_of(tool, struct convert_json, tool); in process_sample_event()
238 output_sample_callchain_entry(tool, ip, ok ? &tal : NULL); in process_sample_event()
242 output_sample_callchain_entry(tool, sample->ip, &al); in process_sample_event()
329 static int process_feature_event(const struct perf_tool *tool __maybe_unused, in process_feature_event()
359 perf_tool__init(&c.tool, /*ordered_events=*/true); in bt_convert__perf2json()
360 c.tool.sample = process_sample_event; in bt_convert__perf2json()
[all …]
H A Dtool.h18 typedef int (*event_sample)(const struct perf_tool *tool, union perf_event *event,
22 typedef int (*event_op)(const struct perf_tool *tool, union perf_event *event,
25 typedef int (*event_attr_op)(const struct perf_tool *tool,
29 typedef int (*event_op2)(const struct perf_tool *tool, struct perf_session *session,
31 typedef s64 (*event_op3)(const struct perf_tool *tool, struct perf_session *session,
33 typedef int (*event_op4)(const struct perf_tool *tool, struct perf_session *session,
36 typedef int (*event_oe)(const struct perf_tool *tool, union perf_event *event,
99 void perf_tool__init(struct perf_tool *tool, bool ordered_events);
101 bool perf_tool__compressed_is_stub(const struct perf_tool *tool);
103 int process_event_sample_stub(const struct perf_tool *tool,
[all …]
H A Dsession.c47 const struct perf_tool *tool,
136 session->tool, event->file_offset, in ordered_events__deliver_event()
141 struct perf_tool *tool, in __perf_session__new() argument
152 session->tool = tool; in __perf_session__new()
218 if ((!data || !data->is_pipe) && tool && tool->ordering_requires_timestamps && in __perf_session__new()
219 tool->ordered_events && !evlist__sample_id_all(session->evlist)) { in __perf_session__new()
221 tool->ordered_events = false; in __perf_session__new()
798 int perf_event__process_finished_round(const struct perf_tool *tool __maybe_unused, in perf_event__process_finished_round()
1252 const struct perf_tool *tool, in deliver_sample_value() argument
1286 return tool->sample(tool, event, sample, evsel, machine); in deliver_sample_value()
[all …]
H A Devent.h301 int perf_event__process_comm(const struct perf_tool *tool,
305 int perf_event__process_lost(const struct perf_tool *tool,
309 int perf_event__process_lost_samples(const struct perf_tool *tool,
313 int perf_event__process_aux(const struct perf_tool *tool,
317 int perf_event__process_itrace_start(const struct perf_tool *tool,
321 int perf_event__process_aux_output_hw_id(const struct perf_tool *tool,
325 int perf_event__process_switch(const struct perf_tool *tool,
329 int perf_event__process_namespaces(const struct perf_tool *tool,
333 int perf_event__process_cgroup(const struct perf_tool *tool,
337 int perf_event__process_mmap(const struct perf_tool *tool,
[all …]
H A Dsynthetic-events.c51 int perf_tool__process_synth_event(const struct perf_tool *tool, in perf_tool__process_synth_event() argument
66 return process(tool, event, &synth_sample, machine); in perf_tool__process_synth_event()
191 pid_t perf_event__synthesize_comm(const struct perf_tool *tool, in perf_event__synthesize_comm() argument
203 if (perf_tool__process_synth_event(tool, event, machine, process) != 0) in perf_event__synthesize_comm()
222 int perf_event__synthesize_namespaces(const struct perf_tool *tool, in perf_event__synthesize_namespaces() argument
231 if (!tool || !tool->namespace_events) in perf_event__synthesize_namespaces()
255 if (perf_tool__process_synth_event(tool, event, machine, process) != 0) in perf_event__synthesize_namespaces()
261 static int perf_event__synthesize_fork(const struct perf_tool *tool, in perf_event__synthesize_fork() argument
288 if (perf_tool__process_synth_event(tool, event, machine, process) != 0) in perf_event__synthesize_fork()
428 int perf_event__synthesize_mmap_events(const struct perf_tool *tool, in perf_event__synthesize_mmap_events() argument
[all …]
/linux/tools/tracing/rtla/src/
H A Dcommon.c31 * set_signals - handles the signal to stop the tool in set_signals()
52 * if the option should be handled by tool-specific parsing. in common_apply_config()
121 * common_apply_config - apply common configs to the initialized tool in run_tool()
124 common_apply_config(struct osnoise_tool *tool, struct common_params *params) in run_tool()
131 retval = osnoise_set_cpus(tool->context, params->cpus ? params->cpus : "all"); in run_tool()
165 retval = osnoise_set_workload(tool->context, params->kernel_workload); in run_tool()
182 struct osnoise_tool *tool; in run_tool()
190 tool = ops->init_tool(params); in run_tool()
191 if (!tool) { in run_tool()
192 err_msg("Could not init osnoise tool\ in run_tool()
44 common_apply_config(struct osnoise_tool * tool,struct common_params * params) common_apply_config() argument
102 struct osnoise_tool *tool; run_tool() local
243 top_main_loop(struct osnoise_tool * tool) top_main_loop() argument
301 hist_main_loop(struct osnoise_tool * tool) hist_main_loop() argument
[all...]
H A Dtimerlat.c25 * timerlat_apply_config - apply common configs to the initialized tool
28 timerlat_apply_config(struct osnoise_tool *tool, struct timerlat_params *params)
39 } else if (!tep_find_event_by_name(tool->trace.tep, "osnoise", "timerlat_sample")) { in timerlat_apply_config()
61 retval = osnoise_set_timerlat_period_us(tool->context, in timerlat_apply_config()
71 retval = osnoise_set_print_stack(tool->context, params->print_stack); in timerlat_apply_config()
93 return common_apply_config(tool, &params->common); in timerlat_apply_config()
99 int timerlat_enable(struct osnoise_tool *tool) in timerlat_apply_config()
101 struct timerlat_params *params = to_timerlat_params(tool->params); in timerlat_apply_config()
133 tool->aa = osnoise_init_tool("timerlat_aa"); in timerlat_enable()
134 if (!tool in timerlat_enable()
29 timerlat_apply_config(struct osnoise_tool * tool,struct timerlat_params * params) timerlat_apply_config() argument
108 timerlat_enable(struct osnoise_tool * tool) timerlat_enable() argument
190 timerlat_analyze(struct osnoise_tool * tool,bool stopped) timerlat_analyze() argument
213 timerlat_free(struct osnoise_tool * tool) timerlat_free() argument
[all...]
H A Dosnoise_hist.c56 static void osnoise_free_hist_tool(struct osnoise_tool *tool)
58 osnoise_free_histogram(tool->data); in osnoise_free_hist_tool()
99 static void osnoise_hist_update_multiple(struct osnoise_tool *tool, int cpu,
102 struct osnoise_params *params = to_osnoise_params(tool->params); in osnoise_hist_update_multiple()
103 struct osnoise_hist_data *data = tool->data; in osnoise_hist_update_multiple()
131 static void osnoise_destroy_trace_hist(struct osnoise_tool *tool)
133 struct osnoise_hist_data *data = tool->data; in osnoise_destroy_trace_hist()
135 tracefs_hist_pause(tool->trace.inst, data->trace_hist); in osnoise_destroy_trace_hist()
136 tracefs_hist_destroy(tool->trace.inst, data->trace_hist); in osnoise_destroy_trace_hist()
142 static int osnoise_init_trace_hist(struct osnoise_tool *tool)
57 osnoise_free_hist_tool(struct osnoise_tool * tool) osnoise_free_hist_tool() argument
100 osnoise_hist_update_multiple(struct osnoise_tool * tool,int cpu,unsigned long long duration,int count) osnoise_hist_update_multiple() argument
132 osnoise_destroy_trace_hist(struct osnoise_tool * tool) osnoise_destroy_trace_hist() argument
143 osnoise_init_trace_hist(struct osnoise_tool * tool) osnoise_init_trace_hist() argument
180 osnoise_read_trace_hist(struct osnoise_tool * tool) osnoise_read_trace_hist() argument
228 osnoise_hist_header(struct osnoise_tool * tool) osnoise_hist_header() argument
337 osnoise_print_stats(struct osnoise_tool * tool) osnoise_print_stats() argument
690 osnoise_hist_apply_config(struct osnoise_tool * tool) osnoise_hist_apply_config() argument
701 struct osnoise_tool *tool; osnoise_init_hist() local
722 osnoise_hist_enable(struct osnoise_tool * tool) osnoise_hist_enable() argument
733 osnoise_hist_main_loop(struct osnoise_tool * tool) osnoise_hist_main_loop() argument
[all...]
H A Dtimerlat_aa.c115 struct osnoise_tool *tool; member
494 function = tep_find_function(taa_ctx->tool->trace.tep, caller[i]); in timerlat_aa_stack_handler()
706 struct trace_instance *trace = &taa_ctx->tool->trace; in timerlat_auto_analysis_collect_trace()
771 tep = taa_ctx->tool->trace.tep; in timerlat_auto_analysis()
896 static void timerlat_aa_unregister_events(struct osnoise_tool *tool, int dump_tasks) in timerlat_aa_unregister_events() argument
899 tep_unregister_event_handler(tool->trace.tep, -1, "ftrace", "timerlat", in timerlat_aa_unregister_events()
900 timerlat_aa_handler, tool); in timerlat_aa_unregister_events()
902 tracefs_event_disable(tool->trace.inst, "osnoise", NULL); in timerlat_aa_unregister_events()
904 tep_unregister_event_handler(tool->trace.tep, -1, "osnoise", "nmi_noise", in timerlat_aa_unregister_events()
905 timerlat_aa_nmi_handler, tool); in timerlat_aa_unregister_events()
[all …]
H A Dcommon.h117 * osnoise_tool - osnoise based tool definition.
138 int (*apply_config)(struct osnoise_tool *tool);
139 int (*enable)(struct osnoise_tool *tool);
140 int (*main)(struct osnoise_tool *tool);
141 void (*print_stats)(struct osnoise_tool *tool);
142 void (*analyze)(struct osnoise_tool *tool, bool stopped);
143 void (*free)(struct osnoise_tool *tool);
154 bool osnoise_trace_is_off(struct osnoise_tool *tool, struct osnoise_tool *record);
160 int common_apply_config(struct osnoise_tool *tool, struct common_params *params);
161 int top_main_loop(struct osnoise_tool *tool);
[all...]
H A Dosnoise_top.c46 static void osnoise_free_top_tool(struct osnoise_tool *tool) in osnoise_free_top_tool() argument
48 osnoise_free_top(tool->data); in osnoise_free_top_tool()
84 struct osnoise_tool *tool; in osnoise_top_handler() local
90 tool = container_of(trace, struct osnoise_tool, trace); in osnoise_top_handler()
92 data = tool->data; in osnoise_top_handler()
126 * osnoise_top_header - print the header of the tool output
189 static void osnoise_top_print(struct osnoise_tool *tool, int cpu) in osnoise_top_print() argument
191 struct osnoise_params *params = to_osnoise_params(tool->params); in osnoise_top_print()
192 struct trace_seq *s = tool->trace.seq; in osnoise_top_print()
198 data = tool in osnoise_top_print()
518 osnoise_top_apply_config(struct osnoise_tool * tool) osnoise_top_apply_config() argument
549 struct osnoise_tool *tool; osnoise_init_top() local
[all...]
H A Dtimerlat_hist.c76 static void timerlat_free_histogram_tool(struct osnoise_tool *tool) in timerlat_free_histogram_tool() argument
78 timerlat_free_histogram(tool->data); in timerlat_free_histogram_tool()
79 timerlat_free(tool); in timerlat_free_histogram_tool()
137 timerlat_hist_update(struct osnoise_tool *tool, int cpu, in timerlat_hist_update() argument
141 struct timerlat_params *params = to_timerlat_params(tool->params); in timerlat_hist_update()
142 struct timerlat_hist_data *data = tool->data; in timerlat_hist_update()
187 struct osnoise_tool *tool; in timerlat_hist_handler() local
190 tool = container_of(trace, struct osnoise_tool, trace); in timerlat_hist_handler()
195 timerlat_hist_update(tool, cpu, context, latency); in timerlat_hist_handler()
203 static int timerlat_hist_bpf_pull_data(struct osnoise_tool *tool) in timerlat_hist_bpf_pull_data() argument
286 timerlat_hist_header(struct osnoise_tool * tool) timerlat_hist_header() argument
613 timerlat_print_stats(struct osnoise_tool * tool) timerlat_print_stats() argument
1058 timerlat_hist_apply_config(struct osnoise_tool * tool) timerlat_hist_apply_config() argument
1079 struct osnoise_tool *tool; timerlat_init_hist() local
1103 timerlat_hist_bpf_main_loop(struct osnoise_tool * tool) timerlat_hist_bpf_main_loop() argument
1136 timerlat_hist_main(struct osnoise_tool * tool) timerlat_hist_main() argument
[all...]
H A Dosnoise.c1012 * osnoise_init_tool - init an osnoise tool
1015 * creates a new trace instance for the tool.
1070 bool osnoise_trace_is_off(struct osnoise_tool *tool, struct osnoise_tool *record) in osnoise_trace_is_off() argument
1073 * The tool instance is always present, it is the one used to collect in osnoise_trace_is_off()
1076 if (!tracefs_trace_is_on(tool->trace.inst)) in osnoise_trace_is_off()
1091 osnoise_report_missed_events(struct osnoise_tool *tool) in osnoise_report_missed_events() argument
1095 if (tool->trace.missed_events == UINT64_MAX) in osnoise_report_missed_events()
1097 else if (tool->trace.missed_events > 0) { in osnoise_report_missed_events()
1098 total_events = tool->trace.processed_events + tool in osnoise_report_missed_events()
1110 osnoise_apply_config(struct osnoise_tool * tool,struct osnoise_params * params) osnoise_apply_config() argument
1155 osnoise_enable(struct osnoise_tool * tool) osnoise_enable() argument
[all...]
H A Dtimerlat_top.c56 static void timerlat_free_top_tool(struct osnoise_tool *tool)
58 timerlat_free_top(tool->data); in timerlat_free_top_tool()
59 timerlat_free(tool); in timerlat_free_top_tool()
105 timerlat_top_update_sum(struct osnoise_tool *tool, int cpu, struct timerlat_top_cpu *sum)
107 struct timerlat_top_data *data = tool->data; in timerlat_top_update_sum()
130 timerlat_top_update(struct osnoise_tool *tool, int cpu,
134 struct timerlat_params *params = to_timerlat_params(tool->params); in timerlat_top_update()
135 struct timerlat_top_data *data = tool->data; in timerlat_top_update()
189 static int timerlat_top_bpf_pull_data(struct osnoise_tool *tool)
191 struct timerlat_top_data *data = tool in timerlat_top_bpf_pull_data()
57 timerlat_free_top_tool(struct osnoise_tool * tool) timerlat_free_top_tool() argument
106 timerlat_top_update_sum(struct osnoise_tool * tool,int cpu,struct timerlat_top_cpu * sum) timerlat_top_update_sum() argument
131 timerlat_top_update(struct osnoise_tool * tool,int cpu,unsigned long long thread,unsigned long long latency) timerlat_top_update() argument
190 timerlat_top_bpf_pull_data(struct osnoise_tool * tool) timerlat_top_bpf_pull_data() argument
856 timerlat_top_bpf_main_loop(struct osnoise_tool * tool) timerlat_top_bpf_main_loop() argument
909 timerlat_top_main_loop(struct osnoise_tool * tool) timerlat_top_main_loop() argument
[all...]
H A Dtimerlat.h35 int timerlat_apply_config(struct osnoise_tool *tool, struct timerlat_params *params);
37 int timerlat_enable(struct osnoise_tool *tool);
38 void timerlat_analyze(struct osnoise_tool *tool, bool stopped);
39 void timerlat_free(struct osnoise_tool *tool);
/linux/tools/perf/
H A Dbuiltin-inject.c81 struct perf_tool tool; member
115 struct perf_tool tool; member
146 static int tool__inject_build_id(const struct perf_tool *tool,
153 static int tool__inject_mmap2_build_id(const struct perf_tool *tool,
176 static int perf_event__repipe_synth(const struct perf_tool *tool, in perf_event__repipe_synth() argument
180 struct perf_inject *inject = container_of(tool, struct perf_inject, in perf_event__repipe_synth()
181 tool); in perf_event__repipe_synth()
186 static int perf_event__repipe_oe_synth(const struct perf_tool *tool, in perf_event__repipe_oe_synth() argument
190 return perf_event__repipe_synth(tool, event); in perf_event__repipe_oe_synth()
194 static int perf_event__drop_oe(const struct perf_tool *tool __maybe_unused, in perf_event__drop_oe()
[all …]
H A Dbuiltin-mem.c33 struct perf_tool tool; member
181 dump_raw_samples(const struct perf_tool *tool, in dump_raw_samples() argument
186 struct perf_mem *mem = container_of(tool, struct perf_mem, tool); in dump_raw_samples()
255 static int process_sample_event(const struct perf_tool *tool, in process_sample_event() argument
261 return dump_raw_samples(tool, event, sample, machine); in process_sample_event()
280 perf_tool__init(&mem->tool, /*ordered_events=*/true); in report_raw_events()
281 mem->tool.sample = process_sample_event; in report_raw_events()
282 mem->tool.mmap = perf_event__process_mmap; in report_raw_events()
283 mem->tool.mmap2 = perf_event__process_mmap2; in report_raw_events()
284 mem->tool.comm = perf_event__process_comm; in report_raw_events()
[all …]
H A Dbuiltin-report.c77 struct perf_tool tool; member
243 static int process_feature_event(const struct perf_tool *tool, in process_feature_event() argument
247 struct report *rep = container_of(tool, struct report, tool); in process_feature_event()
269 static int process_sample_event(const struct perf_tool *tool, in process_sample_event() argument
275 struct report *rep = container_of(tool, struct report, tool); in process_sample_event()
349 static int process_read_event(const struct perf_tool *tool, in process_read_event() argument
355 struct report *rep = container_of(tool, struct report, tool); in process_read_event()
784 static int count_sample_event(const struct perf_tool *tool __maybe_unused, in count_sample_event()
796 static int count_lost_samples_event(const struct perf_tool *tool, in count_lost_samples_event() argument
801 struct report *rep = container_of(tool, struct report, tool); in count_lost_samples_event()
[all …]
H A Dbuiltin-evlist.c22 static int process_header_feature(const struct perf_tool *tool __maybe_unused, in process_header_feature()
39 struct perf_tool tool; in __cmd_evlist() local
42 perf_tool__init(&tool, /*ordered_events=*/false); in __cmd_evlist()
44 tool.attr = perf_event__process_attr; in __cmd_evlist()
45 tool.feature = process_header_feature; in __cmd_evlist()
46 session = perf_session__new(&data, &tool); in __cmd_evlist()
H A Dbuiltin-script.c145 struct perf_tool tool; member
2640 static int process_sample_event(const struct perf_tool *tool, in process_sample_event() argument
2646 struct perf_script *scr = container_of(tool, struct perf_script, tool); in process_sample_event()
2724 static int process_deferred_sample_event(const struct perf_tool *tool, in process_deferred_sample_event() argument
2730 struct perf_script *scr = container_of(tool, struct perf_script, tool); in process_deferred_sample_event()
2815 static int process_attr(const struct perf_tool *tool, union perf_event *event, in process_attr() argument
2818 struct perf_script *scr = container_of(tool, struct perf_script, tool); in process_attr()
2825 err = perf_event__process_attr(tool, event, pevlist); in process_attr()
2883 static int print_event_with_time(const struct perf_tool *tool, in print_event_with_time() argument
2889 struct perf_script *script = container_of(tool, struct perf_script, tool); in print_event_with_time()
[all …]
H A Dbuiltin-annotate.c50 struct perf_tool tool; member
284 static int process_sample_event(const struct perf_tool *tool, in process_sample_event() argument
290 struct perf_annotate *ann = container_of(tool, struct perf_annotate, tool); in process_sample_event()
316 static int process_feature_event(const struct perf_tool *tool __maybe_unused, in process_feature_event()
863 perf_tool__init(&annotate.tool, /*ordered_events=*/true); in cmd_annotate()
864 annotate.tool.sample = process_sample_event; in cmd_annotate()
865 annotate.tool.mmap = perf_event__process_mmap; in cmd_annotate()
866 annotate.tool.mmap2 = perf_event__process_mmap2; in cmd_annotate()
867 annotate.tool.comm = perf_event__process_comm; in cmd_annotate()
868 annotate.tool.exit = perf_event__process_exit; in cmd_annotate()
[all …]
/linux/tools/perf/tests/
H A Devent_update.c15 static int process_event_unit(const struct perf_tool *tool __maybe_unused, in process_event_unit()
28 static int process_event_scale(const struct perf_tool *tool __maybe_unused, in process_event_scale()
42 struct perf_tool tool; member
46 static int process_event_name(const struct perf_tool *tool, in process_event_name() argument
51 struct event_name *tmp = container_of(tool, struct event_name, tool); in process_event_name()
60 static int process_event_cpus(const struct perf_tool *tool __maybe_unused, in process_event_cpus()
106 perf_tool__init(&tmp.tool, /*ordered_events=*/false); in test__event_update()
110 !perf_event__synthesize_event_update_name(&tmp.tool, evsel, process_event_name)); in test__event_update()
116 !perf_event__synthesize_event_update_cpus(&tmp.tool, evsel, process_event_cpus)); in test__event_update()
/linux/Documentation/tools/rtla/
H A Drtla-hwnoise.rst3 .. |tool| replace:: hwnoise substdef
27 The tool also allows the configurations of the *osnoise* tracer and the
40 In the example below, the **rtla hwnoise** tool is set to run on CPUs *1-7*
43 The tool is set to detect any noise higher than *one microsecond*,
61 *Periods* the tool ran during the session. The *Runtime* is the time
62 the tool effectively runs on the CPU. The *Noise* column is the sum of
63 all noise that the tool observed, and the *% CPU Aval* is the relation
66 The *Max Noise* column is the maximum hardware noise the tool detected in a
70 occurrence observed by the tool.
80 The tool should report *0* hardware-related noise in the ideal situation.

12345678910>>...15