Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/libcfa/concurrency/invoke.h

    r4c1b48f3 rde94a60  
    1818#include "bits/locks.h"
    1919
    20 #define TL_GET( member ) kernelThreadData.member
    21 #define TL_SET( member, value ) kernelThreadData.member = value;
     20#define TL_GET( member ) kernelTLS.member
     21#define TL_SET( member, value ) kernelTLS.member = value;
    2222
    2323#ifdef __cforall
     
    4444                                volatile bool in_progress;
    4545                        } preemption_state;
    46                 } kernelThreadData;
     46                } kernelTLS;
    4747        }
    4848
    4949        static inline struct coroutine_desc * volatile active_coroutine() { return TL_GET( this_coroutine ); }
    50         static inline struct thread_desc * volatile active_thread() { return TL_GET( this_thread ); }
    51         static inline struct processor * volatile active_processor() { return TL_GET( this_processor ); }
     50        static inline struct thread_desc    * volatile active_thread   () { return TL_GET( this_thread    ); }
     51        static inline struct processor      * volatile active_processor() { return TL_GET( this_processor ); } // UNSAFE
    5252        #endif
    5353
     
    126126                struct monitor_desc *  self_mon_p;
    127127
     128                // pointer to the cluster on which the thread is running
     129                struct cluster * curr_cluster;
     130
    128131                // monitors currently held by this thread
    129132                struct __monitor_group_t monitors;
     
    133136                struct thread_desc * next;
    134137
    135                 __cfaabi_dbg_debug_do(
    136                         // instrusive link field for debugging
    137                         struct thread_desc * dbg_next;
    138                         struct thread_desc * dbg_prev;
    139                 )
     138                struct {
     139                        struct thread_desc * next;
     140                        struct thread_desc * prev;
     141                } node;
    140142     };
    141143
     
    144146                static inline thread_desc * & get_next( thread_desc & this ) {
    145147                        return this.next;
     148                }
     149
     150                static inline [thread_desc *&, thread_desc *& ] __get( thread_desc & this ) {
     151                        return this.node.[next, prev];
    146152                }
    147153
Note: See TracChangeset for help on using the changeset viewer.