Mercurial > hg > toybox
annotate toys/free.c @ 467:2d50fee68ca1
Minor cleanups: trim spaces from strings, use xprintf().
author | Rob Landley <rob@landley.net> |
---|---|
date | Thu, 16 Feb 2012 17:51:51 -0600 |
parents | 9f1e089262cb |
children | 77f590d2cad9 |
rev | line source |
---|---|
466
9f1e089262cb
Adding free and uptime
Elie De Brauwer <eliedebrauwer@gmail.com>
parents:
diff
changeset
|
1 /* vi: set sw=4 ts=4: |
9f1e089262cb
Adding free and uptime
Elie De Brauwer <eliedebrauwer@gmail.com>
parents:
diff
changeset
|
2 * |
9f1e089262cb
Adding free and uptime
Elie De Brauwer <eliedebrauwer@gmail.com>
parents:
diff
changeset
|
3 * free.c - Display amount of free and used memory in the system. |
9f1e089262cb
Adding free and uptime
Elie De Brauwer <eliedebrauwer@gmail.com>
parents:
diff
changeset
|
4 * |
9f1e089262cb
Adding free and uptime
Elie De Brauwer <eliedebrauwer@gmail.com>
parents:
diff
changeset
|
5 * Copyright 2012 Elie De Brauwer <eliedebrauwer@gmail.com> |
9f1e089262cb
Adding free and uptime
Elie De Brauwer <eliedebrauwer@gmail.com>
parents:
diff
changeset
|
6 * |
467
2d50fee68ca1
Minor cleanups: trim spaces from strings, use xprintf().
Rob Landley <rob@landley.net>
parents:
466
diff
changeset
|
7 * Not in SUSv4. |
466
9f1e089262cb
Adding free and uptime
Elie De Brauwer <eliedebrauwer@gmail.com>
parents:
diff
changeset
|
8 |
9f1e089262cb
Adding free and uptime
Elie De Brauwer <eliedebrauwer@gmail.com>
parents:
diff
changeset
|
9 USE_FREE(NEWTOY(free, "gmkb", TOYFLAG_USR|TOYFLAG_BIN)) |
9f1e089262cb
Adding free and uptime
Elie De Brauwer <eliedebrauwer@gmail.com>
parents:
diff
changeset
|
10 |
9f1e089262cb
Adding free and uptime
Elie De Brauwer <eliedebrauwer@gmail.com>
parents:
diff
changeset
|
11 config FREE |
9f1e089262cb
Adding free and uptime
Elie De Brauwer <eliedebrauwer@gmail.com>
parents:
diff
changeset
|
12 bool "free" |
9f1e089262cb
Adding free and uptime
Elie De Brauwer <eliedebrauwer@gmail.com>
parents:
diff
changeset
|
13 default y |
9f1e089262cb
Adding free and uptime
Elie De Brauwer <eliedebrauwer@gmail.com>
parents:
diff
changeset
|
14 help |
9f1e089262cb
Adding free and uptime
Elie De Brauwer <eliedebrauwer@gmail.com>
parents:
diff
changeset
|
15 usage: free [-bkmg] |
9f1e089262cb
Adding free and uptime
Elie De Brauwer <eliedebrauwer@gmail.com>
parents:
diff
changeset
|
16 |
9f1e089262cb
Adding free and uptime
Elie De Brauwer <eliedebrauwer@gmail.com>
parents:
diff
changeset
|
17 Display the total, free and used amount of physical memory and |
9f1e089262cb
Adding free and uptime
Elie De Brauwer <eliedebrauwer@gmail.com>
parents:
diff
changeset
|
18 swap space. |
9f1e089262cb
Adding free and uptime
Elie De Brauwer <eliedebrauwer@gmail.com>
parents:
diff
changeset
|
19 -bkmg Output in bytes (default), KB, MB or GB |
9f1e089262cb
Adding free and uptime
Elie De Brauwer <eliedebrauwer@gmail.com>
parents:
diff
changeset
|
20 */ |
9f1e089262cb
Adding free and uptime
Elie De Brauwer <eliedebrauwer@gmail.com>
parents:
diff
changeset
|
21 |
9f1e089262cb
Adding free and uptime
Elie De Brauwer <eliedebrauwer@gmail.com>
parents:
diff
changeset
|
22 #include "toys.h" |
9f1e089262cb
Adding free and uptime
Elie De Brauwer <eliedebrauwer@gmail.com>
parents:
diff
changeset
|
23 #include <sys/sysinfo.h> |
9f1e089262cb
Adding free and uptime
Elie De Brauwer <eliedebrauwer@gmail.com>
parents:
diff
changeset
|
24 |
9f1e089262cb
Adding free and uptime
Elie De Brauwer <eliedebrauwer@gmail.com>
parents:
diff
changeset
|
25 static unsigned long long convert(unsigned long d, unsigned int iscale, |
9f1e089262cb
Adding free and uptime
Elie De Brauwer <eliedebrauwer@gmail.com>
parents:
diff
changeset
|
26 unsigned int oscale) |
9f1e089262cb
Adding free and uptime
Elie De Brauwer <eliedebrauwer@gmail.com>
parents:
diff
changeset
|
27 { |
9f1e089262cb
Adding free and uptime
Elie De Brauwer <eliedebrauwer@gmail.com>
parents:
diff
changeset
|
28 return ((unsigned long long)d*iscale)>>oscale; |
9f1e089262cb
Adding free and uptime
Elie De Brauwer <eliedebrauwer@gmail.com>
parents:
diff
changeset
|
29 } |
9f1e089262cb
Adding free and uptime
Elie De Brauwer <eliedebrauwer@gmail.com>
parents:
diff
changeset
|
30 |
9f1e089262cb
Adding free and uptime
Elie De Brauwer <eliedebrauwer@gmail.com>
parents:
diff
changeset
|
31 void free_main(void) |
9f1e089262cb
Adding free and uptime
Elie De Brauwer <eliedebrauwer@gmail.com>
parents:
diff
changeset
|
32 { |
9f1e089262cb
Adding free and uptime
Elie De Brauwer <eliedebrauwer@gmail.com>
parents:
diff
changeset
|
33 struct sysinfo info; |
9f1e089262cb
Adding free and uptime
Elie De Brauwer <eliedebrauwer@gmail.com>
parents:
diff
changeset
|
34 unsigned int iscale = 1; |
9f1e089262cb
Adding free and uptime
Elie De Brauwer <eliedebrauwer@gmail.com>
parents:
diff
changeset
|
35 unsigned int oscale = 0; |
9f1e089262cb
Adding free and uptime
Elie De Brauwer <eliedebrauwer@gmail.com>
parents:
diff
changeset
|
36 |
9f1e089262cb
Adding free and uptime
Elie De Brauwer <eliedebrauwer@gmail.com>
parents:
diff
changeset
|
37 sysinfo(&info); |
9f1e089262cb
Adding free and uptime
Elie De Brauwer <eliedebrauwer@gmail.com>
parents:
diff
changeset
|
38 if (info.mem_unit) iscale = info.mem_unit; |
9f1e089262cb
Adding free and uptime
Elie De Brauwer <eliedebrauwer@gmail.com>
parents:
diff
changeset
|
39 if (toys.optflags & 1) oscale = 0; |
9f1e089262cb
Adding free and uptime
Elie De Brauwer <eliedebrauwer@gmail.com>
parents:
diff
changeset
|
40 if (toys.optflags & 2) oscale = 10; |
9f1e089262cb
Adding free and uptime
Elie De Brauwer <eliedebrauwer@gmail.com>
parents:
diff
changeset
|
41 if (toys.optflags & 4) oscale = 20; |
9f1e089262cb
Adding free and uptime
Elie De Brauwer <eliedebrauwer@gmail.com>
parents:
diff
changeset
|
42 if (toys.optflags & 8) oscale = 30; |
9f1e089262cb
Adding free and uptime
Elie De Brauwer <eliedebrauwer@gmail.com>
parents:
diff
changeset
|
43 |
467
2d50fee68ca1
Minor cleanups: trim spaces from strings, use xprintf().
Rob Landley <rob@landley.net>
parents:
466
diff
changeset
|
44 xprintf("\t\ttotal used free shared buffers\n"); |
2d50fee68ca1
Minor cleanups: trim spaces from strings, use xprintf().
Rob Landley <rob@landley.net>
parents:
466
diff
changeset
|
45 xprintf("Mem:%17llu%12llu%12llu%12llu%12llu\n", |
466
9f1e089262cb
Adding free and uptime
Elie De Brauwer <eliedebrauwer@gmail.com>
parents:
diff
changeset
|
46 convert(info.totalram, iscale, oscale), |
9f1e089262cb
Adding free and uptime
Elie De Brauwer <eliedebrauwer@gmail.com>
parents:
diff
changeset
|
47 convert(info.totalram-info.freeram, iscale, oscale), |
9f1e089262cb
Adding free and uptime
Elie De Brauwer <eliedebrauwer@gmail.com>
parents:
diff
changeset
|
48 convert(info.freeram, iscale, oscale), |
9f1e089262cb
Adding free and uptime
Elie De Brauwer <eliedebrauwer@gmail.com>
parents:
diff
changeset
|
49 convert(info.sharedram, iscale, oscale), |
9f1e089262cb
Adding free and uptime
Elie De Brauwer <eliedebrauwer@gmail.com>
parents:
diff
changeset
|
50 convert(info.bufferram, iscale, oscale)); |
9f1e089262cb
Adding free and uptime
Elie De Brauwer <eliedebrauwer@gmail.com>
parents:
diff
changeset
|
51 |
467
2d50fee68ca1
Minor cleanups: trim spaces from strings, use xprintf().
Rob Landley <rob@landley.net>
parents:
466
diff
changeset
|
52 xprintf("-/+ buffers/cache:%15llu%12llu\n", |
466
9f1e089262cb
Adding free and uptime
Elie De Brauwer <eliedebrauwer@gmail.com>
parents:
diff
changeset
|
53 convert(info.totalram - info.freeram - info.bufferram, iscale, oscale), |
9f1e089262cb
Adding free and uptime
Elie De Brauwer <eliedebrauwer@gmail.com>
parents:
diff
changeset
|
54 convert(info.freeram + info.bufferram, iscale, oscale)); |
9f1e089262cb
Adding free and uptime
Elie De Brauwer <eliedebrauwer@gmail.com>
parents:
diff
changeset
|
55 |
467
2d50fee68ca1
Minor cleanups: trim spaces from strings, use xprintf().
Rob Landley <rob@landley.net>
parents:
466
diff
changeset
|
56 xprintf("Swap:%16llu%12llu%12llu\n", |
466
9f1e089262cb
Adding free and uptime
Elie De Brauwer <eliedebrauwer@gmail.com>
parents:
diff
changeset
|
57 convert(info.totalswap, iscale, oscale), |
9f1e089262cb
Adding free and uptime
Elie De Brauwer <eliedebrauwer@gmail.com>
parents:
diff
changeset
|
58 convert(info.totalswap - info.freeswap, iscale, oscale), |
9f1e089262cb
Adding free and uptime
Elie De Brauwer <eliedebrauwer@gmail.com>
parents:
diff
changeset
|
59 convert(info.freeswap, iscale, oscale)); |
9f1e089262cb
Adding free and uptime
Elie De Brauwer <eliedebrauwer@gmail.com>
parents:
diff
changeset
|
60 } |