RE: [PATCH 01/29] iov_iter: Switch to using a table of operations

From: David Laight
Date: Sun Nov 22 2020 - 17:46:58 EST


From: David Howells
> Sent: 21 November 2020 14:14
>
> Switch to using a table of operations. In a future patch the individual
> methods will be split up by type. For the moment, however, the ops tables
> just jump directly to the old functions - which are now static. Inline
> wrappers are provided to jump through the hooks.

I was wondering if you could use a bit of 'cpp magic'
so the to call sites would be:
ITER_CALL(iter, action)(arg_list);

which might expand to:
iter->action(arg_list);
in the function-table case.
But could also be an if-chain:
if (iter->type & foo)
foo_action(args);
else ...
with foo_action() being inlined.

If there is enough symmetry it might make the code easier to read.
Although I'm not sure what happens to 'iterate_all_kinds'.
OTOH that is already unreadable.

David

-
Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK
Registration No: 1397386 (Wales)