Dưới đây là an example của việc triển khai FUSE rất cơ bản được hỗ trợ bởi phân đoạn bộ nhớ được chia sẻ vinh quang (xenstore). Đó là một ngã ba của hệ thống tập tin xen kẽ FUSE gốc mà tôi duy trì.
Bạn cũng sẽ tìm thấy một số mã để chỉ cho bạn cách làm cho Valgrind hữu ích hơn khi gỡ lỗi triển khai FUSE.
Bạn viết các chức năng để mở/tạo/đọc/ghi/truncate/getattr/etc và vượt qua chúng để cầu chì (số dòng là từ ví dụ liên kết):
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 };
Như bạn thấy, nó cực kỳ tự giải thích. Một chút tìm kiếm sẽ dẫn đến việc tìm kiếm nhiều ví dụ cơ bản được sao lưu của các triển khai FUSE.
Tôi thực sự khuyên bạn nên làm điều đó hoàn toàn trong không gian người dùng, trừ khi bạn có đủ thời gian để làm quen với hạt nhân.
Nguồn
2010-02-04 10:41:14
Chúng tôi có thể đưa ra một số giả định ở đây: Chúng tôi không tạo hệ thống tệp thực: nghĩa là chúng tôi không mong sử dụng lệnh ls hoặc dir thông thường để xem mọi thứ. Thay vào đó, chúng tôi đang triển khai một dịch vụ hiển thị các tệp thông qua giao diện tùy chỉnh trên ổ cắm. Chúng tôi đang viết cả máy chủ và thư viện máy khách. Dữ liệu cho máy chủ được lưu trữ trong một tệp duy nhất. Điều này có đúng không? –
Tương tự như câu hỏi chung chung hơn: http://stackoverflow.com/questions/4714056/how-to-implement-a-very-simple-filesystem –