文件 linux/arch/i386/kernel/entry.S 包含系统调用列表:
ENTRY(sys_call_table)
.long SYMBOL_NAME(sys_ni_syscall) /* 0 - old "setup()" system call*/
.long SYMBOL_NAME(sys_exit)
.long SYMBOL_NAME(sys_fork)
.long SYMBOL_NAME(sys_read)
.
.
.
.long SYMBOL_NAME(sys_start_monitor) /* 243 */
.long SYMBOL_NAME(sys_stop_monitor) /* 244 */
.long SYMBOL_NAME(sys_get_all_events_number) /* 245 */
.long SYMBOL_NAME(sys_get_events) /* 246 */
.rept NR_syscalls-(.-sys_call_table)/4
.long SYMBOL_NAME(sys_ni_syscall)
.endr
我添加了 243-246。我想确保 table 的大小相应地增长。我怀疑第 247-248 行与此有关,但我不确定。我知道在旧版本的 Linux 中我需要增加一个计数器,但我在这里找不到它。
那么第 247-248 行做了什么?表大小会自动增长还是我需要更改某些内容?
最佳答案
这段代码:
.rept NR_syscalls-(.-sys_call_table)/4
.long SYMBOL_NAME(sys_ni_syscall)
.endr
看起来它会将 sys_call_table
填充为 NR_syscalls
长整型。我认为 NR_syscalls
可能是您需要调整的内容。
关于linux - 如何更改Linux内核2.4中sys_call_table的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19870446/