It doesn't necessarly have to, once you extend the single return code to a
vector:
struct async_submit {
void *cookie;
int sysc_nbr;
int nargs;
long args[ASYNC_MAX_ARGS];
int async_result;
};
int async_submit(struct async_submit *a, int n);
And async_submit() can mark each one ->async_result with -EASYNC (syscall
has been batched), or another code (syscall completed w/out schedule).
IMO, once you get a -EASYNC for a syscall, you *have* to retire the result.
- Davide
-