syscall.sh - 27アーキテクチャのLinuxシステムコール表とAPI
Show HN: I've updated my Linux System Call website and API

syscall.shは、x64からriscv64、loongarch64、s390xまで27のアーキテクチャのLinuxシステムコール表を一箇所に集約したリファレンスサイトです。各システムコールの番号、引数、レジスタ、そしてカーネル3.3から7.3までの追加・削除履歴を確認できます。データはカーネルソースから直接生成され、実際にディスパッチされる番号と正確な呼び出し規約を反映。各アーキテクチャの表はJSON形式でダウンロードでき、api.syscall.sh/v2経由でAPIからも取得可能です。低レベル開発やカーネル調査、ポーティング作業の強力な味方になります。
すべてのデータはカーネルソースそのものから読み取られているので、ここに載っている番号はカーネルが実際にディスパッチする番号です。
HNでの議論
48- ozgrakkurt
次のようなコマンドを使うのもおすすめです:
echo '#include <sys/syscall.h>' | gcc -E -dM -xc - | grep -i "read"
これで自分のPC上の実際の値を確認できます。
LLMに間違った数値や定数定義を出されたことが何度かありましたが、こういうコマンドを生成させて自分で確認すれば毎回うまくいきます。
あと、chromiumのドキュメントにも表があります:
https://www.chromium.org/chromium-os/developer-library/refer...
このウェブサイトから直接システムコール番号にリンクできればとても便利でしょうね。
- bkallus
x86_64とx32では、システムコール番号はraxではなくeaxに入ります。raxの上位32ビットは無視され、何が入っていても構いません。
- guitmz
このウェブサイトを最初に公開したとき、システムコールAPIを調べるためのCLIも作りました。コードを整理して公開できると思います。埋め込みデータセットを使っているので、毎回APIエンドポイントに問い合わせる必要はありません。
- DustinBrett
そのウェブサイト、なぜか私のグラフィックスがおかしくなります。
- wg0
これは本当に素晴らしいリソースですね、知りませんでした。ただ、上のウェブサイトとは関係ない質問ですが、LinuxのAPIが同じなら、なぜシステムコールはアーキテクチャごとに異なるのでしょうか?
それとも、C標準ライブラリ/POSIXと混同して、どこでも同じはずだと思い込んでいるだけでしょうか?