Ignore:
File:
1 edited

Legend:

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

    rcd5b58f r15c93d8  
    195195                struct __monitor_group_t monitors;
    196196
    197                 // intrusive link fields, used for locks, monitors and any user defined data structure
    198                 // default link fields for dlist
     197                // used to put threads on dlist data structure
    199198                __cfa_dlink1(thread$) user_link;
    200199
    201                 // secondary intrusive link fields, used for global cluster list
    202                 // default link fields for dlist
    203                 __cfa_dlink2(thread$, cltr_link);
     200                struct {
     201                        struct thread$ * next;
     202                        struct thread$ * prev;
     203                } node;
    204204
    205205                // used to store state between clh lock/unlock
     
    230230        #ifdef __cforall
    231231        extern "Cforall" {
    232                 static inline thread$ * volatile & ?`next ( thread$ * this ) {
    233                         return this->user_link.next;
    234                 }
    235232
    236233                static inline thread$ *& get_next( thread$ & this ) __attribute__((const)) {
    237234                        return this.user_link.next;
     235                }
     236
     237                static inline [thread$ *&, thread$ *& ] __get( thread$ & this ) __attribute__((const)) {
     238                        return this.node.[next, prev];
    238239                }
    239240
     
    243244                        return result;
    244245                }
    245 
    246                 P9_EMBEDDED(thread$, thread$.cltr_link)
    247                 P9_EMBEDDED(thread$.cltr_link, dlink(thread$))
    248246
    249247                static inline void ?{}(__monitor_group_t & this) {
Note: See TracChangeset for help on using the changeset viewer.