Wie funktioniert sched_setaffinity() arbeiten?

Ich versuche zu verstehen, wie die linux-syscall-sched_setaffinity() funktioniert. Dies ist ein follow-on aus meine Frage hier.

Habe ich diese Anleitung, die erläutert, wie die syscall-und hat eine Recht ordentliche (arbeiten!) Beispiel.

Also ich habe die Linux 2.6.27.19 kernel-Quellen.

Habe ich ein 'grep' für Linien, die mit diesem syscall, und ich bekam die 91 Ergebnisse. Nicht vielversprechend.

Letztendlich bin ich aber versuchen zu verstehen, wie der kernel ist in der Lage, den instruction pointer für einen bestimmten Kern (oder Prozessor.)

Ich bin vertraut mit, wie die single-core-single-thread-Programme arbeiten. Man könnte Ausgabe ein "jmp foo' instruction, und das ist im Grunde legt die IP mit der Speicheradresse von 'foo' label. Aber wenn man mehrere Kerne hat man zu sagen, "Holen sich die nächste Instruktion in Speicher-Adresse foo, und setzen Sie den instruction-pointer für core Nummer 2 zu beginnen Ausführung."

Wo, in den Assembler-code, werden wir angeben, welche Kern führt, dass die operation?

Zurück zu den kernel-code: was ist hier wichtig? In der Datei 'kernel/sched.c' hat eine Funktion sched_setaffinity(), gibt aber den Typ "long" - was im Widerspruch mit seiner Handbuch Seite. Also, was ist hier wichtig? Welche dieser Module zeigt die Montage Anweisungen erteilt? Was Moduls ist das Lesen der 'task_struct' Blick auf die 'cpus_allowed" Mitglied, und dann übersetzen, dass in einer Anweisung? (Hab ich auch blätterte in der glibc-source - aber ich denke, es macht einfach einen Aufruf der kernel-code, um diese Aufgabe zu erfüllen.)

InformationsquelleAutor poundifdef | 2009-04-19
Schreibe einen Kommentar