gram trochę z xv6, nowoczesna realizacja Unix wersji 6.Dlaczego IGET() ukryte w xv6
dla mojego pierwszego włamania, chciałem zaimplementować prosty getcwd
syscall, ale jestem trochę zagubiony, jakiego poziomu abstrakcji powinienem użyć.
- Czy powinienem używać interfejsu
struct file
? - A może interfejs
struct inode
? - Co ważne, wygląda na to, że można go wdrożyć wyłącznie w przestrzeni użytkownika.
Zacząłem wdrażać go z manipulacjami struct inode
. Mój naiwny pomysł polegał na tym, aby pobrać jego drugi wpis (..
), przeskanować go, aby odzyskać moją poprzednią , i tak dalej, dopóki nie trafię do katalogu głównego.
Nie wydaje się bardzo wydajna, ale będzie pasować do pierwszego hacka.
Mój problem polega jednak na tym, że potrzebuję fs.c:iget()
, aby pobrać z inum
s. Dostaję je w dirent
s. Zauważyłem, że iget()
jest statyczne w fs.c
i nie jest zadeklarowane w defs.h
co mnie denerwuje, ale nie mogę znaleźć przyczyny.
To jest moje pytanie. Dlaczego to iget()
zostało celowo ukryte przed resztą jądra?
Myślę, że powinieneś naprawdę spróbować http://unix.stackexchange.com/ na to pytanie. –
Dzięki za cynk. Właśnie utworzyłem tam post, ale myślę, że jest znacznie mniej odwiedzany niż główny stackoverflow. – NewbiZ
To prawda, ale wątpię, że większość użytkowników pracuje z Uniksem. Link do twojego drugiego postu: http://unix.stackexchange.com/questions/126261/why-is-iget-hidden-in-xv6 –