syscall.sh - 27개 아키텍처 Linux 시스템 콜 테이블 및 API
Show HN: I've updated my Linux System Call website and API

syscall.sh는 27개 아키텍처의 Linux 시스템 콜 테이블을 한곳에 모아 놓은 사이트입니다. 각 콜의 번호, 인자, 레지스터, 커널 버전별 추가·제거 이력을 확인할 수 있으며, 모든 데이터는 커널 소스에서 직접 추출해 정확합니다. 아키텍처별 호출 규약 표와 JSON 다운로드, 그리고 api.syscall.sh/v2 API를 제공해 시스템 프로그래머와 보안 연구자가 빠르게 참조할 수 있습니다. 커널 버전 셀렉터로 변경 사항을 추적할 수 있어 저수준 개발에 유용합니다.
모든 데이터는 커널 소스 자체에서 읽어오기 때문에, 여기 있는 번호는 커널이 실제로 디스패치하는 번호입니다.
HN 토론
47- 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
정말 훌륭한 자료인데 몰랐네요. 그런데 위 웹사이트와는 상관없는 질문이 있습니다. 리눅스 API가 동일하다면 왜 시스템 콜이 아키텍처마다 다른가요?
아니면 제가 C 표준 라이브러리/POSIX와 혼동해서 모든 곳에서 동일해야 한다고 가정한 걸까요?