From: David Howells
Sent: 15 September 2023 12:23
David Laight David.Laight@ACULAB.COM wrote:
Some measurements can be made using readv() and writev() on /dev/zero and /dev/null.
Forget /dev/null; that doesn't actually engage any iteration code. The same for writing to /dev/zero. Reading from /dev/zero does its own iteration thing rather than using iterate_and_advance(), presumably because it checks for signals and resched.
Using /dev/null does exercise the 'copy iov from user' code.
Ummm.... Not really:
I was thinking of import_iovec() - or whatever its current name is.
That really needs a single structure that contains the iov_iter and the cache[] (which the caller pretty much always allocates in the same place). Fiddling with that is ok until you find what io_uring does. Then it all gets entirely horrid.
David
- Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK Registration No: 1397386 (Wales)