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

別途で中身を確認する必要がある模様。面白そうですが、ハードル高そう。