From: Warner Losh <i...@bsdimp.com> Add the dispatching code of bind(2),connect(2), accpet(2), getpeername(2).
Add the bind(2), connect(2), accept(2), getpeername(2) syscalls case statements to freebsd_syscall function defined in bsd-user/freebsd/os-syscall.c Signed-off-by: Karim Taha <kariem.taha...@gmail.com> --- bsd-user/freebsd/os-syscall.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/bsd-user/freebsd/os-syscall.c b/bsd-user/freebsd/os-syscall.c index c8f998ecec..7f29196a05 100644 --- a/bsd-user/freebsd/os-syscall.c +++ b/bsd-user/freebsd/os-syscall.c @@ -44,6 +44,8 @@ #include "signal-common.h" #include "user/syscall-trace.h" +/* BSD independent syscall shims */ +#include "bsd-socket.h" #include "bsd-file.h" #include "bsd-proc.h" @@ -508,6 +510,25 @@ static abi_long freebsd_syscall(void *cpu_env, int num, abi_long arg1, ret = do_freebsd_sysarch(cpu_env, arg1, arg2); break; + /* + * socket related system calls + */ + case TARGET_FREEBSD_NR_accept: /* accept(2) */ + ret = do_bsd_accept(arg1, arg2, arg3); + break; + + case TARGET_FREEBSD_NR_bind: /* bind(2) */ + ret = do_bsd_bind(arg1, arg2, arg3); + break; + + case TARGET_FREEBSD_NR_connect: /* connect(2) */ + ret = do_bsd_connect(arg1, arg2, arg3); + break; + + case TARGET_FREEBSD_NR_getpeername: /* getpeername(2) */ + ret = do_bsd_getpeername(arg1, arg2, arg3); + break; + default: qemu_log_mask(LOG_UNIMP, "Unsupported syscall: %d\n", num); ret = -TARGET_ENOSYS; -- 2.40.0