2010-05-27 10 views
8

मेरे पास ईएलएफ साझा लाइब्रेरी में बहुत सी कोड है जिसका उपयोग केवल लाइब्रेरी प्रारंभिक (इसे स्थिर प्रारंभकर्ताओं से कहा जाता है) के दौरान किया जाता है। अगर मैं इस कोड को अपने सेक्शन में डालता हूं (या शायद यह .init सेक्शन में जा सकता है), जो मैं __attribute__((section(".mysection"))) का उपयोग कर कर सकता हूं, क्या लाइब्रेरी लोड होने के बाद इस सेक्शन को पर्ज करने के लिए मजबूर करने का कोई तरीका है?रैम से फ्लश ईएलएफ अनुभाग

This question संबंधित है, लेकिन निष्कर्ष यह था कि कर्नेल स्मृति से कम होने पर अप्रयुक्त पृष्ठों को बाहर कर देगा, इसलिए स्पष्ट रूप से ऐसा करने की आवश्यकता नहीं है। हालांकि, मैं एक एम्बेडेड वातावरण में काम कर रहा हूं जहां स्मृति प्रीमियम पर है और डिस्क से कोड में पेजिंग की लागत (धीमी यूएसबी फ्लैश ड्राइव) अधिक है। इसलिए मैं स्पष्ट रूप से इस कोड को फ्लश करना चाहता हूं, जो मुझे पता है कि कर्नेल शायद किसी अन्य कोड को फ्लश करने का फैसला नहीं कर सकता है, जिसके परिणामस्वरूप अंततः पेजिंग की आवश्यकता हो सकती है।

मैं हूं निश्चित रूप से मुझे कर्नेल से स्मृति के कुछ क्षेत्रों में या बाहर पृष्ठ से पूछने के लिए एक सिस्कल के बारे में पढ़ना याद है, हालांकि मुझे इसे कहीं भी कोई संदर्भ नहीं मिल रहा है, इसलिए शायद मैंने इसे कल्पना की। क्या ऐसी किसी वस्तु का अस्तित्व है?

+0

विशेष रूप से MADV_WILLNEED/MADV_DONTNEED पैरामीटर के साथ 'madvise' syscall, मैं यही सोच रहा था। हालांकि, मुझे अभी भी यह जानने में दिलचस्पी है कि किसी विशेष ईएलएफ अनुभाग को पर्ज करने के लिए मजबूर करने का कोई आसान तरीका है या नहीं। – jchl

उत्तर

2

एल्फ ओवरले पर दस्तावेज़ीकरण की तलाश करें। अपना कोड व्यवस्थित करें ताकि आपके पास प्रारंभिकरण के लिए ओवरले हो और दूसरा प्रसंस्करण के लिए हो। आप शट डाउन के लिए ओवरले देखना भी चाह सकते हैं। ओवरले में कोड को प्रतिस्थापित किया जाना चाहिए, जब अगला ओवरले कहा जाता है।

+2

Amusingly, यह पृष्ठ अब "elf overlays" के लिए शीर्ष Google खोज परिणाम है। – jchl

+0

मुझे ईएलएफ ओवरले के बारे में अधिक जानकारी नहीं मिल रही है। सबसे अच्छा मुझे मिल सकता था http://sourceware.org/binutils/docs-2.20/ld/Overlay-Description.html, जो विशेष रूप से संदर्भ से बाहर उपयोगी नहीं है। क्या आप विस्तारित पुस्तकालयों के साथ ओवरले के उपयोग से संबंधित, विशेष रूप से प्रासंगिक दस्तावेज के कुछ लिंक विस्तृत कर सकते हैं या प्रदान कर सकते हैं? इसके अलावा, मुझे यकीन नहीं है कि ओवरले मेरे लिए काम करेंगे, क्योंकि प्रारंभिक कोड को पुस्तकालय में अन्य सभी कोड तक पहुंच की आवश्यकता है। – jchl

+0

सबसे पहले पोस्ट-इनिट कोड के लिए आपके पास माइक्रो ओवरले हो सकता है? –

संबंधित मुद्दे