Skip site navigation (1)Skip section navigation (2)
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>