arch/x86/entry/
には2つの特別なsyscallファイルがあります。
syscalls/syscall_32.tbl
そしてdito "64"
カーネルはABIとAPIを一緒にする必要があるため、syscallは特別です。
一般に、インクルードディレクトリと他のヘッダーファイル(kernel / sched / sched.hのような独立したファイル)は、階層的なロジックに従います。makeとgccの両方が役割を果たすと思います。
これらのシンボルの体系的な使用により、すべてのヘッダー「ユニット」が1回だけ読み取られるようにします。(十字が多すぎる可能性があるため、「保護ラッパー」)。ここからinclude/linux/mm.h
:
#ifndef _LINUX_MM_H
#define _LINUX_MM_H
#include <linux/errno.h>
#ifdef __KERNEL__
... (#includes)
... (ext. decl. etc., the whole mm.h)
#endif /* __KERNEL__ */
#endif /* _LINUX_MM_H */
tblファイルには次のものが含まれます。
# 32-bit system call numbers and entry vectors
リストは次で始まります:
0 i386 restart_syscall sys_restart_syscall __ia32_sys_restart_syscall
1 i386 exit sys_exit __ia32_sys_exit
2 i386 fork sys_fork __ia32_sys_fork
3 i386 read sys_read __ia32_sys_read
#
# 64-bit system call numbers and entry vectors
#
# The format is:
# <number> <abi> <name> <entry point>
#
# The __x64_sys_*() stubs are created on-the-fly for sys_*() system calls
#
# The abi is "common", "64" or "x32" for this file.
後でレイアウトします...