mirror of
https://sourceware.org/git/glibc.git
synced 2025-01-09 02:40:08 +00:00
2001-08-04 Roland McGrath <roland@frob.com>
* sysdeps/mach/hurd/getrusage.c: Use TASK_EVENTS_INFO if implemented by the microkernel (which it's not).
This commit is contained in:
parent
3d759cb8d3
commit
bde01c31c6
@ -1,5 +1,5 @@
|
||||
/* getrusage -- Get resource usage information about processes. Hurd version.
|
||||
Copyright (C) 1999 Free Software Foundation, Inc.
|
||||
Copyright (C) 1999,2001 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
|
||||
@ -32,6 +32,7 @@ __getrusage (who, usage)
|
||||
struct rusage *usage;
|
||||
{
|
||||
struct task_basic_info bi;
|
||||
struct task_events_info ei;
|
||||
struct task_thread_times_info tti;
|
||||
mach_msg_type_number_t count;
|
||||
error_t err;
|
||||
@ -45,6 +46,14 @@ __getrusage (who, usage)
|
||||
if (err)
|
||||
return __hurd_fail (err);
|
||||
|
||||
count = TASK_EVENTS_INFO_COUNT;
|
||||
err = __task_info (__mach_task_self (), TASK_EVENTS_INFO,
|
||||
(task_info_t) &ei, &count);
|
||||
if (err == KERN_INVALID_ARGUMENT) /* microkernel doesn't implement it */
|
||||
memset (&ei, 0, sizeof ei);
|
||||
else 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);
|
||||
@ -61,6 +70,11 @@ __getrusage (who, usage)
|
||||
usage->ru_stime.tv_sec = bi.system_time.seconds;
|
||||
usage->ru_stime.tv_usec = bi.system_time.microseconds;
|
||||
|
||||
/* These statistics map only approximately. */
|
||||
usage->ru_majflt = ei.pageins;
|
||||
usage->ru_minflt = ei.faults - ei.pageins;
|
||||
usage->ru_msgsnd = ei.messages_sent; /* Mach IPC, not SysV IPC */
|
||||
usage->ru_msgrcv = ei.messages_received; /* Mach IPC, not SysV IPC */
|
||||
break;
|
||||
|
||||
case RUSAGE_CHILDREN:
|
||||
|
Loading…
Reference in New Issue
Block a user