TODO revision 1.1.2.8 1
2 Interfaces/features to implement:
3 - cancellation
4 - pthread_cond_wait() and associated timing goop.
5 - pthread_kill()
6 - pthread_atfork()
7 - priority scheduling
8 - non-i386 platform support
9 - libc integration:
10 - foo_r interfaces
11 - cancellation points
12 - flockfile()/funlockfile()/ftrylockfile()
13 - system integration
14 - some macros and prototypes belong in headers other than pthread.h
15
16
17 Features that need more/better regression tests:
18 - pthread_cond_broadcast()
19 - pthread_once()
20 - pthread_get/setspecific()
21 - signals
22
23
24 Things that need fixing:
25 - Correct [non]resumption of PT_IDLED thread.
26 - Recycle dead threads for new threads.
27
28 Ideas to play with:
29 - Explore the trapcontext vs. usercontext distinction in ucontext_t.
30 - Get rid of thread structures when too many accumulate (is this
31 actually a good idea?)
32 - Adaptive spin/sleep locks for mutexes.
33 - Supporting different mutex types would be nice (normal, debugging,
34 recursive, etc).
35 - Currently, each thread uses two real pages of memory: one at the top
36 of the stack for actual stack data, and one at the bottom for the
37 pthread_st. If we can get suitable space above the initial stack for
38 main(), we can cut this to one page per thread. Perhaps crt0 should
39 do something different (give us more space) if libpthread is linked
40 in?
41 - Figure out whether/how to expose the inline version of
42 pthread_self().
43