summaryrefslogtreecommitdiff
path: root/community/gsoc/project_ideas/pthreads.mdwn
blob: 9c703d36c09826d05fddff1a0b37ddb24715969f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
[[!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"]]

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.