1 /*
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-1996 Rick Sladkey <jrs@world.std.com>
5 * Copyright (c) 1996-1999 Wichert Akkerman <wichert@cistron.nl>
6 * Copyright (c) 2012 H.J. Lu <hongjiu.lu@intel.com>
7 * Copyright (c) 2012 Denys Vlasenko <vda.linux@googlemail.com>
8 * Copyright (c) 2014-2015 Dmitry V. Levin <ldv@strace.io>
9 * Copyright (c) 2015 Elvira Khabirova <lineprinter0@gmail.com>
10 * Copyright (c) 2014-2021 The strace developers.
11 * All rights reserved.
12 *
13 * SPDX-License-Identifier: LGPL-2.1-or-later
14 */
15
16 #include "defs.h"
17 #include DEF_MPERS_TYPE(sysinfo_t)
18 #include <sys/sysinfo.h>
19 typedef struct sysinfo sysinfo_t;
20 #include MPERS_DEFS
21
22 SYS_FUNC(sysinfo)
23 {
24 sysinfo_t si;
25
26 if (entering(tcp))
27 return 0;
28
29 if (!umove_or_printaddr(tcp, tcp->u_arg[0], &si)) {
30 tprint_struct_begin();
31 PRINT_FIELD_U(si, uptime);
32 tprint_struct_next();
33 PRINT_FIELD_ARRAY(si, loads, tcp,
34 print_uint_array_member);
35 tprint_struct_next();
36 PRINT_FIELD_U(si, totalram);
37 tprint_struct_next();
38 PRINT_FIELD_U(si, freeram);
39 tprint_struct_next();
40 PRINT_FIELD_U(si, sharedram);
41 tprint_struct_next();
42 PRINT_FIELD_U(si, bufferram);
43 tprint_struct_next();
44 PRINT_FIELD_U(si, totalswap);
45 tprint_struct_next();
46 PRINT_FIELD_U(si, freeswap);
47 tprint_struct_next();
48 PRINT_FIELD_U(si, procs);
49 tprint_struct_next();
50 PRINT_FIELD_U(si, totalhigh);
51 tprint_struct_next();
52 PRINT_FIELD_U(si, freehigh);
53 tprint_struct_next();
54 PRINT_FIELD_U(si, mem_unit);
55 tprint_struct_end();
56 }
57
58 return 0;
59 }