mirror of
https://sourceware.org/git/glibc.git
synced 2025-05-07 07:21:47 +03: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.
|
/* 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.
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
The GNU C Library is free software; you can redistribute it and/or
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
@ -32,6 +32,7 @@ __getrusage (who, usage)
|
|||||||
struct rusage *usage;
|
struct rusage *usage;
|
||||||
{
|
{
|
||||||
struct task_basic_info bi;
|
struct task_basic_info bi;
|
||||||
|
struct task_events_info ei;
|
||||||
struct task_thread_times_info tti;
|
struct task_thread_times_info tti;
|
||||||
mach_msg_type_number_t count;
|
mach_msg_type_number_t count;
|
||||||
error_t err;
|
error_t err;
|
||||||
@ -45,6 +46,14 @@ __getrusage (who, usage)
|
|||||||
if (err)
|
if (err)
|
||||||
return __hurd_fail (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;
|
count = TASK_THREAD_TIMES_INFO_COUNT;
|
||||||
err = __task_info (__mach_task_self (), TASK_THREAD_TIMES_INFO,
|
err = __task_info (__mach_task_self (), TASK_THREAD_TIMES_INFO,
|
||||||
(task_info_t) &tti, &count);
|
(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_sec = bi.system_time.seconds;
|
||||||
usage->ru_stime.tv_usec = bi.system_time.microseconds;
|
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;
|
break;
|
||||||
|
|
||||||
case RUSAGE_CHILDREN:
|
case RUSAGE_CHILDREN:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user