* Licensed under GPLv2 or later, see the LICENSE file in this source tree
* for details.
*/
+//config:config PMAP
+//config: bool "pmap (6 kb)"
+//config: default y
+//config: help
+//config: Display processes' memory mappings.
-//applet:IF_PMAP(APPLET(pmap, _BB_DIR_USR_BIN, _BB_SUID_DROP))
-//kbuild:lib-$(CONFIG_PMAP) += pmap.o
+//applet:IF_PMAP(APPLET(pmap, BB_DIR_USR_BIN, BB_SUID_DROP))
-//config:config PMAP
-//config: bool "pmap"
-//config: default y
-//config: help
-//config: Display processes' memory mappings.
+//kbuild:lib-$(CONFIG_PMAP) += pmap.o
//usage:#define pmap_trivial_usage
-//usage: "[-x][-q] PID"
+//usage: "[-xq] PID..."
//usage:#define pmap_full_usage "\n\n"
-//usage: "Display detailed precesses' memory usage\n"
-//usage: "\nOptions:"
-//usage: "\n -x show details"
-//usage: "\n -q quiet"
+//usage: "Display process memory usage"
+//usage: "\n"
+//usage: "\n -x Show details"
+//usage: "\n -q Quiet"
#include "libbb.h"
static void print_smaprec(struct smaprec *currec, void *data)
{
- unsigned opt = (unsigned)data;
+ unsigned opt = (uintptr_t)data;
printf("%0" AFMT "lx ", currec->smap_start);
int ret;
char buf[256];
- read_cmdline(buf, sizeof(buf), pid, "no such process");
+ read_cmdline(buf, sizeof(buf), pid, NULL);
printf("%u: %s\n", (int)pid, buf);
if (!(opt & OPT_q) && (opt & OPT_x))
memset(&total, 0, sizeof(total));
- ret = procps_read_smaps(pid, &total, print_smaprec, (void*)opt);
+ ret = procps_read_smaps(pid, &total, print_smaprec, (void*)(uintptr_t)opt);
if (ret)
return ret;
unsigned opts;
int ret;
- opts = getopt32(argv, "xq");
+ opts = getopt32(argv, "^" "xq" "\0" "-1"); /* min one arg */
argv += optind;
ret = 0;