[[!meta copyright="Copyright © 2011, 2012, 2013 Free Software Foundation, Inc."]] [[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable id="license" text="Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled [[GNU Free Documentation License|/fdl]]."]]"""]] [[!tag open_issue_glibc open_issue_libpthread]] This basically means to get rid of `sysdeps/mach/hurd/bits/libc-tsd.h` (and thus the `_HURD_THREADVAR_*`/`_hurd_threadvar_location` interface), and directly use `__thread` instead. [[!toc]] # IRC, freenode, #hurd, 2011-10-23 youpi: If we want to replace threadvars with TLS, there is one problem: the threadvars interface is publically exported: /usr/include/hurd/threadvar.h. youpi: But I am somewhat inclined to say that the only user of this is libthreads/libpthread. Do you think differently? tschwinge: that's very probable so I think we can just drop it (people should use TLS anyway) [[libpthread_set_stack_size]]. After this has been done, probably the whole `__libc_tsd_*` stuff can be dropped altogether, and `__thread` directly be used in glibc. # IRC, freenode, #hurd, 2012-08-07 r5219: Update libpthread patch to replace threadvar with tls for pthread_self r5224: revert r5219 too, it's not ready either as the changelog says, the __thread revertal is because it posed problems and I just didn't have any time to check them while the freeze was so close OK. What kind of problems? Should it be reverted upstream, too? I don't remember exactly it should just be fixed we can revert it upstream, but it'd be good that we manage to progress, at some point... Of course -- however as long as we don't know what kind of problem, it is a bit difficult. ;-) since I didn't left a note, it was most probably a mere glibc run, or boot with the patched libpthread *testsuite run OK. The libpthread testsuite doesn't show any issues with that patch applied, though. But I didn'T test anything else. youpi: Also, you have probably seen my glibc __thread errno email -- rmcgrath wanted to find some time this week to comment/help, and I take it you don't have any immediate comments to that issue? I saw the mails, but didn't investigate at all [[!message-id "878vdyqht3.fsf@kepler.schwinge.homeip.net"]]. # `getcontext`/`setcontext` Needed for [[gccgo]]. Instead of adding support for `getcontext`/`setcontext` within the Hurd threadvar context, which might become a bit ugly, the idea is to get rid of Hurd threadvars and replace them with TLS (as we want to, anyway). ## IRC, freenode, #hurd, 2012-04-19 How much work/knowledge is needed to implement getcontext/setcontext? Any already implemented alternatives available? x86 registers knowledge, as well as unix signal masks there's the linux implementation that can be taken as an exxample, but the signal part has to be rewritten Well, it's a pity they are not implemented. That's the remaining hurdle to get gccgo working :-( uh :/ Everything builds, but the testsuite fails due to these missing functions. Regarding getcontext/setcontext they seem to be written in assembly for linux but the code is not very long. How much effort would it be to write something similar for Hurd? Anybody fluent in asm? And registers and signals. gnu_srs: Signals is the key thing -- everything else we can probably just copy. I have never/not yet looked at it, though. For kfreebsd it is written in C: kern_context.c, 3/4 in one file: getcontext, setcontext, swapcontext, not makecontext. Dunno how much assembly calls used though. Hi, any preferences about implementing get/setcontext in C or Asm? gnu_srs: I think these will have to be implemented in assembly. Based on the Linux x86 variants. ### IRC, freenode, #hurd, 2012-04-20 youpi: Your understanding of that is better than mine -- the *context stuff can't be very useful at the moment, because when the user changes uc_stack.ss_sp (which the glibc tests are doing), we're losing access to the _hurd_threadvars. Correct? At least the getcontext test works, the other get a SIGILL. others _hurd_threadvars issue is just guessing. tschwinge: yes, threadvars are on the stack threadvars is not much code, it should just work, but care has to be taken on the libpthread/libthread side, which does some initialization OK, that at least matches my understanding.