linux - 如何更改Linux内核2.4中sys_call_table的大小?

标签 linux linux-kernel operating-system system gnu-assembler

文件 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/

相关文章:

linux - 我可以从 ssh 调用本地函数吗?

memory-management - 内存调试 : How to get locked pages information in user space/kernel space in linux

linux-kernel - 内核虚拟内存页面是否可交换

c++ - 自旋锁与信号量

operating-system - 谁能向我解释一下编程语言中的系统调用?

linux - linux下访问root文件非常慢

linux - 在每次登录到 shell 时打印 session 中最后 10 个命令的历史记录

Python版本困惑+cairo

linux - 游戏服务器运行文件

linux - request_irq 和 request_threaded_irq 有什么区别?