/* * SPDX-FileCopyrightText: 2025 Eilertsens Kodeknekkeri * SPDX-FileCopyrightText: 2025 The FreeBSD Foundation * SPDX-FileContributor: Harald Eilertsen * * SPDX-License-Identifier: BSD-2-Clause */ #ifndef __PROCSTAT_CPU_TIME_HPP #define __PROCSTAT_CPU_TIME_HPP #include /** * Helper function to get the kernel thread id from a pthread_t handle. */ long ktid_from_pthread(pthread_t thread); /** * Get the user and system runtime for a given thread by using libprocstat. * * Possibly slower than the fast_cpu_time method, as we have to iterate over the * thread info (kinfo_proc) structs for every thread in the process until we find * the correct one. * * Also the returned struct is dynamically allocated by the procstat_getprocs function, * and has to be freed by procstat_freeprocs after it's no longer needed. * * While this may be ok when retreiving the info for one struct, it would be way more * efficient to check multiple threads at once using the same returned array of structs. */ void procstat_cpu_time(pthread_t thread, struct timeval * utime, struct timeval * stime); #endif