[[!meta copyright="Copyright © 2008, 2009 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]]."]]"""]] [[!meta title="Convert Hurd Libraries and Servers to pthreads"]] [[!tag open_issue_pthread]] The Hurd was originally created at a time when the [pthreads standard](http://www.opengroup.org/onlinepubs/009695399/basedefs/pthread.h.html) didn't exist yet. Thus all Hurd servers and libraries are using the old [[cthreads|hurd/libcthreads]] package that came with [[microkernel/Mach]], which is not compatible with [[pthreads|hurd/libpthread]]. Not only does that mean that people hacking on Hurd internals have to deal with a non-standard thread package, which nobody is familiar with. Although a pthreads implementation for the Hurd was created in the meantime, it's not possible to use both cthreads and pthreads in the same program. Consequently, pthreads can't presently be used in any Hurd servers -- including translators. (Thus it's impossible to use the [Hurd libfuse](http://www.nongnu.org/hurdextras/#libfuse) with any FUSE modules depending on pthreads for example.) Most of the conversion has already been done in previous efforts (see [[!GNU_Savannah_task 5487]]) -- but the tricky parts are still missing. The goal of this project is to have all the Hurd code use pthreads. Should any limitations in the existing pthreads implementation turn up that hinder this transition, they will have to be fixed as well. This project requires relatively little Hurd-specific knowledge. Experience with multithreaded programming in general and pthreads in particular is required, though. Possible mentors: Barry deFreese (bddebian), Samuel Thibault (youpi) Exercise: Try to fix one of the outstanding issues with the work done so far. It's not yet complete, and there hasn't been much debugging yet, so it should not be too hard to find something needing improvement -- but if you don't see anything obvious, feel free to talk to us about an alternative exercise task.