blob: 7661e7d121dd7b463fc2e777ca3a91c7964fb5e3 [file] [log] [blame]
Dmitry V. Levin1e08a162015-07-17 23:50:02 +00001/*
2 * Copyright (c) 1991, 1992 Paul Kranenburg <pk@cs.few.eur.nl>
3 * Copyright (c) 1993 Branko Lankester <branko@hacktic.nl>
4 * Copyright (c) 1993, 1994, 1995, 1996 Rick Sladkey <jrs@world.std.com>
5 * Copyright (c) 1996-1999 Wichert Akkerman <wichert@cistron.nl>
6 * All rights reserved.
7 *
8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions
10 * are met:
11 * 1. Redistributions of source code must retain the above copyright
12 * notice, this list of conditions and the following disclaimer.
13 * 2. Redistributions in binary form must reproduce the above copyright
14 * notice, this list of conditions and the following disclaimer in the
15 * documentation and/or other materials provided with the distribution.
16 * 3. The name of the author may not be used to endorse or promote products
17 * derived from this software without specific prior written permission.
18 *
19 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
20 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
21 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
22 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
23 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
24 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
28 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 */
30
31#include "defs.h"
32#include <sys/resource.h>
33
34void
35printrusage(struct tcb *tcp, long addr)
36{
37 struct rusage ru;
38
39 if (umove_or_printaddr(tcp, addr, &ru))
40 return;
41 if (!abbrev(tcp)) {
42 tprintf("{ru_utime={%lu, %lu}, ru_stime={%lu, %lu}, ",
43 (long) ru.ru_utime.tv_sec, (long) ru.ru_utime.tv_usec,
44 (long) ru.ru_stime.tv_sec, (long) ru.ru_stime.tv_usec);
45 tprintf("ru_maxrss=%lu, ru_ixrss=%lu, ",
46 ru.ru_maxrss, ru.ru_ixrss);
47 tprintf("ru_idrss=%lu, ru_isrss=%lu, ",
48 ru.ru_idrss, ru.ru_isrss);
49 tprintf("ru_minflt=%lu, ru_majflt=%lu, ru_nswap=%lu, ",
50 ru.ru_minflt, ru.ru_majflt, ru.ru_nswap);
51 tprintf("ru_inblock=%lu, ru_oublock=%lu, ",
52 ru.ru_inblock, ru.ru_oublock);
53 tprintf("ru_msgsnd=%lu, ru_msgrcv=%lu, ",
54 ru.ru_msgsnd, ru.ru_msgrcv);
55 tprintf("ru_nsignals=%lu, ru_nvcsw=%lu, ru_nivcsw=%lu}",
56 ru.ru_nsignals, ru.ru_nvcsw, ru.ru_nivcsw);
57 }
58 else {
59 tprintf("{ru_utime={%lu, %lu}, ru_stime={%lu, %lu}, ...}",
60 (long) ru.ru_utime.tv_sec, (long) ru.ru_utime.tv_usec,
61 (long) ru.ru_stime.tv_sec, (long) ru.ru_stime.tv_usec);
62 }
63}
64
65#ifdef ALPHA
66void
67printrusage32(struct tcb *tcp, long addr)
68{
69 struct timeval32 {
70 unsigned tv_sec;
71 unsigned tv_usec;
72 };
73 struct rusage32 {
74 struct timeval32 ru_utime; /* user time used */
75 struct timeval32 ru_stime; /* system time used */
76 long ru_maxrss; /* maximum resident set size */
77 long ru_ixrss; /* integral shared memory size */
78 long ru_idrss; /* integral unshared data size */
79 long ru_isrss; /* integral unshared stack size */
80 long ru_minflt; /* page reclaims */
81 long ru_majflt; /* page faults */
82 long ru_nswap; /* swaps */
83 long ru_inblock; /* block input operations */
84 long ru_oublock; /* block output operations */
85 long ru_msgsnd; /* messages sent */
86 long ru_msgrcv; /* messages received */
87 long ru_nsignals; /* signals received */
88 long ru_nvcsw; /* voluntary context switches */
89 long ru_nivcsw; /* involuntary " */
90 } ru;
91
92 if (umove_or_printaddr(tcp, addr, &ru))
93 return;
94 if (!abbrev(tcp)) {
95 tprintf("{ru_utime={%lu, %lu}, ru_stime={%lu, %lu}, ",
96 (long) ru.ru_utime.tv_sec, (long) ru.ru_utime.tv_usec,
97 (long) ru.ru_stime.tv_sec, (long) ru.ru_stime.tv_usec);
98 tprintf("ru_maxrss=%lu, ru_ixrss=%lu, ",
99 ru.ru_maxrss, ru.ru_ixrss);
100 tprintf("ru_idrss=%lu, ru_isrss=%lu, ",
101 ru.ru_idrss, ru.ru_isrss);
102 tprintf("ru_minflt=%lu, ru_majflt=%lu, ru_nswap=%lu, ",
103 ru.ru_minflt, ru.ru_majflt, ru.ru_nswap);
104 tprintf("ru_inblock=%lu, ru_oublock=%lu, ",
105 ru.ru_inblock, ru.ru_oublock);
106 tprintf("ru_msgsnd=%lu, ru_msgrcv=%lu, ",
107 ru.ru_msgsnd, ru.ru_msgrcv);
108 tprintf("ru_nsignals=%lu, ru_nvcsw=%lu, ru_nivcsw=%lu}",
109 ru.ru_nsignals, ru.ru_nvcsw, ru.ru_nivcsw);
110 }
111 else {
112 tprintf("{ru_utime={%lu, %lu}, ru_stime={%lu, %lu}, ...}",
113 (long) ru.ru_utime.tv_sec, (long) ru.ru_utime.tv_usec,
114 (long) ru.ru_stime.tv_sec, (long) ru.ru_stime.tv_usec);
115 }
116}
117#endif