0

ファイル 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 を追加しました。それに応じてテーブルのサイズが大きくなるようにしたいと思います。247 ~ 248 行が関係していると思われますが、よくわかりません。古いバージョンの Linux ではカウンターを増やす必要があったことは知っていますが、ここでは見つけることができません。

では、247 行目から 248 行目は何をするのでしょうか? テーブルのサイズは自動的に大きくなりますか、それとも何か変更する必要がありますか?

4

1 に答える 1

0

このコード:

.rept NR_syscalls-(.-sys_call_table)/4
.long SYMBOL_NAME(sys_ni_syscall)
.endr

sys_call_tableto NR_syscallslongsをパディングするように見えます。私はNR_syscallsあなたが調整する必要があるかもしれないと思います。

于 2013-11-09T00:02:52.387 に答える