Von Intel Software-Entwickler Handbuch 3b, lernte ich MSR (10H) gleich RDTSC kennen. Also wollte ich es mit Stück Code, um zu überprüfen, wie in meinem Programm folgt:Wie rdmsr von c-Programm zugreifen?
asm volatile("rdmsr":"=a"(lo),"=d"(hi):"c"(0x10));
Aber wenn ich mein Programm laufen zeigte Segmentierungsfehler. Dann erkannte ich die Warnung, dass es nur in Privilegstufe 0 funktioniert. Also starte ich das Programm erneut mit sudo access. Dieses Mal lief das Programm ohne seg-Fehler, aber die Anweisung nach asm volatile (..) wird nicht ausgeführt. Selbst wenn es nicht klappt.
Was soll ich tun, damit rdmsr in meinem Programm funktioniert? (ich benutze Linux auf i7 Kern, der diese Zähler unterstützt. Ich überprüfte es.)
Einige verwandte Beiträge sind Cannot read back from MSR und rdmsr,wrmsr from c/c++ code
Privilege Level 0 ist Kernel-Modus. Es ist keine Wurzel. – immibis