PR_RISCV_SET_ICACHE_FLUSH_CTX(2const) PR_RISCV_SET_ICACHE_FLUSH_CTX(2const) BEZEICHNUNG PR_RISCV_SET_ICACHE_FLUSH_CTX - (De)aktiviert Icache-Rausschreibanweisungen im Anwendungsraum BIBLIOTHEK Standard-C-Bibliothek (libc, -lc) UBERSICHT #include /* Definition der PR_*-Konstanten */ #include int prctl(PR_RISCV_SET_ICACHE_FLUSH_CTX, unsigned long ktx, unsigned long Bereich); BESCHREIBUNG Der Kontext und der Bereich kann mit ktx bzw. Bereich angegeben werden. Wird Bereich auf PR_RISCV_SCOPE_PER_PROCESS gesetzt, dann ist es allen Threads in dem Prozess erlaubt, Icache-Rausschreibanweisungen auszugeben. Immer wenn ein Thread im Prozess migriert wird, ist garantiert, dass der entsprechende Icache des Harts mit dem Anweisungsspeicher konsistent ist. Ausserhalb der Migration erzwingt dies keine Garantie. Falls ein Thread eine Anweisung verandert, die ein anderer Thread auszufuhren versucht, muss der andere Thread weiterhin eine Icache-Rausschreibanweisung ausgeben, bevor er die Ausfuhrung der moglicherweise veranderten Anweisung versucht. Dies muss durch das Programm im Anwendungsraum ausgefuhrt werden. Im Thread-bezogenen Kontext (d.h. Bereich ist beispielsweise auf PR_RISCV_SCOPE_PER_THREAD gesetzt), ist es nur dem Thread, der diese Funktion aufruft, erlaubt, Icache-Rausschreibanweisungen auszugeben. Wird der Thread migriert, wird garantiert, dass der entsprechende Icache des Harts konsistent mit Anweisungsspeicher ist. Auf Kerneln, auf denen kein SMP konfiguriert ist, ist dieser prctl PR_RISCV_SET_ICACHE_FLUSH_CTX eine Leeroperation, da Migrationen uber Harts nicht auftreten werden. Fur ktx konnen die folgenden Werte angegeben werden: PR_RISCV_CTX_SW_FENCEI_ON (seit Linux 6.10) Fence.i im Anwendungsraum erlauben. PR_RISCV_CTX_SW_FENCEI_OFF (seit Linux 6.10) Fence.i im Anwendungsraum verbieten. Alle Threads in einem Prozess werden davon betroffen, wenn Bereich auf PR_RISCV_SCOPE_PER_PROCESS gesetzt ist. Daher mussen Sie Vorsicht walten lassen. Verwenden Sie den Schalter nur, wenn Sie garantieren konnen, dass kein Thread im Prozess ab diesem Zeitpunkt fence.i ausgeben wird. Fur Bereich konnen die folgenden Werte angegeben werden: PR_RISCV_SCOPE_PER_PROCESS (seit Linux 6.10) Stellt sicher, dass der Icache jedes Threads in diesem Prozess zum Anweisungsspeicher bei der Migration koharent ist. PR_RISCV_SCOPE_PER_THREAD (seit Linux 6.10) Stellt sicher, dass der Icache des aktuellen Threads bei der Migration koharent zu dem Anweisungsspeicher ist. BEISPIELE Bei den folgenden Dateien ist vorgesehen, dass sie miteinander kompiliert und gelinkt werden. Die Funktion modify_instruction() ersetzt eine Addition von Null durch eine Addition mit Eins, was dazu fuhrt, dass sich die Ruckgabe der Anweisungssequenz in get_value() von Null auf Eins andert. Programmquelle: cmodx.c #include #include extern int get_value(void); extern void modify_instruction(void); int main(void) { int value = get_value(); printf("Wert vor cmodx: %d\n", value); // prctl wird vor erstem fence.i aufgerufen prctl(PR_RISCV_SET_ICACHE_FLUSH_CTX, PR_RISCV_CTX_SW_FENCEI_ON, PR_RISCV_SCOPE_PER_PROCESS); modify_instruction(); // prctl wird nach abschliessendem fence.i im Prozess aufgerufen prctl(PR_RISCV_SET_ICACHE_FLUSH_CTX, PR_RISCV_CTX_SW_FENCEI_OFF, PR_RISCV_SCOPE_PER_PROCESS); value = get_value(); printf("Wert nach cmodx: %d\n", value); return 0; } Programmquelle: cmodx.S .option norvc .text .global modify_instruction modify_instruction: lw a0, new_insn lui a5,%hi(old_insn) sw a0,%lo(old_insn)(a5) fence.i ret .section modifiable, "awx" .global get_value get_value: li a0, 0 old_insn: addi a0, a0, 0 ret .data new_insn: addi a0, a0, 1 Erwartetes Ergebnis Wert vor cmodx: 0 Wert nach cmodx: 1 STANDARDS Linux. Nur RISC-V. GESCHICHTE Linux 6.10 (RISC-V). SIEHE AUCH prctl(2) 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 PR_RISCV_SET_ICACHE_FLUSH_CTX(2const)