मैं लिनक्स के लिए एक पीसीआईई ड्राइवर लिख रहा हूं, वर्तमान में डीएमए के बिना, और पीसीआई डिवाइस को पढ़ने और लिखने के बारे में जानने की आवश्यकता है जब यह उपयोगकर्ता स्थान से सक्षम हो।पीसीआई चालक - उपयोगकर्ता स्थान कैसे पहुंचता है?
चालक मैं जांच() में मूल बातें कर में:
pci_enable_device();
pci_request_regions();
pci_iomap();
लेकिन तब मैं कैसे उपयोगकर्ता अंतरिक्ष से इस स्मृति पढ़ना और लिखना उपयोग करते हैं? क्या मैं अपने पीसीआई ड्राइवर में फाइल ऑपरेशंस जोड़ता हूं?
open('mapped memory location');
mmap(...);
यदि ऐसा है तो स्थान क्या है: pci_iomap से स्मृति कुछ जगह है जहाँ उपयोगकर्ता अंतरिक्ष कोड कॉल कर सकते हैं दिखाई देती है?
नोट: PCIe डिवाइस इस तरह के ऑडियो, ईथरनेट, आदि
सुनिश्चित नहीं है कि यह चीजों को करने का अनुशंसित तरीका है, लेकिन अन्य कर्नेल ड्राइवर वर्चुअल डिवाइस जैसे '/ dev/vboxnetctl 'का पर्दाफाश करते हैं, जो मुझे लगता है कि आप आदेश जारी कर सकते हैं। मुझे यकीन नहीं है कि लिनक्स कर्नेल किसी भी उपयोगकर्ता स्पेस प्रोग्राम को पीसीआईई डिवाइस को पढ़ने/लिखने की अनुमति देगा, ऐसा लगता है कि यह खतरनाक हो सकता है। –
मैं उस पर भी देख रहा था। क्या मेरे डिवाइस को वहां दिखाने के लिए मुझे कुछ भी करने की ज़रूरत है? उदाहरण के लिए, मैं अपने ड्राइवर में कौन सी एपीआई कॉल करता हूं? – user2205930
शायद विचारों के लिए वर्चुअलबॉक्स ड्राइवर स्रोत कोड पर नज़र डालें। –