aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHuang Ying <ying.huang@intel.com>2018-05-11 15:58:51 +0800
committerFengguang Wu <fengguang.wu@intel.com>2018-05-11 16:20:17 +0800
commited7b37de564ae7c1cb0e456b7a7a023821e27c16 (patch)
treee95dcd291f3d4c8a3d7b357f5a89c7e2051e6072
parent7a6ce56cf1b4ffe983eef57ea07b150c817b9d18 (diff)
downloadvm-scalability-ed7b37de564ae7c1cb0e456b7a7a023821e27c16.tar.gz
usemem: Support MAP_ANONYMOUS flags
To support MAP_HUGETLB. Signed-off-by: Huang Ying <ying.huang@intel.com> Signed-off-by: Fengguang Wu <fengguang.wu@intel.com>
-rw-r--r--usemem.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/usemem.c b/usemem.c
index ed9212e..f7ecc43 100644
--- a/usemem.c
+++ b/usemem.c
@@ -96,6 +96,7 @@ char *filename = "/dev/zero";
char *pid_filename;
int map_shared = MAP_PRIVATE;
int map_populate;
+int map_anonymous;
int fd;
int start_ready_fds[2];
int start_wake_fds[2];
@@ -138,6 +139,7 @@ void usage(int ok)
" -y|--sync-rw sync between tasks after allocate memory\n"
" -x|--sync-free sync between tasks before free memory\n"
" -e|--delay delay for each page in ns\n"
+ " -O|--anonymous mmap with MAP_ANONYMOUS\n"
" -h|--help show this message\n"
, ourname);
@@ -378,7 +380,8 @@ unsigned long * allocate(unsigned long bytes)
} else {
p = mmap(NULL, bytes, (opt_readonly && !opt_openrw) ?
PROT_READ : PROT_READ|PROT_WRITE,
- map_shared|map_populate, fd, 0);
+ map_shared|map_populate|map_anonymous,
+ map_anonymous ? -1 : fd, 0);
if (p == MAP_FAILED) {
fprintf(stderr, "%s: mmap failed: %s\n",
ourname, strerror(errno));
@@ -913,7 +916,7 @@ int main(int argc, char *argv[])
pagesize = getpagesize();
while ((c = getopt_long(argc, argv,
- "aAf:FPp:gqowRMm:n:t:b:ds:T:Sr:u:j:e:EHDNLWyxh", opts, NULL)) != -1)
+ "aAf:FPp:gqowRMm:n:t:b:ds:T:Sr:u:j:e:EHDNLWyxOh", opts, NULL)) != -1)
{
switch (c) {
case 'a':
@@ -1026,6 +1029,10 @@ int main(int argc, char *argv[])
opt_delay = time_parse(optarg);
break;
+ case 'O':
+ map_anonymous = MAP_ANONYMOUS;
+ break;
+
default:
usage(1);
}