From 0de3874fe2c6c16775bbc93ba5866369eb147bc4 Mon Sep 17 00:00:00 2001 From: Elliott Hughes Date: Sat, 2 Mar 2019 10:59:53 -0800 Subject: devmem: new command. Intended to replace Android's toolbox `r`, but behaving more like a drop-in replacement for busybox's `devmem`. --- toys/pending/devmem.c | 62 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 toys/pending/devmem.c diff --git a/toys/pending/devmem.c b/toys/pending/devmem.c new file mode 100644 index 00000000..d5b7bdb4 --- /dev/null +++ b/toys/pending/devmem.c @@ -0,0 +1,62 @@ +/* devmem.c - Access physical addresses + * + * Copyright 2019 The Android Open Source Project + +USE_DEVMEM(NEWTOY(devmem, "<1>3", TOYFLAG_USR|TOYFLAG_BIN)) + +config DEVMEM + bool "devmem" + default n + help + usage: devmem ADDR [WIDTH [DATA]] + + Read/write physical address via /dev/mem. + + WIDTH is 1, 2, 4, or 8 bytes (default 4). +*/ + +#define FOR_devmem +#include "toys.h" + +void devmem_main(void) +{ + int writing = toys.optc == 3, page_size = getpagesize(), bytes = 4, fd; + unsigned long long addr = atolx(toys.optargs[0]), data = 0, map_off, map_len; + void *map, *p; + + // WIDTH? + if (toys.optc>1) { + int i; + + if (strlen(toys.optargs[1])!=1 || (i=stridx("1248", *toys.optargs[1]))==-1) + error_exit("bad width: %s", toys.optargs[1]); + bytes = 1<