Date: Thu, 18 Feb 2016 21:31:44 -0500 (EST) From: Daniel Eischen <deischen@freebsd.org> To: Konstantin Belousov <kostikbel@gmail.com> Cc: Eric van Gyzen <vangyzen@FreeBSD.org>, threads@freebsd.org, arch@freebsd.org Subject: Re: libthr shared locks Message-ID: <Pine.GSO.4.64.1602182101330.826@sea.ntplx.net> In-Reply-To: <20160219003255.GU91220@kib.kiev.ua> References: <20151223172528.GT3625@kib.kiev.ua> <56BE69B8.9020808@FreeBSD.org> <56C24586.9050906@FreeBSD.org> <20160216113222.GY91220@kib.kiev.ua> <Pine.GSO.4.64.1602161224250.19440@sea.ntplx.net> <20160217164541.GM91220@kib.kiev.ua> <Pine.GSO.4.64.1602171220540.24204@sea.ntplx.net> <20160218153256.GS91220@kib.kiev.ua> <Pine.GSO.4.64.1602181204470.28877@sea.ntplx.net> <20160219003255.GU91220@kib.kiev.ua>
next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, 19 Feb 2016, Konstantin Belousov wrote:
> On Thu, Feb 18, 2016 at 12:09:59PM -0500, Daniel Eischen wrote:
>> On Thu, 18 Feb 2016, Konstantin Belousov wrote:
>>> But base system provides C++ runtime for ports and I suspect that libc++
>>> depends on the libthr ABI. Even jemalloc depends on libthr ABI. So
>>> changing only the base ABI is probably impossible, from the first look
>>> the switch like WITH_LIBTHR2_DEFAULT would be a flag day. Anyway, this
>>> must be considered carefully during the later stage of the libthr2
>>> development, right now it is rather empty speculation on my side.
> This paragraph is relevant for my answer below.
>
>>
>> I would think partially inlined objects (still a pointer inside)
>> could be made in libthr (not libthr2) by default for 11.0 (or 11.x).
>> So that the only change is the size of the objects, not anything
>> else. The only breakage would be layout related.
>
> Structure size is part of the library ABI, when the structure is exposed
> to user, it cannot be increased without consequences.
>
> Changing the size of the libthr objects changes layout of the objects
> embedding the locks. Doing
> class MyLock {
> private:
> pthread_mutex_t m_lock;
> const char *name;
> };
> is the common and very popular practice. With the change proposed to
> libthr.so.3, you get subtle and sudden ABI breakage for all libthr
> consumers as well. In particular, it would affect libc (jemalloc) and
> libc++. Depending on the variant of headers used for the compilation,
> you get different layout for user structures.
libc is part of FreeBSD, so it would be recompiled for the new
size. I was also assuming library version bumps.
--
DE
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.GSO.4.64.1602182101330.826>
