summaryrefslogtreecommitdiff
path: root/main.cpp
diff options
context:
space:
mode:
authorTuowen Zhao <ztuowen@gmail.com>2019-12-04 12:56:58 -0700
committerTuowen Zhao <ztuowen@gmail.com>2019-12-04 12:56:58 -0700
commit79ba7c05e35b18aa2dc24da57399cfbb94a07d0e (patch)
tree189d68f87fe771c5c07fb64754a89c80bd82be3d /main.cpp
downloadatsmmap-79ba7c05e35b18aa2dc24da57399cfbb94a07d0e.tar.gz
atsmmap-79ba7c05e35b18aa2dc24da57399cfbb94a07d0e.tar.bz2
atsmmap-79ba7c05e35b18aa2dc24da57399cfbb94a07d0e.zip
initial commit
Diffstat (limited to 'main.cpp')
-rw-r--r--main.cpp28
1 files changed, 28 insertions, 0 deletions
diff --git a/main.cpp b/main.cpp
new file mode 100644
index 0000000..43aba7f
--- /dev/null
+++ b/main.cpp
@@ -0,0 +1,28 @@
+#include <iostream>
+#include <unistd.h>
+#include <sys/mman.h>
+#include <string>
+
+#define GIG (1024*1024*1024ul)
+#define VOLUME (2ul*GIG)
+
+// Real values is in the ~65536, only use half of it to be safe
+// sysctl vm.max_map_count
+#define MAXMMAPS 32768
+
+int main(int argc, char **argv) {
+ auto page_size = sysconf(_SC_PAGESIZE);
+ std::cout << "The system have a page size of " << page_size << std::endl;
+ auto dst = (long*)malloc(VOLUME);
+ // Src is using anonymous mapping
+ long nmaps = std::stoi(argv[1]);
+ if (GIG % (page_size * nmaps) != 0) {
+ std::cout << "nmaps is not perfect multiple" << std::endl;
+ nmaps = GIG / (page_size * nmaps);
+ }
+ std::cout << argv[1] << std::endl;
+ uint8_t *hint = (uint8_t*)0x600000000000UL;
+ mmap(hint);
+ auto src =
+ return 0;
+}