Skip to content
BSD syscall#512

svc · unix #512

__channel_sync

Synchronizes a Skywalk channel with the kernel, publishing produced slots and reaping completed ones.

Prototype

int __channel_sync(int c, int mode, int flags);

Returns: int

Arguments

NameTypeDirDescription
cint-
modeint-
flagsint-

Version history

XNU tagmacOS#
xnu-8792.41.9macOS 13.0 Ventura512
xnu-10002.1.13macOS 14.0 Sonoma512
xnu-11215.1.10macOS 15.0 Sequoia512
xnu-11417.101.15macOS 15.4 Sequoia512
xnu-12377.1.9macOS 26.0 Tahoe512
xnu-10002.41.9512
xnu-10002.61.3512
xnu-10002.81.5512
xnu-10063.101.15512
xnu-10063.121.3512
xnu-10063.141.1512
xnu-11215.41.3512
xnu-11215.61.5512
xnu-11215.81.4512
xnu-11417.121.6512
xnu-11417.140.69512
xnu-12377.101.15512
xnu-12377.41.6512
xnu-12377.61.12512
xnu-12377.81.4512
xnu-8019.80.24512
xnu-8020.101.4512
xnu-8020.121.3512
xnu-8020.140.41512
xnu-8792.61.2512
xnu-8792.81.2512
xnu-8796.101.5512
xnu-8796.121.2512
xnu-8796.141.3512

Notes

The hot-path syscall of Skywalk: after writing packet metadata into shared-memory rings, user space calls __channel_sync to hand the slots to the nexus, and reads back completion indices for the rx ring. Conceptually similar to Linux's io_uring submit/complete or netmap's NIOCTXSYNC/NIOCRXSYNC. Apple's Network.framework batches dozens of packets per call to amortize the cost.

Detection

Per-packet visibility belongs to the nexus operator (kernel) or to a DriverKit network extension hooked into the same nexus. ES is blind here.

Related APIs

__channel_open__channel_get_infosendmsg_xrecvmsg_x