Revision db393d03244c103cffead1297323ff079d3844ee authored by Valentin Churavy on 28 June 2023, 07:30:52 UTC, committed by Valentin Churavy on 28 June 2023, 08:20:32 UTC
1 parent 6f73354
print_process_affinity.jl
# This file is a part of Julia. License is MIT: https://julialang.org/license
const uv_thread_t = UInt # TODO: this is usually correct (or tolerated by the API), but not guaranteed
function uv_thread_getaffinity()
masksize = ccall(:uv_cpumask_size, Cint, ())
self = ccall(:uv_thread_self, uv_thread_t, ())
ref = Ref(self)
cpumask = zeros(Bool, masksize)
err = ccall(
:uv_thread_getaffinity,
Cint,
(Ref{uv_thread_t}, Ptr{Bool}, Cssize_t),
ref,
cpumask,
masksize,
)
Base.uv_error("getaffinity", err)
n = something(findlast(cpumask)) # we must have at least one active core
resize!(cpumask, n)
return cpumask
end
function print_process_affinity()
join(stdout, findall(uv_thread_getaffinity()), ",")
println()
end
if Base.Filesystem.samefile(PROGRAM_FILE, @__FILE__)
print_process_affinity()
end
![swh spinner](/static/img/swh-spinner.gif)
Computing file changes ...