Changeset 160f1aa


Ignore:
Timestamp:
Sep 23, 2022, 3:41:22 PM (2 months ago)
Author:
Thierry Delisle <tdelisle@…>
Branches:
master
Children:
996c8ed
Parents:
43db35e
Message:

Changed links of processors in cluster to avoid anonymous names, which are too brittle for gdb to follow

Files:
2 edited

Legend:

Unmodified
Added
Removed
  • libcfa/src/concurrency/kernel.hfa

    r43db35e r160f1aa  
    136136
    137137        // Link lists fields
    138         inline dlink(processor);
     138        dlink(processor) link;
    139139
    140140        // special init fields
     
    158158#endif
    159159};
    160 P9_EMBEDDED( processor, dlink(processor) )
     160// P9_EMBEDDED( processor, dlink(processor) )
     161static inline tytagref( dlink(processor), dlink(processor) ) ?`inner( processor & this ) {
     162    dlink(processor) & b = this.link;
     163    tytagref( dlink(processor), dlink(processor) ) result = { b };
     164    return result;
     165}
    161166
    162167void  ?{}(processor & this, const char name[], struct cluster & cltr);
  • tools/gdb/utils-gdb.py

    r43db35e r160f1aa  
    159159
    160160                # if we already saw the root, then go forward
    161                 my_next = self.curr['__anonymous_object2225']['_X4nextPY13__tE_generic__1']
     161                my_next = self.curr['_X4link']['_X4nextPY13__tE_generic__1']
    162162                self.curr = my_next.cast(cfa_t.processor_ptr)
    163163
     
    168168                return self.curr
    169169
     170def start_from_dlist(dlist):
     171        fs = dlist.type.fields()
     172        if len(fs) != 1:
     173                print("Error, can't understand dlist type for", dlist, dlist.name, dlist.type)
     174                return None
     175
     176        return dlist[fs[0]]
     177
    170178def proc_list(cluster):
    171179        """
     
    174182        cfa_t = get_cfa_types()
    175183        proclist = cluster['_X5procsS19__cluster_proc_list_1']
    176         idle = proclist['_X5idlesS5dlist_S9processorS5dlink_S9processor___1']['__anonymous_object2167']['_X4nextPY13__tE_generic__1']
    177         active = proclist['_X7activesS5dlist_S9processorS5dlink_S9processor___1']['__anonymous_object2167']['_X4nextPY13__tE_generic__1']
     184
     185        idle = start_from_dlist(proclist['_X5idlesS5dlist_S9processorS5dlink_S9processor___1'])
     186        active = start_from_dlist(proclist['_X7activesS5dlist_S9processorS5dlink_S9processor___1'])
    178187        return ProcIter(active.cast(cfa_t.processor_ptr)), ProcIter(idle.cast(cfa_t.processor_ptr))
    179188
Note: See TracChangeset for help on using the changeset viewer.