** Copyright 2004, JΓ©rΓ΄me Duval, jerome.duval@free.fr.
** Copyright 2004, Axel DΓΆrfler, axeld@pinc-software.de.
** Distributed under the terms of the MIT License.
*/
#include <OS.h>
#include <errno.h>
#include <sys/resource.h>
#include <sys/times.h>
#include <symbol_versioning.h>
#include <errno_private.h>
#include <time_private.h>
#include <times_private.h>
static inline clock_t
times_common(struct tms* buffer, bigtime_t microSecondsPerClock)
{
team_usage_info info;
status_t err;
if ((err = get_team_usage_info(B_CURRENT_TEAM, RUSAGE_SELF, &info))
!= B_OK) {
__set_errno(err);
return -1;
}
buffer->tms_utime = info.user_time / microSecondsPerClock;
buffer->tms_stime = info.kernel_time / microSecondsPerClock;
if ((err = get_team_usage_info(B_CURRENT_TEAM, RUSAGE_CHILDREN, &info))
!= B_OK) {
__set_errno(err);
return -1;
}
buffer->tms_cutime = info.user_time / microSecondsPerClock;
buffer->tms_cstime = info.kernel_time / microSecondsPerClock;
return system_time() / microSecondsPerClock;
}
clock_t
__times_beos(struct tms* buffer)
{
return times_common(buffer, MICROSECONDS_PER_CLOCK_TICK_BEOS);
}
clock_t
__times(struct tms* buffer)
{
return times_common(buffer, MICROSECONDS_PER_CLOCK_TICK);
}
DEFINE_LIBROOT_KERNEL_SYMBOL_VERSION("__times_beos", "times@", "BASE");
DEFINE_LIBROOT_KERNEL_SYMBOL_VERSION("__times", "times@@", "1_ALPHA4");