इस से संबंधित है: https://stackoverflow.com/a/13413099/1284631लिनक्स रीबूट() सिस्टम कॉल: यह kernel_halt() के बाद do_exit (0) क्यों कॉल करता है?
अब, सवाल यह है:
क्यों रिबूट() सिस्टम कॉल, जब LINUX_REBOOT_CMD_HALT
पैरामीटर के साथ कहा जाता है (यहाँ देखें: http://lxr.linux.no/linux+v3.6.6/kernel/sys.c#L480) पहले से ही kernel_halt()
कहा जाता है के बाद do_exit(0)
बुला रहा है, kernel_halt()
पर कॉल करने के लिए stop_this_cpu()
पर कॉल करने के लिए उबाल लें (यहां देखें: http://lxr.linux.no/linux+v3.6.6/arch/x86/kernel/process.c#L519), native_machine_halt()
के भाग के रूप में (यहां देखें: http://lxr.linux.no/linux+v3.6.6/arch/x86/kernel/reboot.c#L680)।
या, मुझे लगता है कि stop_this_cpu()
कभी वापस नहीं आ रहा है (यह एक अनंत लूप के साथ समाप्त होता है)।
तो, यह do_exit(0)
है, जिसे केवल kernel_halt()
पर अपना काम नहीं किया जाता है और यह वापस आता है? क्यों panic()
सीधे इसके बजाय क्यों नहीं?
आतंक कर्नेल स्टाल, बाहर निकलें, शायद –
@eicto रीबूट करें: हाँ, मैं इसके साथ सहमत हूं, मैंने अपनी पोस्ट के अंतिम वाक्यांश में वही बात कहा। सच्चा सवाल यह है कि: panic() से पहले _exit (0) * करने के लिए कॉल क्यों करें? यदि आप कर्नेल स्टाल बनाना चाहते हैं, बाहर निकलें या रीबूट करें, तो पैनिक() को सीधे क्यों कॉल न करें? – user1284631