مخرجات الحاوية الحية
معالجة مقاطعات العتاد (Hardware IRQs)
توضيح لكيفية استجابة الحاوية لمقاطعات العتاد بطريقة غير متزامنة (Asynchronous) دون شغل المعالج.
// الحلقة الرئيسية في input_vault/src/main.rs
loop {
let mut badge: usize = 0;
// الانتظار حتى وصول مقاطعة من העتاد (بدون استهلاك المعالج)
unsafe {
sel4_sys::syscalls::seL4_Wait(SLOT_NTFN, &mut badge as *mut usize, ipc_buf)
};
// ── مقاطعة لوحة المفاتيح (IRQ 1) ──
if badge & BADGE_KBD != 0 {
while ps2.read_status() & 0x01 != 0 {
let scancode = ps2.read_data();
if let Some(ch) = kbd_state.process_scancode(scancode) {
// ... تجهيز رسالة IPC وإرسالها לـ Desktop ...
desktop_sender.send_nb(&msg);
}
}
unsafe { seL4_IRQHandler_Ack(SLOT_KBD_IRQ); }
}
// ... [معالجة המאוס بنفس الطريقة] ...
}المقاطعات والرسائل الصادرة
هذه هي الإشعارات العتادية التي تستقبلها الحاوية ورسائل IPC التي ترسلها.
الوظائف والمهام الأساسية
الوصول المباشر للعتاد (I/O Ports)
الحاوية الوحيدة (تقريباً) التي تمتلك وصولاً حصرياً إلى منافذ الإدخال المادية (0x60 و 0x64) الخاصة بمتحكم PS/2.
عزل مشغلات العتاد (Driver Isolation)
تعمل الحاوية في مساحة مستخدم (User-Space) معزولة تماماً، مما يمنع أي ثغرات أو أعطال في معالجة العتاد من التأثير على نواة النظام.
معالجة المقاطعات (Hardware IRQs)
تنتظر المقاطعات بشكل غير متزامن باستخدام كائن الإشعارات (Notification Object) عبر seL4_Wait، وترسل Acknowledgment فور انتهاء المعالجة.
معالجة مدخلات المستخدم
تحويل نبضات لوحة المفاتيح (Scancodes) وحركات الماوس الخام إلى أحداث (Events) مهيكلة ومفهومة يتم توجيهها للواجهة الرسومية.
توثيق الملفات البرمجية المصدريّة
بنية مجلد `src` في مسار `Hasn-Sel4/containers/input_vault/src` وتحليل كل ملف سطرًا بسطر بناءً على الكود المصدري الفعلي.
الملف المركزي للحاوية. يحتوي على تعريف خانات CNode، تهيئة מتحكم PS/2، حلقة الأحداث (Event Loop) لانتظار الـ IRQs ومعالجة المدخلات وإرسالها لـ Desktop.
IOPORT(1), NTFN(2), KBD_IRQ(3), MOUSE_IRQ(4), DESKTOP_EP(5)256 KB مخصصة لـ talc-allocseL4_Wait(SLOT_NTFN, &badge)دوال مساعدة لطباعة القيم السداسية (Hex) للمساعدة في التنقيح (Debugging)، ومعالج الأخطاء (Panic Handler).
تعتمد على seL4_DebugPutCharالمكتبات والاعتمادات (Cargo.toml)
الاعتمادات المذكورة في ملف `Cargo.toml` والمسؤولة عن تقديم الوظائف الأساسية.
ps2-driver
مكتبة مخصصة (In-house) للتعامل المباشر مع متحكم PS/2، تتضمن فك تشفير الـ Scancodes ومعالجة حزم الماوس.
ipc-sync
يُستخدم منها مُرسل الرسائل (Sender) لإرسال أحداث لوحة المفاتيح والماوس إلى حاوية Desktop.
sel4-sys
تُستخدم للانتظار على الإشعارات (seL4_Wait) وتأكيد المقاطعات (seL4_IRQHandler_Ack).
talc
مُخصص ذاكرة ديناميكية مرن.
spin
مكتبة لأقفال Spinlocks الخفيفة بدون الاعتماد على نظام تشغيل أساسي.
