logoalt Hacker News

titzer11/07/20241 replyview on HN

There are several advantages to using kernel syscalls directly:

1. No overhead from libc; minimizes syscall cost

2. No dependency on libc and C language ABI/toolchains

3. Reduced attack surface. libc can and does have bugs and potentially ROP or Spectre gadgets.

4. Bootstrapping other languages, e.g. Virgil


Replies

kllrnohj11/07/2024

> 1. No overhead from libc; minimizes syscall cost

The few nanoseconds of a straight function call are absolutely irrelevant vs the 10s of microseconds of a syscall cost and you lose out on any of the optimizations a libc has that you might not or didn't think about (like memoization of getpid() ) and you need to take on keeping up with syscall evolution / best practices which a libc generally has a good handle on.

> No dependency on libc and C language ABI/toolchains

This obviously doesn't apply to a C syscall header, though, such as the case in OP :)

show 2 replies