Ignore:
File:
1 edited

Legend:

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

    r1f45c7d re84ab3d  
    7171        enum __Coroutine_State { Halted, Start, Primed, Blocked, Ready, Active, Cancelled, Halting };
    7272
    73         struct $coroutine {
     73        struct coroutine$ {
    7474                // context that is switch during a __cfactx_switch
    7575                struct __stack_context_t context;
     
    8585
    8686                // first coroutine to resume this one
    87                 struct $coroutine * starter;
     87                struct coroutine$ * starter;
    8888
    8989                // last coroutine to resume this one
    90                 struct $coroutine * last;
     90                struct coroutine$ * last;
    9191
    9292                // If non-null stack must be unwound with this exception
     
    9595        };
    9696        // Wrapper for gdb
    97         struct cfathread_coroutine_t { struct $coroutine debug; };
    98 
    99         static inline struct __stack_t * __get_stack( struct $coroutine * cor ) {
     97        struct cfathread_coroutine_t { struct coroutine$ debug; };
     98
     99        static inline struct __stack_t * __get_stack( struct coroutine$ * cor ) {
    100100                return (struct __stack_t*)(((uintptr_t)cor->stack.storage) & ((uintptr_t)-2));
    101101        }
     
    110110        };
    111111
    112         struct $monitor {
     112        struct monitor$ {
    113113                // spinlock to protect internal data
    114114                struct __spinlock_t lock;
    115115
    116116                // current owner of the monitor
    117                 struct $thread * owner;
     117                struct thread$ * owner;
    118118
    119119                // queue of threads that are blocked waiting for the monitor
    120                 __queue_t(struct $thread) entry_queue;
     120                __queue_t(struct thread$) entry_queue;
    121121
    122122                // stack of conditions to run next once we exit the monitor
     
    133133        };
    134134        // Wrapper for gdb
    135         struct cfathread_monitor_t { struct $monitor debug; };
     135        struct cfathread_monitor_t { struct monitor$ debug; };
    136136
    137137        struct __monitor_group_t {
    138138                // currently held monitors
    139                 __cfa_anonymous_object( __small_array_t($monitor*) );
     139                __cfa_anonymous_object( __small_array_t(monitor$*) );
    140140
    141141                // last function that acquired monitors
     
    146146        // instrusive link field for threads
    147147        struct __thread_desc_link {
    148                 struct $thread * next;
     148                struct thread$ * next;
    149149                volatile unsigned long long ts;
    150150        };
    151151
    152         struct $thread {
     152        struct thread$ {
    153153                // Core threading fields
    154154                // context that is switch during a __cfactx_switch
     
    170170                bool corctx_flag;
    171171
    172                 int last_cpu;
    173 
    174172                //SKULLDUGGERY errno is not save in the thread data structure because returnToKernel appears to be the only function to require saving and restoring it
    175173
     
    181179
    182180                // coroutine body used to store context
    183                 struct $coroutine  self_cor;
     181                struct coroutine$  self_cor;
    184182
    185183                // current active context
    186                 struct $coroutine * curr_cor;
     184                struct coroutine$ * curr_cor;
    187185
    188186                // monitor body used for mutual exclusion
    189                 struct $monitor    self_mon;
     187                struct monitor$    self_mon;
    190188
    191189                // pointer to monitor with sufficient lifetime for current monitors
    192                 struct $monitor *  self_mon_p;
     190                struct monitor$ *  self_mon_p;
    193191
    194192                // monitors currently held by this thread
     
    197195                // used to put threads on user data structures
    198196                struct {
    199                         struct $thread * next;
    200                         struct $thread * back;
     197                        struct thread$ * next;
     198                        struct thread$ * back;
    201199                } seqable;
    202200
    203201                // used to put threads on dlist data structure
    204                 __cfa_dlink($thread);
     202                __cfa_dlink(thread$);
    205203
    206204                struct {
    207                         struct $thread * next;
    208                         struct $thread * prev;
     205                        struct thread$ * next;
     206                        struct thread$ * prev;
    209207                } node;
    210208
     
    216214        };
    217215        #ifdef __cforall
    218                 P9_EMBEDDED( $thread, dlink($thread) )
     216                P9_EMBEDDED( thread$, dlink(thread$) )
    219217        #endif
    220218        // Wrapper for gdb
    221         struct cfathread_thread_t { struct $thread debug; };
     219        struct cfathread_thread_t { struct thread$ debug; };
    222220
    223221        #ifdef __CFA_DEBUG__
    224                 void __cfaabi_dbg_record_thrd($thread & this, bool park, const char prev_name[]);
     222                void __cfaabi_dbg_record_thrd(thread$ & this, bool park, const char prev_name[]);
    225223        #else
    226224                #define __cfaabi_dbg_record_thrd(x, y, z)
     
    230228        extern "Cforall" {
    231229
    232                 static inline $thread *& get_next( $thread & this ) __attribute__((const)) {
     230                static inline thread$ *& get_next( thread$ & this ) __attribute__((const)) {
    233231                        return this.link.next;
    234232                }
    235233
    236                 static inline [$thread *&, $thread *& ] __get( $thread & this ) __attribute__((const)) {
     234                static inline [thread$ *&, thread$ *& ] __get( thread$ & this ) __attribute__((const)) {
    237235                        return this.node.[next, prev];
    238236                }
    239237
    240                 static inline $thread * volatile & ?`next ( $thread * this )  __attribute__((const)) {
     238                static inline thread$ * volatile & ?`next ( thread$ * this )  __attribute__((const)) {
    241239                        return this->seqable.next;
    242240                }
    243241
    244                 static inline $thread *& Back( $thread * this ) __attribute__((const)) {
     242                static inline thread$ *& Back( thread$ * this ) __attribute__((const)) {
    245243                        return this->seqable.back;
    246244                }
    247245
    248                 static inline $thread *& Next( $thread * this ) __attribute__((const)) {
     246                static inline thread$ *& Next( thread$ * this ) __attribute__((const)) {
    249247                                return this->seqable.next;
    250248                }
    251249
    252                 static inline bool listed( $thread * this ) {
     250                static inline bool listed( thread$ * this ) {
    253251                        return this->seqable.next != 0p;
    254252                }
     
    260258                }
    261259
    262                 static inline void ?{}(__monitor_group_t & this, struct $monitor ** data, __lock_size_t size, fptr_t func) {
     260                static inline void ?{}(__monitor_group_t & this, struct monitor$ ** data, __lock_size_t size, fptr_t func) {
    263261                        (this.data){data};
    264262                        (this.size){size};
Note: See TracChangeset for help on using the changeset viewer.