📄 ملف main.rs (المدير الرئيسي للـ VFS)
يبدأ هذا الملف بتسجيل خدمة الـ VFS لدى خادم init، ثم يدخل في حلقة لا نهائية للاستماع لطلبات البرامج الأخرى.
1. التسجيل مع خادم التهيئة
rust
let name = b"vfs_server\0\0\0\0\0\0";
let mut init_msg = init::ServiceMsg::new();
init_msg.raw[0] = init::MSG_REGISTER;
init_msg.raw[2..18].copy_from_slice(name);
sys::send(1, &init_msg.raw);الخادم يرسل رسالة فوراً للمنفذ رقم 1 (وهو المنفذ المحجوز دائماً لخادم init) ليعلن عن وجوده واسمه.
2. معالجة طلبات الملفات (VFS_OPEN, READ, STAT, LIST)
في حلقة الاستماع loop، يستقبل الخادم طلبات التطبيقات. بناءً على نوع الطلب، يتم التنفيذ:
VFS_OPEN: يبحث عن الملف باستخدامramfs::lookup_file. إذا وجده، ينشئ له "مقبض" (Handle) باستخدامalloc_handleويرد برقمه للتطبيق.VFS_READ: يأخذ رقم المقبض (Handle)، يقرأ الذاكرة المخصصة لهذا المقبض، ويرسل المحتوى في جسم الرسالة (Payload).VFS_STAT: يرجع حجم الملف وما إذا كان مجلداً أم لا.VFS_LIST: يبحث فيramfsعن المجلد المطلوب ويرجع أسماء الملفات داخله.
كل رد (Reply) يتم توجيهه إلى منفذ المرسل الأصلي (sender_port).