Skip to content

Glossary

Mach trap

Un syscall vers la moitié micro-noyau Mach de XNU — tasks, threads, ports, IPC, primitives mémoire. Numéros négatifs, sémantique kern_return_t.

Un Mach trap est la convention de syscall utilisée pour parler directement au cœur micro-noyau Mach de XNU. Toute IPC inter-task, toute manipulation de task port, toute primitive VM bas niveau sur macOS passe par l'un d'eux.

Traits distinctifs :

  • Numéro négatif dans x16 (ex. task_for_pid vaut -45, mach_msg2_trap vaut -31). Sur x86_64, c'est SYSCALL_CLASS_MACH << 24 | index dans EAX.
  • Sémantique kern_return_t. Pas d'errno. Le trap retourne 0 (KERN_SUCCESS) ou un code KERN_* / MACH_* directement.
  • Pas de gestion automatique de descripteurs. Les Mach ports sont passés en registres ; le cycle de vie est à la charge de l'appelant.

Il y en a ~70 dans XNU actuel — bien moins que de syscalls BSD. La table est dans osfmk/kern/syscall_sw.c. Le dispatch passe par mach_call_munger64() dans osfmk/arm64/bsd_arm64.c.

Les Mach traps sont la fondation des Mach ports, qui à leur tour sont la fondation de toute forme d'IPC sur macOS — y compris XPC, NSXPC et les user clients IOKit.