Skip to content

⌨️ input_vault

النوع: Driver  |  التسمية: input_vault  |  تاريخ الإنشاء: 01 يوليو 2026 (01:19 GMT+0300)  |  التقنيات: Hardware, PS/2, Driver, IRQ, IOAPIC

نظرة عامة

حاوية Input_Vault هي الطبقة المسؤولة عن التعامل المباشر مع أجهزة الإدخال (لوحة المفاتيح والماوس) عبر متحكم PS/2 (i8042). هي من الحاويات القليلة التي تملك صلاحيات التعامل المباشر مع العتاد الفيزيائي في بنية seL4-Vault.

مبدأ العمل المعماري:

  1. الوصول للعتاد (I/O Ports): تمتلك وصولاً حصرياً إلى منافذ PS/2 (المنفذ 0x60 للبيانات و 0x64 للحالة/الأوامر) عبر SLOT_IOPORT.
  2. المقاطعات (Hardware IRQs): مسجلة كمستمع لمقاطعات العتاد:
    • IRQ 1 = لوحة المفاتيح (يُربط بـ SLOT_KBD_IRQ)
    • IRQ 12 = الماوس (يُربط بـ SLOT_MOUSE_IRQ)
  3. المزامنة (Notification): تنتظر المقاطعات باستخدام seL4_Wait على كائن إشعار (Notification Object) في SLOT_NTFN. يُحدد الـ Badge أي الأجهزة أرسل المقاطعة.
  4. المعالجة والإرسال: عند حدوث مقاطعة، تُقرأ البيانات مباشرة من المنافذ باستخدام تعليمات inb/outb (مُغلّفة في seL4_Call)، تُعالج بواسطة ps2_driver، ثم تُرسل كحدث مُنسق إلى حاوية desktop عبر IPC.

هذا التصميم الدقيق يعزل مشغلات العتاد (Drivers) في مساحة مستخدم (User-space) آمنة، مما يحمي Kernel النظام والواجهة الرسومية من أي أعطال في معالجة العتاد.

الملفات البرمجية

init/src/input_vault_setup.rs

المسار: containers/init/src/input_vault_setup.rs

src/main.rs

المسار: containers/input_vault/src/main.rs

libs/ps2-driver

المسارات: libs/ps2-driver/src/lib.rs | keyboard.rs | mouse.rs

جميع الحقوق محفوظة © 2026 RVLB