Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

unimplemented(2) – afs_syscall, break, getpmsg, gtty, lock, mpx, prof, putpmsg, security, stty, tuxcall, vserver

FieldValue
Numbers (x64 / i386 / arm64-generic / arm32)afs_syscall 183 / 137 / – / –; break – / 17 / – / –; getpmsg 181 / 188 / – / –; gtty – / 32 / – / –; lock – / 53 / – / –; mpx – / 56 / – / –; prof – / 44 / – / –; putpmsg 182 / 189 / – / –; security 185 / – / – / –; stty – / 31 / – / –; tuxcall 184 / – / – / –; vserver 236 / 273 / – / 313
Since (kernel)– (slots reserved across the 1.0/2.0/2.4 table generations; man-pages syscalls(2) lists them all in the unimplemented set)
Man pageman2/unimplemented.2 (man-pages 6.19 HTML set, fetched 2026-10-17) covers exactly this group: “These system calls are not implemented in the Linux kernel”
glibc wrappernone – no symbol for any of these names in glibc 2.41 (nm -D); several (stty/gtty/break/lock/mpx/prof) are classic UNIX names kept as table placeholders
Aliases coveredafs_syscall (SC-afs_syscall), break (SC-break), getpmsg (SC-getpmsg), gtty (SC-gtty), lock (SC-lock), mpx (SC-mpx), prof (SC-prof), putpmsg (SC-putpmsg), security (SC-security), stty (SC-stty), tuxcall (SC-tuxcall), vserver (SC-vserver)
Ledger IDSC-afs_syscall (grouped page)

Purpose

One page for the twelve table slots that were reserved but never implemented: the STREAMS pair getpmsg/putpmsg (and the reserved x64 slots for them), the pre-POSIX tty/io names stty/gtty/break/lock/mpx/prof, the AFS placeholder afs_syscall, the x86 “security” placeholder, tuxcall (the userspace web-server hook that only ever existed in the TUX tree), and vserver (the Linux-VServer reservation that never entered mainline). unimplemented.2 states the contract for all of them.

Synopsis

/* no prototypes exist; each slot would have been invoked via syscall(2) */

Arguments and behavior

There is no behavior to document: the slots exist so the table numbering is stable, and every implementation returns -ENOSYS (unimplemented.2, RETURN VALUE). On arm64/asm-generic the names simply have no rows at all – the -- columns are meaningful, not gaps (ledger overview, scope caveats).

Return value and errors

Always -1 with errno set to ENOSYS (unimplemented.2, RETURN VALUE).

Flags and constants

None.

Security and notes

Why keep dead slots? Renumbering syscalls breaks every compiled binary; placeholders freeze the numbering forever. Interviews probe this as “why does syscall 17 exist if break(2) was never implemented” – the answer is ABI stability, the same reason x86_64 183/184/185 stayed occupied by afs_syscall/getpmsg/putpmsg placeholders. Note the neighbors documented elsewhere in this encyclopedia: ftime (own page, ftime), ulimit (ulimit) and profil (profil) are library routines rather than kernel calls, per unimplemented.2 NOTES. Cross-reference: ftime, ulimit, profil, syscalls hub.

References

  • https://man7.org/linux/man-pages/man2/unimplemented.2.html
  • man-pages syscalls(2) (the unimplemented list repeats this set)
  • worklog: no glibc symbols for any grouped name (nm -D, glibc 2.41, 2026-10-17)