1/* 2** Copyright 2004, J��r��me Duval, jerome.duval@free.fr. 3** Copyright 2004, Axel D��rfler, axeld@pinc-software.de. 4** Distributed under the terms of the MIT License. 5*/ 6 7#include <OS.h> 8 9#include <errno.h> 10#include <sys/resource.h> 11#include <sys/times.h> 12 13#include <symbol_versioning.h> 14 15#include <errno_private.h> 16#include <time_private.h> 17#include <times_private.h> 18 19 20static inline clock_t 21times_common(struct tms* buffer, bigtime_t microSecondsPerClock) 22{ 23 team_usage_info info; 24 status_t err; 25 26 if ((err = get_team_usage_info(B_CURRENT_TEAM, RUSAGE_SELF, &info)) 27 != B_OK) { 28 __set_errno(err); 29 return -1; 30 } 31 32 buffer->tms_utime = info.user_time / microSecondsPerClock; 33 buffer->tms_stime = info.kernel_time / microSecondsPerClock; 34 35 if ((err = get_team_usage_info(B_CURRENT_TEAM, RUSAGE_CHILDREN, &info)) 36 != B_OK) { 37 __set_errno(err); 38 return -1; 39 } 40 41 buffer->tms_cutime = info.user_time / microSecondsPerClock; 42 buffer->tms_cstime = info.kernel_time / microSecondsPerClock; 43 44 return system_time() / microSecondsPerClock; 45} 46 47 48clock_t 49__times_beos(struct tms* buffer) 50{ 51 return times_common(buffer, MICROSECONDS_PER_CLOCK_TICK_BEOS); 52} 53 54 55clock_t 56__times(struct tms* buffer) 57{ 58 return times_common(buffer, MICROSECONDS_PER_CLOCK_TICK); 59} 60 61 62DEFINE_LIBROOT_KERNEL_SYMBOL_VERSION("__times_beos", "times@", "BASE"); 63 64DEFINE_LIBROOT_KERNEL_SYMBOL_VERSION("__times", "times@@", "1_ALPHA4"); 65