getcpu(2) System Calls Manual getcpu(2) BEZEICHNUNG getcpu - Bestimmt den CPU- und NUMA-Knoten, auf dem der aufrufende Thread lauft BIBLIOTHEK Standard-C-Bibliothek (libc, -lc) UBERSICHT #define _GNU_SOURCE /* siehe feature_test_macros(7) */ #include int getcpu(unsigned int *_Nullable CPU, unsigned int *_Nullable Knoten); BESCHREIBUNG Der Systemaufruf getcpu() identifiziert den Prozessor und Knoten, auf dem der aufrufende Thread derzeit lauft und schreibt sie in Ganzzahlen, auf die die Argumente CPU und Knoten zeigen. Der Prozessor ist eine kleine, eindeutige Ganzzahl, die die CPU identifiziert. Der Knoten ist ein kleiner eindeutiger Kennzeichner, der einen NUMA-Knoten identifiziert. Wenn entweder CPU oder Knoten NULL ist, wird auf den entsprechenden Zeiger nichts geschrieben. Die in CPU abgelegte Information wird nur zum Zeitpunkt des Aufrufs als aktuell garantiert. Der Kernel kann jederzeit die CPU andern, ausser die CPU-Affinitat wurde mit sched_setaffinity(2) festgelegt. (Normalerweise passiert dies nicht, da der Scheduler die Bewegungen zwischen CPUs zu minimieren versucht, um die Zwischenspeicher aktuell zu halten, aber es ist moglich.) Der Aufrufende muss die Moglichkeit in Betracht ziehen, dass die in CPU und Knoten zuruckgelieferten Informationen zum Zeitpunkt des Abschlusses des Aufrufs nicht mehr aktuell sind. RUCKGABEWERT Bei Erfolg wird 0 zuruckgegeben. Bei einem Fehler wird -1 zuruckgegeben und errno gesetzt, um den Fehler anzuzeigen. FEHLER EFAULT Argumente zeigen ausserhalb des Adressraums des aufrufenden Prozesses. STANDARDS Linux. GESCHICHTE Linux 2.6.19 (X86-64 und I386), Glibc 2.29. Unterschiede C-Bibliothek/Kernel Der Kernel-Systemaufruf hat ein drittes Argument: int getcpu(unsigned int *CPU, unsigned int *Knoten, struct getcpu_cache *tcache); Das Argument tcache wird seit Linux 2.6.24 nicht mehr verwandt und sollte (beim direkten Aufruf des Systemaufrufs) als NULL angegeben werden, ausser die Portabilitat zu Linux 2.6.23 oder alter wird benotigt. In Linux 2.6.23 und alter legte das Argument tcache, wenn es nicht NULL war, einen Zeiger auf einen Puffer, der vom aufrufenden in einem Thread-lokalen Speicher reserviert wurde, fest, der zur Bereitstellung eines Zwischenspeichermechanismus fur getcpu() verwandt wurde. Die Verwendung des Zwischenspeichers beschleunigte die Aufrufe von getcpu(), es gab allerdings eine sehr kleine Wahrscheinlichkeit, dass die zuruckgelieferte Information veraltet war. Der Zwischenspeichermechanismus wurde als Problemursache bei der Migration von Threads zwischen CPUs betrachtet und daher wird das Argument jetzt ignoriert. ANMERKUNGEN Linux bemuht sich so gut wie moglich, diesen Aufruf schnellstmoglich durchzufuhren. (Auf einigen Architekturen erfolgt dies durch eine Implementierung in vdso(7).) Die Idee hinter getcpu() besteht darin, es Programmen zu erlauben, Optimierungen fur CPU-bezogene Daten oder fur NUMA durchzufuhren. SIEHE AUCH mbind(2), sched_setaffinity(2), set_mempolicy(2), sched_getcpu(3), cpuset(7), vdso(7) UBERSETZUNG Die deutsche Ubersetzung dieser Handbuchseite wurde von Helge Kreutzmann erstellt. Diese Ubersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezuglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG ubernommen. Wenn Sie Fehler in der Ubersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die Mailingliste der Ubersetzer . Linux man-pages 6.18 8. Februar 2026 getcpu(2)