On 06/10/2018 02:39 AM, Peter Maydell wrote:
> It would be cleaner to have a single
> #if something
> static foo_impl(..) { ... }
> static syscall_impl foo = {
> .name = "foo",
> .impl = foo_impl,
> .strace_stuff = ...,
> };
> register_syscall(foo);
> #endif
>
> Hash table?
It would be cleaner to have everything in one place, yes. I just replied along
those lines elsewhere in the thread.
Indeed, now that I'm thinking along the lines of strace, I'm thinking that
there should be a separate argument extraction step that would be shared by
both strace and syscall implementation.
I'm not a fan of register_syscall(foo) and the startup costs that implies.
The set of syscalls that we support is fixed at compile time. We should have a
compile-time generation step that builds everything that is required. Whether
this is C emitting C, or python emitting C, I do not yet have an opinion.
r~