WSL2のシステムコール実装/未実装を確認する

Windows 10 Pro Insider Preview 1903, 18922.1000 をインストールしてWSL2が使えるようになった。カーネルのバージョン情報を確認する。

# uname -a
Linux DESKTOP-DN3P0KN 4.19.43-microsoft-standard #1 SMP Mon May 20 19:35:22 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

WSLの時と同じツールを使ってWSL2のシステムコール実装/未実装を調べた結果、以下のシステムコールが未実装と判断した。

[134] uselib
[174] create_module
[176] delete_module
[177] get_kernel_syms
[178] query_module
[180] nfsservctl
[181] getpmsg
[182] putpmsg
[183] afs_syscall
[184] tuxcall
[185] security
[202] futex
[205] set_thread_area
[211] get_thread_area
[212] lookup_dcookie
[214] epoll_ctl_old
[215] epoll_wait_old
[236] vserver
[237] mbind
[238] set_mempolicy
[239] get_mempolicy
[246] kexec_load
[256] migrate_pages
[279] move_pages
[320] kexec_file_load
[323] userfaultfd

WSL2でほとんどのシステムコールが使えるようになったことがわかる。使えないのは共有ライブラリロード(uselib), カーネルモジュール操作(XXX_module), futex, TLS操作, NUMA操作, kexec, userfaultfdあたり。うちで作っているソフトウェアを動作させるために必須なメッセージキュー操作(msgXXX), syslog, mlockall が使えるようになったのは超朗報(^^)。