tech-userlevel archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: PATCH libatomic
On Thu, May 07, 2020 at 08:14:57PM -0400, Thor Lancelot Simon wrote:
> On Fri, May 08, 2020 at 01:51:16AM +0200, Kamil Rytarowski wrote:
> > A runtime detection could be a part of ifunc (is it ready for NetBSD?).
> >
> > The standard C/C++ feature is to detect whether atomic operations are
> > real (lock-free) through atomic_is_lock_free(). This is a feature, not a
> > bug (as claimed by some people). atomic_is_lock_free() can be overloaded
> > in libatomic and detect CPU type in runtime and redirect either to real
> > CPU intrinsic of lock-free fallback.
>
> Not without performance penalty for every atomic operation, unless you propose
> to do this by binary patch as is done in the kernel.
ifuncs are pretty cool in enabling to do this everywhere, not just in a
kernel with binary patching.
It lets you write a "resolver function" which is run by ld.so in the
first run of the function, and it returns which variant of the function
should be used.
https://sourceware.org/glibc/wiki/GNU_IFUNC
Home |
Main Index |
Thread Index |
Old Index