1#include <profiling.h>
2
3extern struct profiling_entry __skernel_profiling_data[];
4extern struct profiling_entry __ekernel_profiling_data[];
5
6#ifdef PROFILING_ENABLED
7void profiling_init(void) {
8 INIT_LIST_HEAD(&global.profiling_list_head);
9 struct profiling_entry *start = __skernel_profiling_data;
10 struct profiling_entry *end = __ekernel_profiling_data;
11
12 for (struct profiling_entry *pe = start; pe < end; pe++)
13 list_add(&pe->list_node, &global.profiling_list_head);
14}
15
16void profiling_log_all(void) {
17 struct profiling_entry *start = __skernel_profiling_data;
18 struct profiling_entry *end = __ekernel_profiling_data;
19
20 for (struct profiling_entry *pe = start; pe < end; pe++)
21 pe->log(pe->data);
22}
23#else
24void profiling_init(void) { /* Nothing */ }
25void profiling_log_all(void) { /* Nothing */ }
26#endif
27