.\" -*- coding: UTF-8 -*- .\" Copyright 2024, Rivos, Inc. .\" Copyright, the authors of the Linux man-pages project .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH PR_RISCV_SET_ICACHE_FLUSH_CTX 2const "8 فبراير 2026" "صفحات دليل لينكس 6.18" .SH الاسم PR_RISCV_SET_ICACHE_FLUSH_CTX \- تمكين/تعطيل تعليمات مسح ذاكرة التخزين المؤقت للتعليمات (icache) في مساحة المستخدم .SH المكتبة مكتبة سي المعيارية (\fIlibc\fP،\ \fI\-lc\fP) .SH موجز .nf \fB#include \fP /* تعريف ثوابت \fBPR_*\fP */ \fB#include \fP .P \fBint prctl(PR_RISCV_SET_ICACHE_FLUSH_CTX, unsigned long \fP\fIctx,\fP \fB unsigned long \fP\fIscope\fP\fB);\fP .fi .SH الوصف يمكن توفير السياق والنطاق باستخدام \fIctx\fP و \fIscope\fP على التوالي. .P عند ضبط \fIscope\fP على \fBPR_RISCV_SCOPE_PER_PROCESS\fP، يُسمح لجميع الخيوط في العملية بإصدار تعليمات مسح ذاكرة التخزين المؤقت للتعليمات. كلما تم ترحيل أي خيط في العملية، سيتم ضمان اتساق ذاكرة التخزين المؤقت للتعليمات للنواة المقابلة مع تخزين التعليمات. لا يفرض هذا أي ضمانات خارج الترحيل. إذا قام خيط بتعديل تعليمة قد يحاول خيط آخر تنفيذها، فلا يزال على الخيط الآخر إصدار تعليمة مسح ذاكرة التخزين المؤقت للتعليمات قبل محاولة تنفيذ التعليمة التي يحتمل تعديلها. يجب تنفيذ ذلك بواسطة برنامج مساحة المستخدم. .P في سياق كل خيط (أي، ضبط \fIscope\fP على \fBPR_RISCV_SCOPE_PER_THREAD\fP)، يُسمح فقط للخيط الذي يستدعي هذه الدالة بإصدار تعليمات مسح ذاكرة التخزين المؤقت للتعليمات. عندما يتم ترحيل الخيط، سيتم ضمان اتساق ذاكرة التخزين المؤقت للتعليمات للنواة المقابلة مع تخزين التعليمات. .P على النوى المكونة بدون SMP، يكون هذا الاستدعاء \fBPR_RISCV_SET_ICACHE_FLUSH_CTX\fP عديم التأثير حيث لن تحدث عمليات ترحيل عبر النوى. .P يمكن تحديد القيم التالية لـ \fIctx\fP: .TP \fBPR_RISCV_CTX_SW_FENCEI_ON\fP (منذ لينكس 6.10) السماح بـ fence.i في مساحة المستخدم. .TP \fBPR_RISCV_CTX_SW_FENCEI_OFF\fP (منذ لينكس 6.10) منع fence.i في مساحة المستخدم. ستتأثر جميع الخيوط في العملية عند ضبط \fIscope\fP على \fBPR_RISCV_SCOPE_PER_PROCESS\fP. لذلك، يجب توخي الحذر؛ استخدم هذه العلامة فقط عندما يمكنك ضمان عدم إصدار أي خيط في العملية لـ fence.i من هذه النقطة فصاعدًا. .P يمكن تحديد القيم التالية لـ \fIscope\fP: .TP \fBPR_RISCV_SCOPE_PER_PROCESS\fP (منذ لينكس 6.10) ضمان اتساق ذاكرة التخزين المؤقت للتعليمات لأي خيط في هذه العملية مع تخزين التعليمات عند الترحيل. .TP \fBPR_RISCV_SCOPE_PER_THREAD\fP (منذ لينكس 6.10) ضمان اتساق ذاكرة التخزين المؤقت للتعليمات للخيط الحالي مع تخزين التعليمات عند الترحيل. .SH أمثلة الملفات التالية مخصصة للترجمة والربط مع بعضها البعض. تستبدل الدالة modify_instruction() تعليمة إضافة مع صفر بإضافة مع واحد، مما يتسبب في تغيير تسلسل التعليمات في get_value() من إرجاع صفر إلى إرجاع واحد. .SS "مصدر البرنامج: cmodx.c" .\" SRC BEGIN (cmodx.c) .EX #include #include \& extern int get_value(void); extern void modify_instruction(void); \& int main(void) { int value = get_value(); \& printf("القيمة قبل cmodx: %d\[rs]n", value); \& // استدعاء prctl قبل استدعاء أول fence.i prctl(PR_RISCV_SET_ICACHE_FLUSH_CTX, PR_RISCV_CTX_SW_FENCEI_ON, PR_RISCV_SCOPE_PER_PROCESS); \& modify_instruction(); \& // استدعاء prctl بعد استدعاء آخر fence.i في العملية prctl(PR_RISCV_SET_ICACHE_FLUSH_CTX, PR_RISCV_CTX_SW_FENCEI_OFF, PR_RISCV_SCOPE_PER_PROCESS); \& value = get_value(); printf("القيمة بعد cmodx: %d\[rs]n", value); return 0; } .EE .\" SRC END .SS "مصدر البرنامج: cmodx.S" .EX \&.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 .EE .SS "النتيجة المتوقعة" .EX القيمة قبل cmodx: 0 القيمة بعد cmodx: 1 .EE .SH المعايير لينكس. فقط RISC\-V. .SH التاريخ .TP لينكس 6.10 (RISC\-V). .SH "انظر أيضًا" \fBprctl\fP(2) .PP .SH ترجمة تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي . .PP هذه الترجمة هي وثيقة مجانية؛ راجع .UR https://www.gnu.org/licenses/gpl-3.0.html رخصة جنو العامة الإصدار 3 .UE أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات. .PP إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: .MT kde-l10n-ar@kde.org .ME .