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_pidvaut -45,mach_msg2_trapvaut -31). Sur x86_64, c'estSYSCALL_CLASS_MACH << 24 | indexdans EAX. - Sémantique
kern_return_t. Pas d'errno. Le trap retourne 0 (KERN_SUCCESS) ou un codeKERN_*/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.