On Sun, Aug 20, 2023 at 9:35 AM Richard Henderson < richard.hender...@linaro.org> wrote:
> On 8/19/23 02:48, Karim Taha wrote: > > From: Stacey Son <s...@freebsd.org> > > > > The above system calls are not supported by qemu. > > > > Signed-off-by: Stacey Son <s...@freebsd.org> > > Signed-off-by: Karim Taha <kariem.taha...@gmail.com> > > --- > > bsd-user/bsd-mem.h | 21 +++++++++++++++++++++ > > bsd-user/freebsd/os-syscall.c | 12 ++++++++++++ > > 2 files changed, 33 insertions(+) > > > > diff --git a/bsd-user/bsd-mem.h b/bsd-user/bsd-mem.h > > index f737b94885..274178bef7 100644 > > --- a/bsd-user/bsd-mem.h > > +++ b/bsd-user/bsd-mem.h > > @@ -407,4 +407,25 @@ static inline abi_long do_bsd_shmdt(abi_ulong > shmaddr) > > return get_errno(shmdt(g2h_untagged(shmaddr))); > > } > > > > +static inline abi_long do_bsd_vadvise(void) > > +{ > > + /* See sys_ovadvise() in vm_unix.c */ > > + qemu_log("qemu: Unsupported syscall vadvise()\n"); > > + return -TARGET_ENOSYS; > > +} > > I see EINVAL not ENOSYS. > When the system call isn't present at all, it's ENOSYS + SIGSYS (I have patches to implement this that developers love, but users hate it since many programs cope OK when an error is returned for obscure system calls). When it is present, it's implemented as EINVAL. So maybe the right thing here is to remove the log and just return EINVAL for the implementation. > > +static inline abi_long do_bsd_sbrk(void) > > +{ > > + /* see sys_sbrk() in vm_mmap.c */ > > + qemu_log("qemu: Unsupported syscall sbrk()\n"); > > + return -TARGET_ENOSYS; > > +} > > + > > +static inline abi_long do_bsd_sstk(void) > > +{ > > + /* see sys_sstk() in vm_mmap.c */ > > + qemu_log("qemu: Unsupported syscall sstk()\n"); > > + return -TARGET_ENOSYS; > > +} > > I see EOPNOTSUPP not ENOSYS. > Same comment as above: we should just return EOPNOSUPP and call it implemented. > I don't see any point in logging these. > Yea, that's a general pattern that we have upstream, but there's a catch-all 'default' case that does the logging with the right mask. Warner