मैं xv6, यूनिक्स संस्करण 6.iget() xv6
मेरी पहली हैक के लिए का एक आधुनिक कार्यान्वयन के साथ एक सा खेल रहा हूँ में छिपा क्यों है, मैं साधारण getcwd
syscall लागू करने के लिए चाहता था, लेकिन मैं कर रहा हूँ थोड़ा खो गया है कि किस स्तर के अमूर्तता का उपयोग करना चाहिए।
- क्या मुझे
struct file
इंटरफ़ेस का उपयोग करना चाहिए? - या शायद
struct inode
इंटरफ़ेस? - क्या मायने रखता है, ऐसा लगता है कि इसे पूरी तरह से उपयोगकर्तालैंड में लागू किया जा सकता है।
मैंने इसे struct inode
मैनिपुलेशन के साथ कार्यान्वित करना शुरू कर दिया। मेरा बेवकूफ विचार proc->cwd
, फिर readi()
अपनी दूसरी प्रविष्टि (..
) को पुनर्प्राप्त करना था, इसे मेरे पिछले inum
को पुनर्प्राप्त करने के लिए स्कैन करें, और इसलिए जब तक मैं रूट को हिट नहीं करता तब तक रिकर्सिव पर।
बहुत प्रदर्शनकारी प्रतीत नहीं होता है, लेकिन यह पहले हैक के लिए उपयुक्त होगा।
मेरे समस्या यह है कि मैं fs.c:iget()
जरूरत inum
रों मैं dirent
रों में मिलता है से एक struct inode
पुनः प्राप्त करने के लिए है। मैंने देखा है कि iget()
fs.c
में स्थिर है और defs.h
में घोषित नहीं किया गया है जो मुझे थोड़ा परेशान करता है, लेकिन मुझे कारण नहीं मिल रहा है।
तो, यह मेरा सवाल है। ऐसा क्यों है कि iget()
जानबूझकर कर्नेल के बाकी हिस्सों से छिपा हुआ था?
मुझे लगता है कि आपको वास्तव में इस प्रश्न के लिए http://unix.stackexchange.com/ आज़माएं। –
टिप के लिए धन्यवाद। मैंने अभी एक पोस्ट बनाया है, लेकिन मुझे लगता है कि यह मुख्य स्टैक ओवरफ्लो से बहुत कम दौरा किया गया है। – NewbiZ
सच है, लेकिन मुझे संदेह है कि यहां अधिकांश उपयोगकर्ता यूनिक्स के साथ काम कर रहे हैं। अपनी अन्य पोस्ट से लिंक करना: http://unix.stackexchange.com/questions/126261/why-is-iget-hidden-in-xv6 –