XXNU Source Handbook Download offline version from here
Part 09 · Chapter 09.22

Mach messages: arcade_register

Message catalog and dispatch · All subsystem ranges · Kernel entry map

osfmk/mach/arcade_register.defs. Listed in the kernel kobject subsystem table, subject to the registration guards and per-slot skips. The destination's typed capability still controls admission. Registration evidence: mig_e.

Reading these entries

IDs are computed from the explicit preprocessing profiles in the catalog guide, counting both routines and skip slots. They are not discovered from a running kernel. Each entry retains all observed names/declaration locations; the displayed fields come from the first non-skipped profile. Alternative declarations can have different fields. simpleroutine is one-way at the MIG interface level.

An interface contract block quotes the adjacent local .defs comment with whitespace normalized. Mechanism paragraphs explain selected implementation decisions. Local body links and call names identify implementation evidence; syntactic call lists are reading aids, not a proof that every listed call executes on every path. Short complete implementation bodies are included where especially useful.

Complete routine and reserved-slot catalog

51471: arcade_register_new_upcall

Register or replace the protected-feature upcall port after the local entitlement and ownership checks.

Mechanism: Requires a valid registration object and the arcade service entitlement. While a refresh is in progress, replaces the saved upcall send right under arcade_upcall_mutex, consumes the new right and wakes the waiting refresh. Outside that interval it fails, so possession of the registration port alone does not allow arbitrary-time endpoint replacement. Local path.

Declarations: arcade_register_new_upcall (server64, server32, client64, client32, libsyscall64, sender64, local64).

Fields after preprocessing (server64):

routine arcade_register_new_upcall(
     arcade_register : arcade_register_t;
     arcade_upcall : mach_port_t);

Local body: arcade_register_new_upcall. Calls visible in this body include os_log, IOCurrentTaskHasEntitlement, lck_mtx_lock, IP_VALID, ipc_port_release_send, lck_mtx_unlock, thread_wakeup.

Search the handbook

Search every chapter, interface and code excerpt.

    Diagram

    Source preview

    Open full file