Le 08/06/2016 à 15:29, riku.voi...@linaro.org a écrit : > From: Riku Voipio <riku.voi...@linaro.org> > > The following changes since commit 76462405809d29bab65a3699686998ba124ab942: > > Merge remote-tracking branch > 'remotes/pmaydell/tags/pull-target-arm-20160606-1' into staging (2016-06-06 > 17:02:42 +0100) > > are available in the git repository at: > > git://git.linaro.org/people/riku.voipio/qemu.git > tags/pull-linux-user-20160608 > > for you to fetch changes up to 014628a705bdaf31c09915c29e61f4088956564d: > > linux-user: In fork_end(), remove correct CPUs from CPU list (2016-06-08 > 12:06:57 +0300) > > ---------------------------------------------------------------- > linux-user pull request for June 2016 > > ---------------------------------------------------------------- > > Laurent Vivier (5): > linux-user: Fix qemu-binfmt-conf.sh to store config across reboot > linux-user: add rtnetlink(7) support > linux-user: support netlink protocol NETLINK_KOBJECT_UEVENT > linux-user: add netlink audit > linux-user: check if NETLINK_ROUTE is available > > Peter Maydell (31): > linux-user: Factor out handle_signal code from > process_pending_signals() > linux-user: Move handle_pending_signal() to avoid need for declaration > linux-user: Fix stray tab-indent > linux-user: Factor out uses of do_sigprocmask() from sigreturn code > linux-user: Define macro for size of host kernel sigset_t > linux-user: Use safe_syscall for sigsuspend syscalls > linux-user: Fix race between multiple signals > linux-user: Use safe_syscall for kill, tkill and tgkill syscalls > linux-user: Use both si_code and si_signo when converting siginfo_t > linux-user: Avoid possible misalignment in target_to_host_siginfo() > linux-user: provide frame information in x86-64 safe_syscall > linux-user: Fix handling of arm_fadvise64_64 syscall > linux-user: Fix NR_fadvise64 and NR_fadvise64_64 for 32-bit guests > linux-user: Fix error conversion in 64-bit fadvise syscall > linux-user: Use safe_syscall wrapper for readv and writev syscalls > linux-user: Use safe_syscall wrapper for connect syscall > linux-user: Use safe_syscall wrapper for send* and recv* syscalls > linux-user: Use safe_syscall wrapper for msgsnd and msgrcv > linux-user: Use safe_syscall wrapper for mq_timedsend and > mq_timedreceive > linux-user: Use safe_syscall wrapper for flock > linux-user: Use safe_syscall wrapper for rt_sigtimedwait syscall > linux-user: Use safe_syscall wrapper for sleep syscalls > linux-user: Use safe_syscall wrapper for poll and ppoll syscalls > linux-user: Use safe_syscall wrapper for epoll_wait syscalls > linux-user: Use safe_syscall wrapper for semop > linux-user: Use safe_syscall wrapper for accept and accept4 syscalls > linux-user: Use safe_syscall wrapper for ioctl > linux-user: Correct signedness of target_flock l_start and l_len > fields > linux-user: Make target_strerror() return 'const char *' > linux-user: Special-case ERESTARTSYS in target_strerror() > linux-user: In fork_end(), remove correct CPUs from CPU list > > Timothy E Baldwin (8): > linux-user: Remove redundant default action check in queue_signal() > linux-user: Remove redundant gdb_queuesig() > linux-user: Remove real-time signal queuing > linux-user: Queue synchronous signals separately > linux-user: Block signals during sigaction() handling > linux-user: pause() should not pause if signal pending > linux-user: Restart exit() if signal pending > linux-user: Restart fork() if signals pending > > configure | 36 +- > gdbstub.c | 13 - > include/exec/gdbstub.h | 1 - > linux-user/host/x86_64/safe-syscall.inc.S | 10 + > linux-user/main.c | 9 +- > linux-user/qemu.h | 64 +- > linux-user/signal.c | 567 ++++++++------- > linux-user/strace.c | 4 +- > linux-user/syscall.c | 1076 > +++++++++++++++++++++++++---- > linux-user/syscall_defs.h | 49 +- > scripts/qemu-binfmt-conf.sh | 389 +++++++++-- > 11 files changed, 1698 insertions(+), 520 deletions(-) > mode change 100644 => 100755 scripts/qemu-binfmt-conf.sh >
This is a great update! All the work around the signal management really improves the quality of QEMU linux-user. For instance, I thought for years that "dbench" cannot work correctly in linux-user mode because the thread is stuck in a wait() and all the state machine is managed in a signal handler (that was never called)... and now it works! [1] Thank you Peter! Laurent [1] qemu-m68k on i7-4790@3.6GHz: Throughput 217.83 MB/sec 1 procs Throughput 879.323 MB/sec 8 procs while a Quadra 800 is around 2 MB/sec...