Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 28 Dec 2009 19:20:59 -0500
From:      Daniel Eischen <eischen@vigrid.com>
To:        Alexander Kabaev <kabaev@gmail.com>
Cc:        Eischen <deischen@freebsd.org>, "freebsd-threads@freebsd.org" <freebsd-threads@freebsd.org>, "Daniel@freebsd.org" <Daniel@freebsd.org>, David Xu <davidxu@freebsd.org>
Subject:   Re: first patch for process-shared semaphore
Message-ID:  <EE023A4F-4493-471F-B5B9-EFFFADA84353@vigrid.com>
In-Reply-To: <20091228150423.201936b4@kan.dnsalias.net>
References:  <4B317741.8080004@freebsd.org> <200912240759.47703.jhb@freebsd.org> <4B385BB9.3010109@freebsd.org> <200912281121.30939.jhb@freebsd.org> <20091228150423.201936b4@kan.dnsalias.net>

next in thread | previous in thread | raw e-mail | index | archive | help
On Dec 28, 2009, at 3:04 PM, Alexander Kabaev <kabaev@gmail.com> wrote:

> On Mon, 28 Dec 2009 11:21:30 -0500
> John Baldwin <jhb@freebsd.org> wrote:
>
>> On Monday 28 December 2009 2:18:17 am David Xu wrote:
>>> John Baldwin wrote:
>>>> On Wednesday 23 December 2009 10:12:19 pm Alexander Kabaev wrote:
>>>>> On Thu, 24 Dec 2009 09:58:50 +0800
>>>>> David Xu <davidxu@freebsd.org> wrote:
>>>>>
>>>>>> Alexander Kabaev wrote:
>>>>>>> On Thu, 24 Dec 2009 09:22:34 +0800
>>>>>>> David Xu <davidxu@freebsd.org> wrote:
>>>>>>>> libthr does not require semaphore, it implements semaphore,
>>>>>>>> it is easier than other ways to implement the process-shared.
>>>>>>>>
>>>>>>> Let me rephrase: I do not think semaphores belong in libthr.
>>>>>>> They should be either in libc or in librt.
>>>>>>>
>>>>>>>
>>>>>> OK, does others really implement semaphore in librt ?
>>>>>> unfortunately, the librt already requires libpthread to
>>>>>> implement SIGEV_THREAD.
>>>>> I retract that. It appears that there is no consistency -
>>>>> Solaris put these into libc, Linux into libpthread ans SUSv2
>>>>> hints that these belong with realtime functions. libthr is fine.
>>>>
>>>> I vote for libc.  Single-threaded processes can use sem_open()
>>>> and PSHARED sem_init() as well.  Single-threaded processes can
>>>> even use non-PSHARED sem_init() by using fork() to create new
>>>> "threads" that share the
>> semaphore.
>>>>
>>> May I can move all semaphore functions into libc and remove all
>>> semaphore related symbols from libthr ? In pratical, this is not a
>>> problem, because libthr itself is not dlopen-safe, all missing
>>> semaphore functions in libthr will be found in libc by rtld.
>>
>> I would go with this approach.  There is also some discussion about
>> moving all of libthr into libc as well and having a dummy libpthread
>> now that we are back to a single threading library and to avoid
>> issues with dlopen() of libpthread, etc.
>>
>
> Removing symbols from library, versioned library especially, is a big
> wrong. You should provide compat symbols for all functions that that
> were there before.

I tend to agree.  I also don't understand the desire to include libthr  
in libc.  Other than dlopen()ing libpthread (which can be worked  
around other ways), I don't understand why we would need or want this.

-- 
DE



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?EE023A4F-4493-471F-B5B9-EFFFADA84353>