6.828: Operating System Engineering (82)
arm なカーネルの system call な実装を見てやれ、と arch/arm に降りていったは良いけれど、そもそも x86 なソレしか知らないのに相当無茶なトライ。
とりあえず
syscall table なソレは発見したっぽい。arch/arm/kernel/entry-common.S にて以下。
#define CALL(x) .long x /* snip */ .type sys_call_table, #object ENTRY(sys_call_table) #include "calls.S"
arch/arm/kernel/calls.S は以下なカンジ。
/* 0 */ CALL(sys_restart_syscall) CALL(sys_exit) CALL(sys_fork_wrapper) CALL(sys_read) CALL(sys_write)
sys_call_table というポインタ配列ですね。で、この sys_call_table を云々しているのは同じソースファイルで定義されている vector_swi という手続きのみ。
swi って何だろ、と思ったら SoftWare Interrupt の略な模様。基本的には swi という命令を発行することでシステムコールを呼び出すらしい。
vector_swi
別途で中身を確認する必要がある模様。面白そうですが、ハードル高そう。