Hello Stefan,
On Fri, 26 Sep 2008, Stefan Reinauer wrote:
Hi Ulf,
Ulf Jordan wrote:
Index: coreinfo/cpuinfo_module.c
--- coreinfo/cpuinfo_module.c (revision 3569) +++ coreinfo/cpuinfo_module.c (working copy) @@ -97,6 +97,7 @@ { int i; int lrow = *row;
int output_available=0; wmove(win, lrow, 2);
@@ -104,8 +105,10 @@ if (flags[i] == NULL) continue;
if (reg & (1 << i))
if (reg & (1 << i)) { wprintw(win, "%s ", flags[i]);
output_available=1;
} if (i && (i % 16) == 0) { lrow++;
@@ -113,6 +116,8 @@ } }
lrow += output_available;
*row = lrow;
}
@@ -131,7 +136,7 @@
switch (vendor) { case VENDOR_AMD:
wmove(win, lrow++, 1);
wmove(win, lrow, 1); wprintw(win, "AMD Extended Flags: ");
This hunk will make the decoded flags overwrite the heading, please remove.
In which case would that happen? The lrow += output_available; part above prevents this on my system. Does it not work as intended on your machine?
lrow += output_available; makes certain that there is space *after* already written flags, but this is another issue.
By removing the ++, the extended flags are written onto the "Intel Extended Flags:/AMD Extended Flags:" heading, starting in position three. I've tested in QEMU, and the result is as follows.
Without patch: Features: fpu de pse tsc msr pae mce cx8 apic sep pge cmov pat mmx fxsr sse sse2 Intel Extended Flags: sse3
With patch: Features: fpu de pse tsc msr pae mce cx8 apic sep pge cmov pat mmx fxsr sse sse2
Isse3 Extended Flags:
With patch, excluding last two hunks: Features: fpu de pse tsc msr pae mce cx8 apic sep pge cmov pat mmx fxsr sse sse2
Intel Extended Flags: sse3
The reason for overwriting when ++ is removed is that wmove positions the cursor at current lrow and wprintw prints the heading. Directly afterwards, decode_flags starts writing the decode flags at lrow (unchanged), but at x = 2.
This is the reason I suggested the patch to be applied, except for the last two hunks.
Regards,
Ulf