Le 21/06/2013 17:59, Jiri Hladky a écrit : > Hi Brice, > > this would be useful feature for me and I believe also for others! > Currently
The attached patch puts Misc object in Orange. See how I modified lstopo.c, you'll see what you have to do. I can easily add the same check to other types. > > hwloc_topology_insert_misc_object_by_cpuset > > is quite dump. BTW, would it be possible to display the Misc objects > in the order they were added? Inspecting XML file > => hwloc_topology_insert_misc_object_by_cpuset will sort the objects They are sorted by name from I see in the code, I don't remember why. Quick guess would be that we need a deterministic order, and sorting by name is one choice. Anyway you should change your Misc object names by adding 0 characters as prefix, it should work. > =>hwloc_topology_insert_misc_object_by_parent does NOT sort the object > but XML is not parsable by lstopo I need to dig into that. Brice
diff --git a/utils/lstopo-draw.c b/utils/lstopo-draw.c index cc582c5..e1a6cb0 100644 --- a/utils/lstopo-draw.c +++ b/utils/lstopo-draw.c @@ -826,6 +826,8 @@ misc_draw(hwloc_topology_t topology, struct draw_methods *methods, int logical, unsigned mywidth = 0, totwidth; unsigned textwidth = level->name ? strlen(level->name) * fontsize : 6*fontsize; int vert = prefer_vert(topology, logical, level, output, depth, x, y, gridsize); + unsigned rcolor, gcolor, bcolor; + const char *color; DYNA_CHECK(); @@ -834,7 +836,13 @@ misc_draw(hwloc_topology_t topology, struct draw_methods *methods, int logical, else RECURSE_HORIZ(level, &null_draw_methods, gridsize, 0); - methods->box(output, MISC_R_COLOR, MISC_G_COLOR, MISC_B_COLOR, depth, x, totwidth, y, boxheight); + rcolor = MISC_R_COLOR; + gcolor = MISC_G_COLOR; + bcolor = MISC_B_COLOR; + color = hwloc_obj_get_info_by_name(level, "lstopoColor"); + if (color) + sscanf(color, "%x:%x:%x", &rcolor, &gcolor, &bcolor); + methods->box(output, rcolor, gcolor, bcolor, depth, x, totwidth, y, totheight); if (fontsize) { if (level->name) { diff --git a/utils/lstopo.c b/utils/lstopo.c index 7c2d6d6..727ec17 100644 --- a/utils/lstopo.c +++ b/utils/lstopo.c @@ -73,6 +73,7 @@ static hwloc_obj_t insert_task(hwloc_topology_t topology, hwloc_cpuset_t cpuset, /* try to insert at exact position */ obj = hwloc_topology_insert_misc_object_by_cpuset(topology, cpuset, name); + hwloc_obj_add_info(obj, "lstopoColor", "ff:88:00"); if (!obj) { /* try to insert in a larger parent */ char *s;