मैं सभी चर्चाओं को जानता हूं कि किसी को कर्नेल से फ़ाइलों को क्यों नहीं पढ़ना/लिखना चाहिए, इसके बजाय इसे करने के लिए/proc या netlink का उपयोग कैसे करें। मैं वैसे भी पढ़ना/लिखना चाहता हूं। मैंने Driving Me Nuts - Things You Never Should Do in the Kernel भी पढ़ा है।लिनक्स कर्नेल मॉड्यूल के भीतर फ़ाइलों को कैसे पढ़/लिखना है?
हालांकि, समस्या 2.6.30 sys_read()
निर्यात नहीं करता है। इसके बजाय इसे SYSCALL_DEFINE3
में लपेटा गया। तो अगर मैं का उपयोग करें कि मेरी मॉड्यूल में, मैं निम्नलिखित चेतावनी मिलती है: क्योंकि जोड़ने सही ढंग से नहीं होता है
WARNING: "sys_read" [xxx.ko] undefined!
WARNING: "sys_open" [xxx.ko] undefined!
जाहिर insmod
मॉड्यूल लोड नहीं कर सकता।
सवाल:
- कैसे पढ़ने के लिए 2.6.22 (जहां
sys_read()
/sys_open()
निर्यात नहीं कर रहे हैं) के बाद गिरी भीतर/लिखने? - सामान्य रूप से, कर्नेल के भीतर से मैक्रो
SYSCALL_DEFINEn()
में लिपटे सिस्टम कॉल का उपयोग कैसे करें?
धन्यवाद। मैं sys_read/sys_open कार्यक्षमता को दोहराने के समान कुछ करने की सोच रहा था। लेकिन यह बहुत मददगार है। एक जिज्ञासा, SYSCALL_DEFINE का उपयोग करके घोषित सिस्टम कॉल का उपयोग करने का कोई तरीका है? – Methos
मैंने कर्नेल 2.6.30 (उबंटू 9.04) में इस कोड को आजमाया और फ़ाइल को पढ़ने से सिस्टम को क्रैश हो गया। किसी को भी एक ही समस्या का अनुभव किया? –
@ एन्रिको डेटोमा? ओह वाह। क्या यह कोई तरीका है कि आप मुझे इस्तेमाल मॉड्यूल दे सकते हैं? पहले कभी नहीं देखा? – dmeister