linux kernel - What is the best way to save the environment from before an alarm handler goes off when the alarm does goes off? -
मैं एक 2.4 लिनक्स कर्नेल (गृहकार्य) पर उपयोगकर्ता धागे को कार्यान्वित करने की कोशिश कर रहा हूं और प्रक्षेपण स्विच के लिए उपयोग की जा रही है एक अलार्म जो हर एक्स मिसेकेंड से निकल जाता है और हमें एक अलार्म हेन्डलर भेजता है जिससे हम अगले धागे को लार्जजम्प कर सकते हैं। मुझे जो समस्याएं हैं, वह यह है कि पर्यावरण को बचाने के लिए बाद में लौटने के लिए कैसे।
असल में मेरे पास jmp_buffs की एक सरणी है, और हर बार अलार्म का उपयोग करके एक "संदर्भ स्विच" होता है, मैं पिछले संदर्भ को अगले एक को सरणी और लाँगजम्प के उचित प्रविष्टि में सहेजना चाहता हूं। हालांकि, यह तथ्य है कि मुझे ईवेंट हैंडलर से यह करने की आवश्यकता है कि इसका मतलब है कि ईवेंट हैंडलर में setjmp का उपयोग करने से मुझे बिल्कुल ऐसा वातावरण नहीं मिलेगा जो मैं चाहूंगा (जहां तक स्टैक और प्रोग्राम काउंटर शामिल हैं) क्योंकि स्टैक इसमें ईवेंट हैंडलर कॉल है और पीसी ईवेंट हैंडलर में है।
मुझे लगता है कि मैं स्टैक को देख सकता हूं और मेरी ज़रूरतों को पूरा करने के लिए इसे बदल सकता हूं, लेकिन यह थोड़ा परेशानी लगता है। एक अन्य विचार मुझे किसी भी तरह से ईवेंट हैंडलर को ईवेंट हैंडलर के पैरामीटर के रूप में कूदने से पहले पर्यावरण को पारित करना है, लेकिन मुझे यह पता नहीं चल पाया कि यह संभव है
तो मुझे लगता है मेरा सवाल है- मैं यह सही कैसे करूँ?
आपको बस ऐसा कुछ करने में सक्षम होना चाहिए:
if (Setjmp (& amp; from_thread)) रिटर्न; और लार्जजम्प (& amp; dest_thread, 1);
ईवेंट हैंडलर में बेशक, इसका मतलब है कि यह घटना के हैंडलर में धागे में वापस आ जाएगा - लेकिन यह ठीक है क्योंकि तब आप इसे से बाहर सीधे वापस कोड> करेंगे, इसलिए यह वापस जाने के लिए जहां धागा था ईवेंट हैंडलर ट्रिगर किया गया।
(बेशक यह मानता है कि आपने धागे के लिए अलग-अलग स्टैक सेट कर लिए हैं)।
Comments
Post a Comment