1

我可以从模块中添加系统调用吗?

4

2 回答 2

3

在某些内核版本中,可以systemcall通过更改 sys_call_table 来添加或修改 a。但是因为这个表不打算在运行时改变,所以它没有保护。更改表格将导致竞争条件。即使没有竞争条件,在使用或堆叠模块时也存在与移除模块相关的问题。由于sys_call_table从模块更改的问题,该符号不再在新内核中导出。换句话说,如果您"unresolved symbol sys_call_table"在尝试加载模块时遇到错误,则表示该模块中存在错误,并且内核不再接受此类错误模块。

于 2010-07-31T00:08:31.687 回答
1

听起来是个非常糟糕的主意,不管你是否可以。如果您的新系统调用将在文件/设备上运行,也许您可​​以将其设为 ioctl 或类似的东西,而不是使其成为自己的系统调用?

于 2010-07-31T00:11:06.543 回答