cvs commit: src/lib/libthread_xu Makefile pthread.map src/lib/libthread_xu/arch Makefile.inc src/lib/libthread_xu/arch/alpha Makefile.inc src/lib/libthread_xu/arch/alpha/alpha pthread_md.c src/lib/libthread_xu/arch/alpha/include pthread_md.h src/lib/libthread_xu/arch/amd64 ...

davidxu davidxu at freebsd.org
Tue Feb 1 05:03:31 PST 2005


There are still some serious problems, most because missing kernel
features to support 1:1 threading, problems:
1. Each thread has its pid, and getpid returns different value
   for every thread.
2. Signal is broken. there is no feature to send signal to a process
   as a whole, it does not conform with POSIX. SIGSTOP and SIGCONT
   does not work correctly.
3. A crashed thread should bring down whole process, but it is not.
4. A thread calls exit() should remove other threads in same process,
   but it is not, there should a syscall to exit a single thread
   or a whole process.
5. A thread calls pthread_exit(), but userland does not if the thread
   memory can be reused because there is no flag indicated by kernel
   that the thread is exited, see FreeBSD's kse_exit() or thr_exit().
6. There is no kernel interface to manage TLS descriptor, either use
   GDT or LDT, but there is no allocation code in kernel which can
   resolve confliction among libraries using LDT at same time.
7. No __thread keyword style's tls support in rtld.
David Xu wrote:
davidxu     2005/02/01 04:38:27 PST

DragonFly src repository

  Added files:
    lib/libthread_xu     Makefile pthread.map 
    lib/libthread_xu/arch Makefile.inc 
    lib/libthread_xu/arch/alpha Makefile.inc 
    lib/libthread_xu/arch/alpha/alpha pthread_md.c 
    lib/libthread_xu/arch/alpha/include pthread_md.h 
    lib/libthread_xu/arch/amd64 Makefile.inc 
    lib/libthread_xu/arch/amd64/amd64 pthread_md.c 
    lib/libthread_xu/arch/amd64/include pthread_md.h 
    lib/libthread_xu/arch/i386 Makefile.inc 
    lib/libthread_xu/arch/i386/i386 pthread_md.c 
    lib/libthread_xu/arch/i386/include pthread_md.h 
    lib/libthread_xu/sys Makefile.inc thr_error.c 
    lib/libthread_xu/thread Makefile.inc thr_attr.c thr_barrier.c 
                            thr_barrierattr.c thr_cancel.c 
                            thr_clean.c thr_concurrency.c 
                            thr_cond.c thr_condattr.c thr_create.c 
                            thr_detach.c thr_equal.c thr_exit.c 
                            thr_fork.c thr_getprio.c 
                            thr_getschedparam.c thr_info.c 
                            thr_init.c thr_join.c thr_kern.c 
                            thr_kill.c thr_list.c thr_main_np.c 
                            thr_multi_np.c thr_mutex.c 
                            thr_mutex_prioceiling.c 
                            thr_mutex_protocol.c thr_mutexattr.c 
                            thr_once.c thr_printf.c thr_private.h 
                            thr_pspinlock.c thr_resume_np.c 
                            thr_rtld.c thr_rwlock.c 
                            thr_rwlockattr.c thr_self.c thr_sem.c 
                            thr_seterrno.c thr_setprio.c 
                            thr_setschedparam.c thr_sig.c 
                            thr_single_np.c thr_spec.c 
                            thr_spinlock.c thr_stack.c 
                            thr_suspend_np.c thr_switch_np.c 
                            thr_symbols.c thr_syscalls.c 
                            thr_umtx.c thr_umtx.h thr_yield.c 
  Log:
  Import initial version of 1:1 pthread library.






More information about the Commits mailing list