+Richard/Peter On 10/25/21 16:07, Stefan Hajnoczi wrote: > This is a preview of how we can solve the coroutines TLS problem. Coroutines > re-entered from another thread sometimes see stale TLS values. This happens > because compilers may cache values across yield points, so a value from the > previous thread will be used when the coroutine is re-entered in another > thread. > > Serge Guelton developed this technique, see the first patch for details. I'm > submitting it for discussion before I go ahead with a full conversion of the > source tree.
Beside the point Daniel raised (shared libs) this sensible approach LGTM. > > Todo: > - Convert all uses of __thread $ git grep __thread | wc -l 55 :/ > - Extend checkpatch.pl to reject code that uses __thread > > Stefan Hajnoczi (2): > tls: add macros for coroutine-safe TLS variables > util/async: replace __thread with QEMU TLS macros > > MAINTAINERS | 1 + > include/qemu/tls.h | 142 +++++++++++++++++++++++++++++++++++++++++++++ > util/async.c | 12 ++-- > 3 files changed, 150 insertions(+), 5 deletions(-) > create mode 100644 include/qemu/tls.h >
