Вот пример очень простой базовой реализации FUSE, поддерживаемой прославленным сегментом разделяемой памяти (xenstore).Это ответвление исходной файловой системы FUSE xenstore, которую я поддерживаю.
Вы также найдете некоторый код, который покажет вам, как сделать Valgrind более полезным при отладке реализаций FUSE.
Вы пишете функции дляоткройте / создайте / прочитайте / напишите / обрежьте / getattr / etc и передайте их в плавкий предохранитель (номера строк взяты из связанного примера):
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 };
Как видите, это очень очевидно.Небольшой поиск привел бы к поиску множества базовых файловых примеров реализации FUSE.
Я настоятельно рекомендую делать это полностью в пользовательском пространстве, если у вас нет достаточно времени, чтобы достаточно познакомиться с ядром.