From f54ee3e518101209cc4a4990609e844d48e2a063 Mon Sep 17 00:00:00 2001 From: Johannes Blaschke Date: Thu, 20 Jul 2023 23:15:23 -0700 Subject: [PATCH] wip on inserting process information --- src/highlevel_api.jl | 18 ++++++++++++++---- src/lowlevel_api.jl | 28 ++++++++++++++++++---------- 2 files changed, 32 insertions(+), 14 deletions(-) diff --git a/src/highlevel_api.jl b/src/highlevel_api.jl index 8c1ed60..b947e4a 100644 --- a/src/highlevel_api.jl +++ b/src/highlevel_api.jl @@ -1,4 +1,4 @@ -using ..LibHwloc: hwloc_get_api_version +using ..LibHwloc: hwloc_get_api_version, HWLOC_OBJ_BRIDGE_HOST """ @@ -21,20 +21,30 @@ Prints the topology of the given `obj` as a tree to `io`. """ function print_topology(io::IO = stdout, obj::Object = gettopology(); indent = "", newline = false, prefix = "") t = hwloc_typeof(obj) + + # println("t=$(t) name=$(obj.name)") + idxstr = t in (:Package, :Core, :PU) ? "L#$(obj.logical_index) P#$(obj.os_index) " : "" attrstr = string(obj.attr) if t in (:L1Cache, :L2Cache, :L3Cache, :L1ICache) tstr = first(string(t), 2) attrstr = "("*_bytes2string(obj.attr.size)*")" + elseif t == :Bridge + if obj.attr.upstream_type == HWLOC_OBJ_BRIDGE_HOST + tstr = "HostBridge" + else + tstr = "PCIBridge" + end else tstr = string(t) end newline && print(io, "\n", indent) - print(io, prefix, tstr, " ", - idxstr, - attrstr, obj.mem > 0 ? "("*_bytes2string(obj.mem)*")" : "") + print( + io, prefix, tstr, " ", idxstr, attrstr, + obj.mem > 0 ? "("*_bytes2string(obj.mem)*")" : "" + ) for memchild in obj.memory_children memstr = "("*_bytes2string(memchild.mem)*")" diff --git a/src/lowlevel_api.jl b/src/lowlevel_api.jl index 6ea3c4e..654e3ce 100644 --- a/src/lowlevel_api.jl +++ b/src/lowlevel_api.jl @@ -110,15 +110,15 @@ end function show(io::IO, a::PCIDevAttr) print( io, - "PCIDev(domain=$(a.domain), " * - "bus=$(a.bus), " * - "func=$(a.func), " * - "class_id=$(hwloc_pci_class_string(a.class_id)), " * - "vendor_id=$(a.vendor_id), " * - "device_id=$(a.device_id), " * - "subvendor_id=$(a.subvendor_id), " * - "subdevice_id=$(a.subdevice_id), " * - "revision=$(a.revision), " * + "PCIDev(domain=$(a.domain), " * + "bus=$(a.bus), " * + "func=$(a.func), " * + "class_id=$(hwloc_pci_class_string(a.class_id)), " * + "vendor_id=$(a.vendor_id), " * + "device_id=$(a.device_id), " * + "subvendor_id=$(a.subvendor_id), " * + "subdevice_id=$(a.subdevice_id), " * + "revision=$(a.revision), " * "linkspeed=$(a.linkspeed))" ) end @@ -262,7 +262,6 @@ function load(hobj::hwloc_obj_t) os_index = mod(obj.os_index, Cint) name = obj.name == C_NULL ? "" : unsafe_string(obj.name) - println(name) attr = load_attr(obj.attr, type_) @@ -298,6 +297,15 @@ function load(hobj::hwloc_obj_t) end end + misc_children = Object[] + if obj.misc_arity != 0 + misc_child = obj.misc_first_child + while misc_child != C_NULL + push!(misc_children, load(misc_child)) + misc_child = unsafe_load(misc_child).next_sibling + end + end + topo = Object( type_, os_index, name, attr, mem, depth, logical_index, children, memory_children, io_children