إلى أي مدى يمكنني استدعاء Kalloc في kernel Linux Arm؟

StackOverflow https://stackoverflow.com/questions/2527671

  •  22-09-2019
  •  | 
  •  

سؤال

أرغب في تخصيص الذاكرة ديناميكيًا من وظيفة machine_init في kernel linux ذراعي. ومع ذلك ، تشير اختباراتي إلى أن استدعاء Kalloc يؤدي أحيانًا إلى فشل كامل للنظام في التمهيد.

أدوات التصحيح الخاصة بي محدودة للغاية ، لذا لا يمكنني تقديم المزيد من المعلومات حول الفشل.

ببساطة ، هل من القانوني الاتصال kalloc من machine_init وظيفة في الذراع Linux ، وإذا لم يكن الأمر كذلك ، فهل هناك بديل؟

أتفهم أنه في معظم الحالات ، من الخطأ تخصيص الذاكرة في وقت مبكر من عملية التمهيد (يجب أن يتم برامج تشغيل الأجهزة هذا النوع من العمل) ؛ ومع ذلك ، أنا مقتنع بأن مشروعي الخاص يتطلب ذلك.

هل كانت مفيدة؟

المحلول

لا أستطيع أن أرى من أين يتم استدعاء Machine_init ، لكن لا يمكنني التفكير في أنك تحاول فعل الشيء الخطأ.

تتمتع برامج تشغيل الأجهزة والأنظمة الفرعية الأخرى بوقت البدء الخاص بها ، فإن محاولة القيام بالأمور مبكرًا جدًا عادة ما تكون خطأ (لأن هناك شيئًا مطلوبًا لم يبدأ بعد). يمكنك بالتأكيد الاتصال بـ Kmalloc أثناء تهيئة برنامج تشغيل الجهاز (على الأقل ، ربما يكون برنامج تشغيل وحدة التحكم مختلفًا).

على أي حال ، فإن حقيقة أن ذراعك على أنه نظام مضمن ، لذلك من غير المرجح أن تضطر إلى التعامل مع الكثير من الأجهزة المختلفة. ألا يمكنك فقط تخصيص صفيف مع العديد من العناصر التي يمكن أن تكون مطلوبة (أعط خطأ إذا تم تجاوزه)؟

نصائح أخرى

Kmalloc هو واجهة برمجة تطبيقات kernel على إطار ذاكرة Slob/slob/slub العلوي. بمجرد تهيئة أي من هذه الإطار (الإطار الذي يستخدمه kernel) يعمل بشكل جيد. تأكد من مكالمتك بعد تهيئة البلاطة/slob/slub

في صحتك

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top