Date: Mon, 24 Mar 2014 20:58:15 -0400 From: Rich Felker <dalias@...ifal.cx> To: musl@...ts.openwall.com Subject: Re: Transition path for removing lazy init of thread pointer On Mon, Mar 24, 2014 at 11:44:57PM +0000, Justin Cormack wrote: > On Mon, Mar 24, 2014 at 11:04 PM, Rich Felker <dalias@...ifal.cx> wrote: > > > > At this point we now have two mandatory syscalls at startup on most > > archs (just one where setting the thread pointer is entirely a > > userspace operation). The second syscall is set_tid_address, and it > > seems like it should only be needed it pthread_create is being used > > (to that pthread_join will work), but it serves a second purpose of > > standing in for gettid() too. We could, however, eliminate it in some > > cases:x > > Which archs is it userspace only? Setting the thread pointer is a fully-userspace operation on microblaze, sh, and powerpc. On the rest it requires a syscall. Note that one negative side-effect of it being fully userspace is that we get no indication of whether the kernel is new enough to support threads properly (whereas normally, successful syscall to set the thread pointer means the kernel supports threads). So on these archs, pthread_create really needs to be doing some extra work to make sure threads are supported and the clone flags it's using will actually have an effect; otherwise it could end up creating threads that don't behave at all like threads... This is an issue we've ignored until now, but it's fairly minor, especially since microblaze didn't even exist during 2.4 and sh has been broken in the kernel up til now and until at least the next kernel release. > Any idea what the performance benefit of the optimisations might be? > Static linked non threaded programs sounds like a good target. Basically just cutting off one syscall that takes ~1000-3000 cycles that's always accompanied by a syscall that takes over 100000 cycles (execve). So not much, I think. Rich
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.