cpuid unter C auslesen (ioctl)

Herakles

Profifragensteller
Moin!

Ich würde gern in C die CPUID auslesen. Gibt es dafür vielleicht einen vorgefertigten ioctl-Befehl, der das kann?

Grüße, Herakles
 
Code:
#include <stdio.h>

int main(void)
{
  unsigned max;   // eax
  unsigned id[3]; // ebx, edx (!), ecx (!)
  asm("cpuid" : "=a" (max), "=b" (id[0]), "=c" (id[2]), "=d" (id[1]) : "a" (0));
  printf("ID: \"%.12s\", max input value: %u\n", (char const*)id, max);
  return 0;
}
 
Hi Tron!

Danke für die Antwort - nur leider möchte ich nicht den Namen der CPU haben, sondern eher die Seriennummer. Natürlich würde ich jetzt gern einfach das Programm adaptieren und nach der Seriennummer suchen, aber ich verstehe NULL von dem Code. Da versteckt sich Assembler, wenn ich das richtig sehe - weiterbringen tut mich das nicht. Ich hab wirklich keine Ahnung, was da geschieht...

Kannst Du mir einen TIpp geben, wie ich vorzugehen hätte?


Grüße
Herakles
 
Der Wert in eax ("a") bestimmt die gewünschte Funktion (im Beispiel Funktion 0). Das Ergebnis wird in eax, ecx, edx und ebx ("=a", "=c", "=d", "=b") zurückgegeben. Die verschiedenen Funktionen von CPUID kannst du im Intel-Dokument 253666 nachlesen. Seriennummern werden nur sehr wenigen Prozessoren unterstützt (oder meinst du Family/Model/Stepping?).
 
Danke für die Infos, werde mich da mal reindenken und wenn ich eine Lösung habe, hier posten!

Herakles
 
Zurück
Oben