This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [PATCH 2/9] Add the low level infrastructure for pthreads lock elision with TSX
- From: "Carlos O'Donell" <carlos at redhat dot com>
- To: Andi Kleen <ak at linux dot intel dot com>
- Cc: Andreas Jaeger <aj at suse dot com>, libc-alpha at sourceware dot org
- Date: Wed, 15 May 2013 14:59:05 -0400
- Subject: Re: [PATCH 2/9] Add the low level infrastructure for pthreads lock elision with TSX
- References: <1368225725-14283-1-git-send-email-andi at firstfloor dot org> <1368225725-14283-3-git-send-email-andi at firstfloor dot org> <518F5B45 dot 6080301 at suse dot com> <20130513223037 dot GG4072 at tassilo dot jf dot intel dot com> <5191E43C dot 7070602 at suse dot com> <5191E770 dot 80105 at redhat dot com> <20130515183422 dot GL4072 at tassilo dot jf dot intel dot com>
On 05/15/2013 02:34 PM, Andi Kleen wrote:
>>
>> This code is run from elision_init which is in .init_array or .preinit_array.
>>
>> You should have all the functionality of the C library by that point?
>
> pthread has some magic that makes it run early.
libpthread.so runs __pthread_initialize_minimal early...
>>
>> Don't C++ static constructors are run from these?
>>
>> What problems did you have localizing this?
>
> I didn't try to localize this, but I had lots of problems with
> other services earlier (e.g. simple getenv does not work)
... and you can't call getenv from __pthread_initialize_minimal
because the library hasn't been setup enough for this to work.
Siddhesh fixed this for his work on setting the default thread
stack size from an environment variable.
So unless you are hooking into __pthread_initialize_minimal there
should be no problems.
Everything in the library should be localized unless we have a
good reason not to including that the services aren't available
to us at the point at which our code runs.
Cheers,
Carlos.