By David Howells and Paul E. McKenney. The Linux Kernel documentation hosts this authored guide; no publication date is asserted.
Cited passages: What is a circular buffer?; Measuring power-of-2 buffers; Using memory barriers with circular buffers, including The producer and The Consumer. Its reserved-slot and synchronization conventions are specific to the presented implementation.
David Howells Created 2026-10-18 Updated 2026-11-05
David Howells is a software engineer who has contributed technical documentation for the Linux kernel. With Paul E. McKenney, he authored a guide to circular buffers, including the interaction between index arithmetic and synchronization.[ref]
Their example separates the producer's insertion index from the consumer's removal index. With one producer and one consumer, memory barriers publish initialized data before an index advertises it as available. This illustrates why a correct data structure needs both an indexing convention and an account of what concurrent operations can observe.[ref]
Paul E. McKenney Created 2026-10-18 Updated 2026-11-05
Paul E. McKenney is a computer scientist known for work on concurrent computing and operating-system kernels. His contributions include read-copy-update, developed for systems in which reads are frequent and updates must coexist with them.[ref]
The key read-copy-update distinction is between removing an object from a shared data structure and reclaiming its storage. An earlier reader may still hold a reference after removal; reclamation waits until the relevant readers have finished. That separation permits lighter synchronization on the read path. It is an example of how the lifetime of a shared object becomes part of a concurrent algorithm.[ref]
With David Howells, he also authored the kernel guide to circular buffers and their memory barriers.[ref]