On Sun, Dec 14, 2003 at 05:16:37PM +0000, Jamie Lokier wrote: > Peter Horton wrote: > > I've seen code written for X86 use MAP_FIXED to create self wrapping > > ring buffers. Surely it's better to fail the mmap() on other archs > > rather than for the code to fail in unexpected ways? > > Such code should test the buffers or just not create ring buffers on > architectures it doesn't know about. (You can usually simulate them > by copying data). On some architectures there is _no_ alignment which > works, and even on x86 aligning aliases to 32k results in faster > memory accesses on some chips (AMD ones). > > Also, sometimes a self wrapping ring buffer can work even when the > separation isn't coherent, provided the code using it forces cache > line flushes at the appropriate points. Still I don't see why we shouldn't simply return EINVAL if a user is trying to something obviously stupid - assuming full coherency in application is a somewhat common thing and there's better things to waste time on. And yes while we could support coherency for arbitrary mappings I agree it's a bad idea - but there's a huge difference between just checking arguments and adding the large extra complexity of supporting arbitrary combinations of addresses for mappings. Ralf