summaryrefslogtreecommitdiff
path: root/community/gsoc/project_ideas/pthreads.mdwn
diff options
context:
space:
mode:
authorThomas Schwinge <thomas@schwinge.name>2010-12-13 17:11:51 +0100
committerThomas Schwinge <thomas@schwinge.name>2010-12-13 17:11:51 +0100
commit2d75167da62e3486836e5f1773e5f1ab06e43fe8 (patch)
treee44fc83e0b1419836d1b21652ad1d38b8d0af2c4 /community/gsoc/project_ideas/pthreads.mdwn
parent217998d56f5b6424a685f8c87f2c0e924d1c89da (diff)
parent5c5c16e265d8ef56b71f319885f32bf144bdea23 (diff)
Merge branch 'master' into external_pager_mechanism
Conflicts: microkernel/mach/external_pager_mechanism.mdwn
Diffstat (limited to 'community/gsoc/project_ideas/pthreads.mdwn')
-rw-r--r--community/gsoc/project_ideas/pthreads.mdwn49
1 files changed, 49 insertions, 0 deletions
diff --git a/community/gsoc/project_ideas/pthreads.mdwn b/community/gsoc/project_ideas/pthreads.mdwn
new file mode 100644
index 00000000..2270c774
--- /dev/null
+++ b/community/gsoc/project_ideas/pthreads.mdwn
@@ -0,0 +1,49 @@
+[[!meta copyright="Copyright © 2008, 2009, 2010 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_libpthread]]
+
+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.
+
+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|libpthread]]
+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.