• Cyrill Gorcunov's avatar
    restore: Add threads restoration · 1e7bbd35
    Cyrill Gorcunov authored
    Now threads restortion (and TLS as well) works.
    Threads test reports the following
    
        2775 (main): Counter value:    3 tls_data =    1
        2775 (main): ( 0) fsgs_base 7f9597aa46f0
        2775 (main): ( 0) fsgs_base        0
        2775 (thr3): Counter value:    4 tls_data =    4
        2775 (thr3): ( 0) fsgs_base 42c57940
        2775 (thr3): ( 0) fsgs_base        0
        2775 (thr2): Counter value:    3 tls_data =    2
        2775 (thr2): ( 0) fsgs_base 42456940
        2775 (thr2): ( 0) fsgs_base        0
        2775 (thr1): Counter value:    4 tls_data =    3
        2775 (thr1): ( 0) fsgs_base 40c62940
        2775 (thr1): ( 0) fsgs_base        0
        2775 (main): Counter value:    4 tls_data =    1
        2775 (main): ( 0) fsgs_base 7f9597aa46f0
        2775 (main): ( 0) fsgs_base        0
        2775 (thr1): Counter value:    5 tls_data =    3
        2775 (thr1): ( 0) fsgs_base 40c62940
        2775 (thr1): ( 0) fsgs_base        0
    
    as expected.
    
    This commits merges all preliminary commits into
    the final one (sigreturn branch was always experimental
    and forced update).
    
    Still some problems remain:
    
    1) While creating threads with clone() the
       flags are to be revisited. We use some predefined
       set here but it's not really correct.
    
    2) No setup of pids in PCB thread zone.
    
    3) No restore of FPU.
    
    But at least on some basic tasks restore works well.
    Signed-off-by: 's avatarCyrill Gorcunov <gorcunov@gmail.com>
    1e7bbd35
syscall.h 6.45 KB