Burada, yüceltilmiş bir paylaşılan bellek bölümü (xenstore) tarafından desteklenen çok temel bir FUSE uygulamasının an example'u var. Onun sürdürdüğüm orijinal xenstore FUSE dosya sisteminin bir çatalı.
Ayrıca, FUSE uygulamalarında hata ayıklama yaparken Valgrind'in nasıl daha fazla yardımcı olacağını göstermek için bir kod da bulacaksınız.
açabilir oluşturmak// okuma/yazma/truncate için fonksiyonları yazma/getattr/vs ve (satır numaraları bağlantılı örnekten vardır) onları kaynaştırmak geçmek:
343 static struct fuse_operations const xsfs_ops = {
344 .getattr = xsfs_getattr,
345 .mknod = xsfs_mknod,
346 .mkdir = xsfs_mkdir,
347 .unlink = xsfs_rm,
348 .rmdir = xsfs_rmdir,
349 .truncate = xsfs_truncate,
350 .open = xsfs_open,
351 .read = xsfs_read,
352 .write = xsfs_write,
353 .readdir = xsfs_readdir,
354 .create = xsfs_create,
355 .destroy = xsfs_destroy,
356 .utime = xsfs_utime,
357 .symlink = xsfs_symlink,
358 .init = (void *)xsfs_init
359 };
Gördüğünüz gibi, onun son derece kendini açıklayıcı. Küçük bir arama, FUSE uygulamalarının da birçok temel dosya destekli örneğini bulmaya neden olur.
Çekirdeğe yeterince aşina olmak için yeterli zamanınız olmadıkça, tamamen kullanıcı alanında yapmanız önerilir.
Burada bazı varsayımlar yapabilir miyiz: Gerçek bir dosya sistemi oluşturmuyoruz: yani, şeyleri görmek için normal ls veya dir komutlarını kullanmayı beklemiyoruz. Bunun yerine dosyaları bir soket üzerinden özel bir arabirim üzerinden gösteren bir hizmet uyguluyoruz. Hem sunucuyu hem de istemci kütüphanelerini yazıyoruz. Sunucu verileri tek bir dosyada saklanır. Bu doğru mu? –
Benzer biraz daha genel soru: http://stackoverflow.com/questions/4714056/how-to-implement-a-very-simple-filesystem –