Ho scoperto che la libreria dello spazio utente FUSE e l'interfaccia del kernel sono stati portati, sin dal suo inizio su Linux, a molti altri sistemi e presenta un'API relativamente stabile con una superficie apparentemente piccola. Se volessi creare un filesystem in userspace e non fossi su Plan 9 o Hurd, penserei che FUSE sia la scelta migliore.Come posso creare un filesystem userspace con FUSE senza usare libfuse?
Tuttavia, non ho intenzione di utilizzare libfuse. Ciò è parzialmente dovuto al pragmatismo; usare C è difficile nella mia lingua di scelta (Monte). È anche perché non sono totalmente interessato a scrivere il codice di supporto C, e l'uso consigliato da libfuse è incompatibile con la filosofia Monte. Questo non dovrebbe essere un problema, dal momento che C non è magico e/dev/fuse può essere aperto con chiamate di sistema standard.
Andando a cercare documentazione, tuttavia, non ne ho trovato nessuno. Non c'è documentazione che io possa trovare per/dev/fuse ABI/API, e nessuna storia di altri che prendono questa stessa rotta non legata a C. Frustrante.
Esiste qualche tipo di documentazione su come interagire in un modo agnostico con/dev/fuse e il sottosistema FUSE del kernel? Se è così, potresti indicarmi? Grazie!
Aggiornamento: esiste go-fuse, che è in Go, un linguaggio leggermente più leggibile di C. Tuttavia, non contiene alcuna documentazione ABI/API.
Aggiornamento: noto che le persone hanno votato per chiudere questo. Non preoccuparti, non ce n'è bisogno. Mi sono accertato che la documentazione che desidero non esiste ancora. Scriverò personalmente la documentazione, la pubblicherò e quindi la collegherò in una risposta accettata. Speriamo che la prossima persona a cercare questa documentazione non rimarrà delusa.
Conosco C; Sono in giro da un po '(https://www.openhub.net/accounts/MostAwesomeDude). Monte ha una filosofia di sicurezza che significa che la maggior parte del codice C esistente non è utilizzabile. Sono felice di esporlo in un post sul blog, se c'è una domanda. Ancora più importante, C non ha privilegi nella sua meccanica. Posso creare syscalls da qualsiasi piattaforma competente, e strace mi mostra che libfuse rende syscalls. Voglio evitare di dover decodificare una libreria open-source. – Corbin
Non è necessario eseguire la decodifica nulla poiché è possibile leggere semplicemente il codice sorgente e la [documentazione] (http://fuse.sourceforge.net/doxygen/index.html) – hek2mgl
La documentazione a cui si è collegato non coprire l'ABI di/dev/fuse, né i numeri magici che sono cosparsi in tutto il codice sorgente. (Non copre nemmeno i file sorgente principali di libfuse, solo un esempio di utilizzo!) Capisco che il codice sorgente sia disponibile; L'ho letto per circa 2-3 ore prima di porre questa domanda. Non sto affermando che la mancanza di documentazione sia insormontabile; Sto sostenendo che preferirei non sprecare tempo nel reverse-engineering, cosa che potrebbe già essere documentato da qualche parte. – Corbin