0


我们正在使用 Python Fuse Library 实现一个文件系统。我们为此文件系统实现了“快照”功能 (api)。我们现在想通过像 (ls,mkdir,etc) 这样的系统调用来调用这个快照 API - 快照?我们如何创建这个新的系统调用?

4

2 回答 2

1

不幸的是,您不能只向 FUSE 添加系统调用,因为 FUSE 依赖内核来完成系统调用的繁重工作。您需要将其添加到内核中。

另一方面,你确定你需要一个完整的系统调用,或者你能在用户级别实现你需要的吗?(例如,ls, iereaddir()实际上不是系统调用,它是一个用户级库例程,它调用一些其他系统调用,例如getdents()。)

如果您只需要对系统上运行的所有程序进行调用,请将其添加到标准库之一中,或者使用LD_PRELOAD.

要向内核添加系统调用,请参见此处: http ://www.csee.umbc.edu/courses/undergraduate/CMSC421/fall02/burt/projects/howto_add_systemcall.html

有关LD_PRELOAD方法,请参见此处: 什么是 LD_PRELOAD 技巧?

于 2013-08-12T08:24:44.170 回答
1

IOCTL是一种机制,旨在实现依赖于文件系统的自定义操作。Btrfs通过 IOCTL实现克隆文件、创建快照和发送/接收。

于 2015-10-04T21:06:29.943 回答