tech-kern archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: Testing Emulation Syscalls
On Mon, Jul 31, 2023 at 05:03:48PM -0400, Theodore Preduta wrote:
> One idea (mentioned in the original thread) would be to introduce a
> syscall along the lines of
>
> int emul_syscall(const char *emul_name, int number, ...)
>
> which executes a single syscall. The flaw with this idea is that state
> may need to be stored across syscalls in struct linux_emuldata, but I
> don't know how this interface could accommodate this.
>
> Another idea would be to introduce a syscall along the lines of
>
> int setemul(const char *emul_name)
>
> which would switch the syscall table dynamically so that the test case
> could be run under emulation (preserving emuldata state) and then switch
> back to report the result. (And then individual syscalls would be
> called via __syscall(2).)
I think this would be quite tricky for the test code in userland.
But what about a variant of the initial suggestion:
// returns an integer descriptor
int open_emul(const char *emulname);
// invokes a syscall under an open emulation
int emul_syscall(int emul, int number, ...);
// frees all state for the emulation, returns 0 or -1
int close_emul(int emul);
IMO this still is far better than exposing native syscalls that we do
not really need/want.
Martin
P.S.: independent of this, the "make kqueue work across forks" is a good
idea, independent of the epoll syscall.
Home |
Main Index |
Thread Index |
Old Index