> A driver may need to synchronize private capture accounting with the > common RESET pointer observation and the core's position rebase. > > Add an optional reset operation called under the member's stream lock. > Expose snd_pcm_lib_reset() so the callback can retain common pointer and > time handling. On zero return the core completes that member's rebase > before unlocking it. Drivers without the callback retain the ioctl path. > The operation is also used after a successful prepare. > > Zero permits the position rebase; it does not promise XRUN recovery. A > negative return skips the core rebase, so a callback returning an error > must leave coherent pointer state even after partial work. > > Linked RESET and prepare stop at the first error without rollback. > Earlier callback members may already have completed. Legacy members keep > the existing post_action policy. Applications must recover the group > after partial failure before relying on shared positions. > > This adds an internal kernel operation and no userspace ioctl or layout. > Out-of-tree modules using snd_pcm_ops need to be rebuilt. > > Complete appl_ptr rebasing once in the callback path. A later linked > member can sleep in prepare while the earlier member accepts SYNC_PTR; a > subsequent unlocked post_prepare assignment would overwrite that > acknowledgment. Keep explicit RESET playback silence processing and > leave prepare-time filling to the normal START path, preserving samples > written and rewound after prepare. > Signed-off-by: Joonho Lee <[email protected]>
Sashiko has reviewed this patch and found no issues. -- Sashiko AI review ยท https://sashiko.dev/#/patchset/[email protected]?part=3
