Implementing TLS: step 1
    Igor Sysoev 
    is at rambler-co.ru
       
    Fri Jun 20 04:40:50 PDT 2003
    
    
  
If we could sacrifice our current thread compatibility in 5.0-5.1
then we could change kse_mailbox from
        struct kse_mailbox {
           int                     km_version;     /* Mailbox version */
           struct kse_thr_mailbox  *km_curthread;  /* Current thread */
           ...
to
     
        struct kse_mailbox { 
           struct kse_thr_mailbox  *km_curthread;  /* Current thread */
           int                     km_version;     /* Mailbox version */
           ...
then x86's gs would still point to kse_mailbox, and gs:[0] would be
and TP pointer.  Also we need to modify
     struct kse_thr_mailbox {
+          void              *tls;
           ucontext_t        tm_context;     /* User thread context */
           ...
And the static TLS must be allocated before kse_thr_mailbox.
Igor Sysoev
http://sysoev.ru/en/
    
    
More information about the freebsd-threads
mailing list