All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3 0/4] util: Add thread-safe qemu_strerror() function
@ 2023-03-30 17:07 Yohei Kojima
  2023-03-30 17:13 ` [PATCH v3 1/4] " Yohei Kojima
                   ` (4 more replies)
  0 siblings, 5 replies; 10+ messages in thread
From: Yohei Kojima @ 2023-03-30 17:07 UTC (permalink / raw)
  To: qemu-devel; +Cc: Alex Bennée, Daniel P . Berrangé, Yohei Kojima

This patch series adds qemu_strerror() function, which is thread-safe
version of the libc strerror(). The first patch introduces the
qemu_strerror() function, and the second patch replaces strerror()
function in linux-user/* with qemu_strerror() function.

The difference between this patch series are:
  1. Add the following patches
    accel: replace strerror() function to the thread safe qemu_strerror()
    target/i386: replace strerror() function to the thread safe
  2. Add `#include "qemu/cutils.h"` line to linux-user/elfload.c
  3. Fix qemu_strerror() to follow the QEMU coding style

The following lines are same to the cover letter in the previous
version.

Because it involves thread safety, qemu_strerror() should be tested
carefully. But before adding tests, I want to ask (1) will this patch be
acceptable to QEMU project after adding tests, (2) where and how
qemu_strerror() should be tested.

(1) means that: is my approach too complicated to solve potential
thread-unsafe implementation of strerror()? Although strerror() is not
guaranteed to be thread-safe, glibc implements thread-safe strerror().
We have to consider the balance between maintenance costs and potential
risks.

(2) means that: is tests/unit/test-cutils.c a good place for tests?
Because the behavior of qemu_strerror() is changed by the feature test
macros, the tests should be run with different test macros, hopefully
in different OSs.

Note that strerror_r() function called by qemu_strerror() has
different return types between architectures because of the historical
reason. qemu_strerror() handles both the newer POSIX strerror() and the
older POSIX strerror().

All tests except for skipped ones are passed in my environment (x86_64
linux).

Yohei Kojima (4):
  util: Add thread-safe qemu_strerror() function
  linux-user: replace strerror() function to the thread safe
    qemu_strerror()
  accel: replace strerror() function to the thread safe qemu_strerror()
  target/i386: replace strerror() function to the thread safe
    qemu_strerror()

 accel/kvm/kvm-all.c               | 32 +++++++++++---------
 accel/tcg/cputlb.c                |  3 +-
 accel/tcg/perf.c                  |  7 +++--
 include/qemu/cutils.h             | 20 +++++++++++++
 linux-user/elfload.c              |  6 ++--
 linux-user/main.c                 |  5 ++--
 linux-user/syscall.c              |  2 +-
 target/i386/kvm/kvm.c             | 49 ++++++++++++++++---------------
 target/i386/kvm/xen-emu.c         |  7 +++--
 target/i386/nvmm/nvmm-accel-ops.c |  2 +-
 target/i386/sev.c                 |  5 ++--
 target/i386/whpx/whpx-accel-ops.c |  2 +-
 util/cutils.c                     | 49 +++++++++++++++++++++++++++++++
 13 files changed, 136 insertions(+), 53 deletions(-)

-- 
2.39.2



^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2023-04-06 12:45 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-03-30 17:07 [PATCH v3 0/4] util: Add thread-safe qemu_strerror() function Yohei Kojima
2023-03-30 17:13 ` [PATCH v3 1/4] " Yohei Kojima
2023-03-30 19:06   ` Markus Armbruster
2023-03-31  4:00     ` Yohei Kojima
2023-04-06  8:57       ` Alex Bennée
2023-04-06 12:39         ` Yohei Kojima
2023-03-30 17:13 ` [PATCH v3 2/4] linux-user: replace strerror() function to the thread safe qemu_strerror() Yohei Kojima
2023-03-30 17:13 ` [PATCH v3 3/4] accel: " Yohei Kojima
2023-03-30 17:13 ` [PATCH v3 4/4] target/i386: " Yohei Kojima
2023-04-02  9:57 ` [PATCH v3 0/4] util: Add thread-safe qemu_strerror() function Yohei Kojima

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.