LTP (Linux Test Project)
最近、LTP というプロジェクトを知りました。
https://github.com/linux-test-project/ltp
LTP は、Linux カーネルにおけるシステムコール等の各種インターフェイス用テストプログラム/スクリプト郡です。
このプロジェクトを知ったきっかけは、process_vm_readv というシステムコールの使い方を調べている時でした。man ページだけではイマイチ使い方がわからなかったので、より具体的なサンプルプログラムを Web 上で探していたところ、運良く上記 github リポジトリを発見しました。
早速、手元に clone し、grep してみると、テストコードらしきソースファイルを発見出来ました。
% grep --col "process_vm_readv" **/*.[ch] testcases/kernel/syscalls/cma/process_vm.h:static inline ssize_t test_process_vm_readv(pid_t pid, testcases/kernel/syscalls/cma/process_vm.h:#if defined(__NR_process_vm_readv) testcases/kernel/syscalls/cma/process_vm.h: return syscall(__NR_process_vm_readv, pid, lvec, liovcnt, testcases/kernel/syscalls/cma/process_vm01.c: * errno tests shared by process_vm_readv, process_vm_writev tests. testcases/kernel/syscalls/cma/process_vm01.c:static char TCID_readv[] = "process_vm_readv"; ...(省略)...
本質的なコード以外にも、テスト実施に付随したコードがあるため一部追いづらいところもありますが、実際に動作するコードなので、参考になります。
尚、ltp のビルド手順は以下のとおりです。
# apt-get intall automake (必要に応じて) % make autotools % ./configure % make
上記で、testcases のソースコードと同じ位置に、テストプログラム本体が出力されます。(具体的な使い方などは、ソースコード上で確認するのが早いです。)