linuxカーネル4.4 # uname -r 4.4.24 # ausyscall x86_64 select select 23 pselect6 270 selectの番号は23である。 readが参照するファイルディスクリプタのカーネル内部での構造 "include/linux/ file.h”内の struct fd { struct file *file; unsigned int flags; }; で定義されている。 3.ファイルディスクリプタの排他制御 ファイルディスクリプタを参照する際のCレベルの排他制御は、 "fs/file.c" unsigned long __fdget_pos(unsigned int fd) { unsigned long v = __fdget(fd); struct file *file = (struct file *)(v & ~3); if (file && (file->f_mode & FMODE_ATOMIC_POS)) { if (file_count(file) > 1) { v |= FDPUT_POS_UNLOCK; mutex_lock(&file->f_pos_lock); } } return v; } にて行われている。 プロセスとスレッドは、"include/linux/sched.h"のtask_struct構造体で定義されて いる。 この構造体は、プロセスの実行状態やスタック、親や子プロセスや実行スレッドなどの情報を定義する。