Home | History | Annotate | Line # | Download | only in libpthread
TODO revision 1.1.2.10
      1 Bugs to fix:
      2 
      3 - pthread_cond_timedwait() doesn't work if SA's aren't running yet,
      4   because the alarm system isn't up and running. It would be weird to
      5   use them that way, but it's perfectly legal.
      6 - There is a race between pthread_cancel() and
      7   pthread_cond_broadcast() or pthread_exit() about removing an item
      8   from the sleep queue. The locking protocols there need a little
      9   adjustment.
     10 
     11 
     12 Interfaces/features to implement:
     13 - pthread_kill()
     14 - pthread_atfork()
     15 - priority scheduling
     16 - libc integration: 
     17    - foo_r interfaces
     18 - system integration
     19    - some macros and prototypes belong in headers other than pthread.h
     20 
     21 
     22 Features that need more/better regression tests:
     23  - pthread_cond_broadcast()
     24  - pthread_once()
     25  - pthread_get/setspecific()
     26  - signals
     27 
     28 
     29 Things that need fixing:
     30 - Recycle dead threads for new threads.
     31 
     32 Ideas to play with:
     33 - Explore the trapcontext vs. usercontext distinction in ucontext_t.
     34 - Get rid of thread structures when too many accumulate (is this
     35   actually a good idea?)
     36 - Adaptive spin/sleep locks for mutexes.
     37 - Supporting different mutex types would be nice (normal, debugging,
     38   recursive, etc).
     39 - Currently, each thread uses two real pages of memory: one at the top
     40   of the stack for actual stack data, and one at the bottom for the
     41   pthread_st. If we can get suitable space above the initial stack for
     42   main(), we can cut this to one page per thread. Perhaps crt0 should
     43   do something different (give us more space) if libpthread is linked
     44   in?
     45 - Figure out whether/how to expose the inline version of
     46   pthread_self().
     47