Revision 509864600afc18f2b07321dff5ed4eb9640d0381 authored by Max Horn on 20 June 2023, 21:47:24 UTC, committed by GitHub on 20 June 2023, 21:47:24 UTC
1 parent a40cb96
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
Computing file changes ...