Enables html and csv report new stlyes for "CPU Frequency" section,
While preserving translation macros.
Signed-off-by: Alexandra Yates <alexandra.yates(a)linux.intel.com>
---
src/cpu/cpu.cpp | 139 ++++++++++++++++++++++++++++++++++++++++---------------
1 file changed, 101 insertions(+), 38 deletions(-)
diff --git a/src/cpu/cpu.cpp b/src/cpu/cpu.cpp
index b8f74a8..c3787e6 100644
--- a/src/cpu/cpu.cpp
+++ b/src/cpu/cpu.cpp
@@ -612,29 +612,81 @@ void report_display_cpu_cstates(void)
void report_display_cpu_pstates(void)
{
- char buffer[512], buffer2[512];
+ char buffer[512], buffer2[512], tmp_num[50];
unsigned int package, core, cpu;
int line;
class abstract_cpu *_package, * _core, * _cpu;
unsigned int i, pstates_num;
- for (i = 0, pstates_num = 0; i < all_cpus.size(); i++)
+ /* div attr css_class and css_id */
+ tag_attr div_attr;
+ init_div(&div_attr, "clear_block", "cpufreq");
+
+ /* Set Table attributes, rows, and cols */
+ table_attributes std_table_css;
+ table_size pkg_tbl_size;
+ table_size core_tbl_size;
+ table_size cpu_tbl_size;
+
+
+ /* Set Title attributes */
+ tag_attr title_attr;
+ init_title_attr(&title_attr);
+
+ /* Report add section */
+ report.add_div(&div_attr);
+ report.add_title(&title_attr, __("Processor Frequency Report"));
+
+ /* Set array of data in row Major order */
+ int idx1, idx2, idx3, num_cpus=0;
+ string tmp_str;
+
+ for (i = 0, pstates_num = 0; i < all_cpus.size(); i++) {
if (all_cpus[i])
pstates_num = std::max<unsigned int>(pstates_num,
- all_cpus[i]->pstates.size());
-
- report.begin_section(SECTION_CPUFREQ);
- report.add_header("Processor Frequency Report");
+ all_cpus[i]->pstates.size());
+ }
for (package = 0; package < system_level.children.size(); package++) {
bool first_core = true;
+ idx1=0;
+ idx2=0;
+ idx3=0;
_package = system_level.children[package];
if (!_package)
continue;
- report.begin_table(TABLE_WIDE);
+ /* Tables for PKG, CORE, CPU */
+ pkg_tbl_size.cols=2;
+ pkg_tbl_size.rows=pstates_num+2;
+ string pkg_data[pkg_tbl_size.cols * pkg_tbl_size.rows];
+
+ core_tbl_size.cols=2;
+ core_tbl_size.rows=((pstates_num+2) *_package->children.size());
+ string core_data[core_tbl_size.cols * core_tbl_size.rows];
+
+ /* PKG */
+ num_cpus=0;
+ for (core = 0; core < _package->children.size(); core++) {
+ _core = _package->children[core];
+ if (!_core)
+ continue;
+ for (cpu = 0; cpu < _core->children.size(); cpu++) {
+ if (!_cpu)
+ continue;
+ _cpu = _core->children[cpu];
+ num_cpus+=1;
+ }
+ }
+ cpu_tbl_size.cols= num_cpus+1;
+ cpu_tbl_size.rows= (pstates_num+2)* _package->children.size();
+ string cpu_data[cpu_tbl_size.cols * cpu_tbl_size.rows];
+
+ /* Core */
for (core = 0; core < _package->children.size(); core++) {
+ cpu_data[idx3]=" ";
+ idx3+=1;
_core = _package->children[core];
if (!_core)
continue;
@@ -646,75 +698,86 @@ void report_display_cpu_pstates(void)
bool first_cpu = true;
if (!_package->has_pstate_level(line))
- continue;
-
- report.begin_row();
+ continue;
buffer[0] = 0;
buffer2[0] = 0;
if (first_core) {
if (line == LEVEL_HEADER) {
- report.begin_cell(CELL_FIRST_PACKAGE_HEADER);
- report.addf(__("Package %i"), _package->get_number());
+ pkg_data[idx1]=__("Package");
+ idx1+=1;
+ sprintf(tmp_num,"%d", _package->get_number());
+ pkg_data[idx1]= string(tmp_num);
+ idx1+=1;
} else {
- report.begin_cell(CELL_STATE_NAME);
- report.add(_package->fill_pstate_name(line, buffer));
- report.begin_cell(CELL_PACKAGE_STATE_VALUE);
- report.add(_package->fill_pstate_line(line, buffer2));
+ tmp_str=string(_package->fill_pstate_name(line, buffer));
+ pkg_data[idx1]=(tmp_str=="" ? " " : tmp_str);
+ idx1+=1;
+ tmp_str=string(_package->fill_pstate_line(line, buffer2));
+ pkg_data[idx1]=(tmp_str=="" ? " " : tmp_str);
+ idx1+=1;
}
- } else {
- report.begin_cell(CELL_EMPTY_PACKAGE_STATE);
- report.add_empty_cell();
}
- report.begin_cell(CELL_SEPARATOR);
- report.add_empty_cell();
if (!_core->can_collapse()) {
buffer[0] = 0;
buffer2[0] = 0;
if (line == LEVEL_HEADER) {
- report.begin_cell(CELL_CORE_HEADER);
- report.addf(__("Core %i"), _core->get_number());
+ core_data[idx2]="";
+ idx2+=1;
+ sprintf(tmp_num,__("Core %d"),_core->get_number());
+ core_data[idx2]=string(tmp_num);
+ idx2+=1;
} else {
- report.begin_cell(CELL_STATE_NAME);
- report.add(_core->fill_pstate_name(line, buffer));
- report.begin_cell(CELL_PACKAGE_STATE_VALUE);
- report.add(_core->fill_pstate_line(line, buffer2));
+ tmp_str=string(_core->fill_pstate_name(line, buffer));
+ core_data[idx2]= (tmp_str=="" ? " " : tmp_str);
+ idx2+=1;
+ tmp_str=string(_core->fill_pstate_line(line, buffer2));
+ core_data[idx2]= (tmp_str=="" ? " " : tmp_str);
+ idx2+=1;
}
}
- report.begin_cell(CELL_SEPARATOR);
- report.add_empty_cell();
-
+ /* CPU */
for (cpu = 0; cpu < _core->children.size(); cpu++) {
buffer[0] = 0;
_cpu = _core->children[cpu];
if (!_cpu)
continue;
- report.set_cpu_number(cpu);
if (line == LEVEL_HEADER) {
- report.begin_cell(CELL_CPU_PSTATE_HEADER);
- report.addf(__("CPU %i"), _cpu->get_number());
+ sprintf(tmp_num,__("CPU %d"),_cpu->get_number());
+ cpu_data[idx3] = string(tmp_num);
+ idx3+=1;
continue;
}
if (first_cpu) {
- report.begin_cell(CELL_STATE_NAME);
- report.add(_cpu->fill_pstate_name(line, buffer));
+ tmp_str=string(_cpu->fill_pstate_name(line, buffer));
+ cpu_data[idx3]=(tmp_str=="" ? " " : tmp_str);
+ idx3+=1;
first_cpu = false;
}
buffer[0] = 0;
- report.begin_cell(CELL_CPU_STATE_VALUE);
- report.add(_cpu->fill_pstate_line(line, buffer));
+ tmp_str=string(_cpu->fill_pstate_line(line, buffer));
+ cpu_data[idx3]=(tmp_str=="" ? " " : tmp_str);
+ idx3+=1;
}
}
-
first_core = false;
}
+ init_pkg_table_attr(&std_table_css, pkg_tbl_size.rows, pkg_tbl_size.cols);
+ report.add_table(pkg_data, &std_table_css);
+ init_core_table_attr(&std_table_css, (pstates_num+2),
+ core_tbl_size.rows, core_tbl_size.cols);
+ report.add_table(core_data, &std_table_css);
+ init_cpu_table_attr(&std_table_css, (pstates_num+2),
+ cpu_tbl_size.rows, cpu_tbl_size.cols);
+ report.add_table(cpu_data, &std_table_css);
}
+ report.end_div();
}
void impl_w_display_cpu_states(int state)
--
1.7.9.5