Odkryłem, że biblioteka przestrzeni użytkownika FUSE i interfejs jądra zostały przeniesione, od momentu powstania na Linuksa, do wielu innych systemów i przedstawia względnie stabilny interfejs API o rzekomo małej powierzchni. Gdybym chciał stworzyć system plików w przestrzeni użytkownika, a ja nie byłbym w Planie 9 lub Hurd, sądziłbym, że FUSE to mój najlepszy wybór.Jak mogę utworzyć system plików przestrzeni użytkownika za pomocą FUSE bez użycia libfuse?
Jednak nie zamierzam używać libfuse. Częściowo jest to spowodowane pragmatyzmem; używanie C jest trudne w moim języku wyboru (Monte). Jest to również dlatego, że nie interesuje mnie napisanie kodu pomocniczego C, a zalecane użycie libfuse jest niezgodne z filozofią Monte. Nie powinno to stanowić problemu, ponieważ C nie jest magiczne i/dev/fuse można otworzyć za pomocą standardowych wywołań systemowych.
Idę jednak szukać dokumentacji, ale nie znalazłem żadnej. Nie ma dokumentacji, która mogłaby znaleźć dla/dev/fuse ABI/API, ani żadnych historii innych osób korzystających z tej samej trasy niezwiązanej z C. Denerwujący.
Czy istnieje jakaś dokumentacja dotycząca interakcji w sposób nieobowiązujący językowo z/dev/fuse i podsystemem FUSE jądra? Jeśli tak, czy możesz wskazać mi to? Dzięki!
Aktualizacja: istnieje go-fuse, który jest w Go, nieco bardziej czytelnym języku niż C. Jednak nie zawiera też żadnej dokumentacji ABI/API.
Aktualizacja: Widzę, że ludzie zagłosowali, aby to zamknąć. Nie martw się, nie ma takiej potrzeby. Przekonałem się, że dokumentacja, której pragnę, jeszcze nie istnieje. Napisam dokumentację, opublikuję ją, a następnie dołączę do niej w zaakceptowanej odpowiedzi. Mam nadzieję, że następna osoba, która wyszuka tę dokumentację, nie będzie zawiedziona.
Wiem C; Byłem już przez jakiś czas (https://www.openhub.net/accounts/MostAwesomeDude). Monte ma filozofię bezpieczeństwa, co oznacza, że większość zachowanych kodów C nie nadaje się do użytku. Cieszę się, że mogę to wyjaśnić na blogu, jeśli jest na to popyt. Co ważniejsze, C nie jest uprzywilejowany w swojej mechanice. Mogę tworzyć syscalls z dowolnej kompetentnej platformy, a strace pokazuje mi, że libfuse tworzy platformy. Chcę uniknąć konieczności inżynierii wstecznej biblioteki otwartego oprogramowania. – Corbin
Nie trzeba niczego odtwarzać wstecz, ponieważ można po prostu odczytać kod źródłowy i dokumentację (http://fuse.sourceforge.net/doxygen/index.html). – hek2mgl
Dokumentacja, do której masz link, nie przykryj ABI/dev/fuse, ani magiczne numery, które są posypane przez kod źródłowy. (Nie obejmuje nawet głównych plików źródłowych libfuse, tylko przykład użycia!) Rozumiem, że kod źródłowy jest dostępny; Przeczytałem to na około 2-3 h przed zadaniem tego pytania SO. Nie twierdzę, że brak dokumentacji jest nie do pokonania; Twierdzę, że wolałbym nie tracić czasu na inżynierię odwrotną, co może być już gdzieś udokumentowane. – Corbin