diff options
author | Roland McGrath <roland@gnu.org> | 1999-04-05 20:34:53 +0000 |
---|---|---|
committer | Roland McGrath <roland@gnu.org> | 1999-04-05 20:34:53 +0000 |
commit | 76bd175f4d4ed618df380f6c02434073129fd25f (patch) | |
tree | 82cf1cce6baefa88e7a2f4f55a966970fc5dafea /sysdeps/mach/hurd/getrusage.c | |
parent | b6d04893506c23e5a36deefffc67328c7382149a (diff) | |
download | glibc-76bd175f4d4ed618df380f6c02434073129fd25f.tar.gz glibc-76bd175f4d4ed618df380f6c02434073129fd25f.tar.xz glibc-76bd175f4d4ed618df380f6c02434073129fd25f.zip |
1999-03-26 Mark Kettenis <kettenis@gnu.org>
* sysdeps/mach/hurd/bits/time.h: New file. * sysdeps/mach/hurd/getrusage.c: New file. * sysdeps/mach/hurd/clk_tck.c: New file. * sysdeps/mach/hurd/Versions (libc) [GLIBC_2.1.1]: Add __libc_clk_tck. * sysdeps/mach/hurd/Makefile [$(subdir) = posix] (sysdep_routines): Add clk_tck. * sysdeps/mach/hurd/times.c: Removed, since getrusage is now implemented.
Diffstat (limited to 'sysdeps/mach/hurd/getrusage.c')
-rw-r--r-- | sysdeps/mach/hurd/getrusage.c | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/sysdeps/mach/hurd/getrusage.c b/sysdeps/mach/hurd/getrusage.c new file mode 100644 index 0000000000..3ead1d7f14 --- /dev/null +++ b/sysdeps/mach/hurd/getrusage.c @@ -0,0 +1,80 @@ +/* getrusage -- Get resource usage information about processes. Hurd version. + Copyright (C) 1999 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <errno.h> +#include <string.h> +#include <sys/resource.h> +#include <mach.h> +#include <mach/task_info.h> +#include <hurd.h> + +/* Return resource usage information on process indicated by WHO + and put it in *USAGE. Returns 0 for success, -1 for failure. */ +int +__getrusage (who, usage) + enum __rusage_who who; + struct rusage *usage; +{ + struct task_basic_info bi; + struct task_thread_times_info tti; + mach_msg_type_number_t count; + error_t err; + + switch (who) + { + case RUSAGE_SELF: + count = TASK_BASIC_INFO_COUNT; + err = __task_info (__mach_task_self (), TASK_BASIC_INFO, + (task_info_t) &bi, &count); + if (err) + return __hurd_fail (err); + + count = TASK_THREAD_TIMES_INFO_COUNT; + err = __task_info (__mach_task_self (), TASK_THREAD_TIMES_INFO, + (task_info_t) &tti, &count); + if (err) + return __hurd_fail (err); + + time_value_add (&bi.user_time, &tti.user_time); + time_value_add (&bi.system_time, &tti.system_time); + + memset (usage, 0, sizeof (struct rusage)); + + usage->ru_utime.tv_sec = bi.user_time.seconds; + usage->ru_utime.tv_usec = bi.user_time.microseconds; + usage->ru_stime.tv_sec = bi.system_time.seconds; + usage->ru_stime.tv_usec = bi.system_time.microseconds; + + break; + + case RUSAGE_CHILDREN: + /* XXX Not implemented yet. However, zero out USAGE to be + consistent with the wait3 and wait4 functions. */ + memset (usage, 0, sizeof (struct rusage)); + + break; + + default: + return EINVAL; + } + + return 0; +} + +weak_alias (__getrusage, getrusage) |