https://github.com/JuliaLang/julia
Raw File
Tip revision: b487ae69279fcfa077f1f9927dd01f0c1f42ed33 authored by Elliot Saba on 07 November 2022, 17:36:05 UTC
Change timeout kill signals to SIGQUIT from SIGTERM
Tip revision: b487ae6
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
back to top