rusage: Refactor test programs
Change-Id: I846a6416acf903f7fa19db98d4d937c51c10b4af
This commit is contained in:
44
test/rusage/000_mck.c
Normal file
44
test/rusage/000_mck.c
Normal file
@@ -0,0 +1,44 @@
|
||||
#include <unistd.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <sys/mman.h>
|
||||
#include <string.h>
|
||||
#include "util.h"
|
||||
|
||||
#define DEBUG
|
||||
|
||||
int sz_anon[] = {
|
||||
4 * (1ULL<<10),
|
||||
2 * (1ULL<<20),
|
||||
1 * (1ULL<<30),
|
||||
134217728};
|
||||
|
||||
#define SZ_INDEX 0
|
||||
#define NUM_AREAS 1
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
int i;
|
||||
int sz_index;
|
||||
void *anon[NUM_AREAS];
|
||||
int ret = 0;
|
||||
|
||||
CHKANDJUMP(argc != 2, 255, "%s <sz_index>\n", argv[0]);
|
||||
sz_index = atoi(argv[1]);
|
||||
|
||||
for (i = 0; i < NUM_AREAS; i++) {
|
||||
anon[i] = mmap(0, sz_anon[sz_index], PROT_READ | PROT_WRITE,
|
||||
MAP_ANONYMOUS | MAP_PRIVATE, -1, 0);
|
||||
CHKANDJUMP(anon[i] == MAP_FAILED, 255, "mmap failed\n");
|
||||
*((unsigned long *)anon[i]) = 0x123456789abcdef0;
|
||||
}
|
||||
|
||||
for (i = 0; i < NUM_AREAS; i++) {
|
||||
munmap(anon[i], sz_anon[sz_index]);
|
||||
}
|
||||
|
||||
fn_exit:
|
||||
return ret;
|
||||
fn_fail:
|
||||
goto fn_exit;
|
||||
}
|
||||
50
test/rusage/001_mck.c
Normal file
50
test/rusage/001_mck.c
Normal file
@@ -0,0 +1,50 @@
|
||||
#include <unistd.h>
|
||||
#include <stdio.h>
|
||||
#include <sys/mman.h>
|
||||
#include <string.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <fcntl.h>
|
||||
#include "util.h"
|
||||
|
||||
#define DEBUG
|
||||
|
||||
int sz_mem[] = {
|
||||
4 * (1ULL<<10),
|
||||
2 * (1ULL<<20),
|
||||
1 * (1ULL<<30),
|
||||
134217728};
|
||||
|
||||
#define SZ_INDEX 0
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
void *mem;
|
||||
int ret = 0;
|
||||
int fd;
|
||||
unsigned long val;
|
||||
|
||||
fd = open("./file", O_RDWR);
|
||||
CHKANDJUMP(fd == -1, 255, "open failed\n");
|
||||
|
||||
mem = mmap(0, sz_mem[SZ_INDEX], PROT_READ | PROT_WRITE, MAP_SHARED,
|
||||
fd, 0);
|
||||
CHKANDJUMP(mem == MAP_FAILED, 255, "mmap failed\n");
|
||||
|
||||
val = *((unsigned long *)mem);
|
||||
printf("val=%lx\n", val);
|
||||
// memset(mem, 0, sz_mem[SZ_INDEX]);
|
||||
|
||||
*((unsigned long *)mem) = 0x123456789abcdef0;
|
||||
// ret = msync(mem, sz_mem[SZ_INDEX], MS_SYNC);
|
||||
// *((unsigned long *)mem) = 0x123456789abcdef0;
|
||||
|
||||
munmap(mem, sz_mem[SZ_INDEX]);
|
||||
// ret = close(fd);
|
||||
// CHKANDJUMP(ret != 0, 255, "close failed\n");
|
||||
|
||||
fn_exit:
|
||||
return ret;
|
||||
fn_fail:
|
||||
goto fn_exit;
|
||||
}
|
||||
55
test/rusage/002_mck.c
Normal file
55
test/rusage/002_mck.c
Normal file
@@ -0,0 +1,55 @@
|
||||
#include <unistd.h>
|
||||
#include <stdio.h>
|
||||
#include <sys/mman.h>
|
||||
#include <string.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <fcntl.h>
|
||||
#include <errno.h>
|
||||
#include "util.h"
|
||||
|
||||
#define DEBUG
|
||||
|
||||
int sz_mem[] = {
|
||||
4 * (1ULL<<10),
|
||||
2 * (1ULL<<20),
|
||||
1 * (1ULL<<30),
|
||||
134217728};
|
||||
|
||||
#define SZ_INDEX 0
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
void *mem;
|
||||
int ret = 0;
|
||||
int fd;
|
||||
char fn[256] = "/dev/shm/Intel_MPI";
|
||||
|
||||
fd = open(fn, O_CREAT | O_TRUNC | O_RDWR, 0600);
|
||||
CHKANDJUMP(fd == -1, 255, "shm_open failed,str=%s\n", strerror(errno));
|
||||
|
||||
ret = ftruncate(fd, sz_mem[SZ_INDEX]);
|
||||
CHKANDJUMP(ret != 0, 255, "ftruncate failed\n");
|
||||
|
||||
mem = mmap(0, sz_mem[SZ_INDEX], PROT_READ | PROT_WRITE, MAP_SHARED,
|
||||
fd, 0);
|
||||
CHKANDJUMP(mem == MAP_FAILED, 255, "mmap failed\n");
|
||||
|
||||
//unsigned long val = *((unsigned long *)mem);
|
||||
//memset(mem, 0, sz_mem[SZ_INDEX]);
|
||||
|
||||
*((unsigned long *)mem) = 0x123456789abcdef0;
|
||||
// ret = msync(mem, sz_mem[SZ_INDEX], MS_SYNC);
|
||||
// *((unsigned long *)mem) = 0x123456789abcdef0;
|
||||
|
||||
munmap(mem, sz_mem[SZ_INDEX]);
|
||||
ret = close(fd);
|
||||
CHKANDJUMP(ret != 0, 255, "close failed\n");
|
||||
ret = unlink(fn);
|
||||
CHKANDJUMP(ret != 0, 255, "shm_unlink failed\n");
|
||||
|
||||
fn_exit:
|
||||
return ret;
|
||||
fn_fail:
|
||||
goto fn_exit;
|
||||
}
|
||||
55
test/rusage/003_mck.c
Normal file
55
test/rusage/003_mck.c
Normal file
@@ -0,0 +1,55 @@
|
||||
#include <unistd.h>
|
||||
#include <stdio.h>
|
||||
#include <sys/mman.h>
|
||||
#include <string.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <fcntl.h>
|
||||
#include <errno.h>
|
||||
#include "util.h"
|
||||
|
||||
#define DEBUG
|
||||
|
||||
int sz_mem[] = {
|
||||
4 * (1ULL<<10),
|
||||
2 * (1ULL<<20),
|
||||
1 * (1ULL<<30),
|
||||
134217728};
|
||||
|
||||
#define SZ_INDEX 0
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
void *mem;
|
||||
int ret = 0;
|
||||
int fd;
|
||||
char fn[256] = "/dev/shm/Intel_MPI";
|
||||
|
||||
fd = open(fn, O_CREAT | O_TRUNC | O_RDWR, 0600);
|
||||
CHKANDJUMP(fd == -1, 255, "shm_open failed,str=%s\n", strerror(errno));
|
||||
|
||||
ret = ftruncate(fd, sz_mem[SZ_INDEX]);
|
||||
CHKANDJUMP(ret != 0, 255, "ftruncate failed\n");
|
||||
|
||||
mem = mmap(0, sz_mem[SZ_INDEX], PROT_READ | PROT_WRITE, MAP_SHARED,
|
||||
fd, 0);
|
||||
CHKANDJUMP(mem == MAP_FAILED, 255, "mmap failed\n");
|
||||
|
||||
//unsigned long val = *((unsigned long *)mem);
|
||||
//memset(mem, 0, sz_mem[SZ_INDEX]);
|
||||
|
||||
*((unsigned long *)mem) = 0x123456789abcdef0;
|
||||
// ret = msync(mem, sz_mem[SZ_INDEX], MS_SYNC);
|
||||
// *((unsigned long *)mem) = 0x123456789abcdef0;
|
||||
|
||||
munmap(mem, sz_mem[SZ_INDEX]);
|
||||
ret = close(fd);
|
||||
CHKANDJUMP(ret != 0, 255, "close failed\n");
|
||||
ret = unlink(fn);
|
||||
CHKANDJUMP(ret != 0, 255, "shm_unlink failed\n");
|
||||
|
||||
fn_exit:
|
||||
return ret;
|
||||
fn_fail:
|
||||
goto fn_exit;
|
||||
}
|
||||
56
test/rusage/004_mck.c
Normal file
56
test/rusage/004_mck.c
Normal file
@@ -0,0 +1,56 @@
|
||||
#include <unistd.h>
|
||||
#include <stdio.h>
|
||||
#include <sys/mman.h>
|
||||
#include <string.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <fcntl.h>
|
||||
#include <errno.h>
|
||||
#include <sys/wait.h>
|
||||
#include "util.h"
|
||||
|
||||
#define DEBUG
|
||||
|
||||
int sz_mem[] = {
|
||||
4 * (1ULL<<10),
|
||||
2 * (1ULL<<20),
|
||||
1 * (1ULL<<30),
|
||||
134217728};
|
||||
|
||||
#define SZ_INDEX 0
|
||||
#define NUM_AREAS 1
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
void *mem;
|
||||
int ret = 0;
|
||||
pid_t pid;
|
||||
int status;
|
||||
int fd;
|
||||
unsigned long val;
|
||||
|
||||
fd = open("./file", O_RDWR);
|
||||
CHKANDJUMP(fd == -1, 255, "open failed\n");
|
||||
|
||||
mem = mmap(0, sz_mem[SZ_INDEX], PROT_READ | PROT_WRITE, MAP_SHARED,
|
||||
fd, 0);
|
||||
CHKANDJUMP(mem == MAP_FAILED, 255, "mmap failed\n");
|
||||
|
||||
val = *((unsigned long *)mem);
|
||||
printf("val=%lx\n", val);
|
||||
|
||||
pid = fork();
|
||||
CHKANDJUMP(pid == -1, 255, "fork failed\n");
|
||||
if (pid == 0) {
|
||||
_exit(123);
|
||||
} else {
|
||||
ret = waitpid(pid, &status, 0);
|
||||
CHKANDJUMP(ret == -1, 255, "waitpid failed\n");
|
||||
printf("exit status=%d\n", WEXITSTATUS(status));
|
||||
}
|
||||
|
||||
fn_exit:
|
||||
return ret;
|
||||
fn_fail:
|
||||
goto fn_exit;
|
||||
}
|
||||
61
test/rusage/006_mck.c
Normal file
61
test/rusage/006_mck.c
Normal file
@@ -0,0 +1,61 @@
|
||||
#include <unistd.h>
|
||||
#include <stdio.h>
|
||||
#include <sys/mman.h>
|
||||
#include <string.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <fcntl.h>
|
||||
#include <errno.h>
|
||||
#include <sys/wait.h>
|
||||
#include "util.h"
|
||||
|
||||
#define DEBUG
|
||||
|
||||
int sz_mem[] = {
|
||||
4 * (1ULL<<10),
|
||||
2 * (1ULL<<20),
|
||||
1 * (1ULL<<30),
|
||||
134217728};
|
||||
|
||||
#define SZ_INDEX 0
|
||||
#define NUM_AREAS 1
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
void *mem;
|
||||
int ret = 0;
|
||||
pid_t pid;
|
||||
int status;
|
||||
int fd;
|
||||
|
||||
char fn[256] = "/dev/shm/Intel_MPI";
|
||||
|
||||
fd = open(fn, O_CREAT | O_TRUNC | O_RDWR, 0600);
|
||||
CHKANDJUMP(fd == -1, 255, "shm_open failed,str=%s\n", strerror(errno));
|
||||
|
||||
ret = ftruncate(fd, sz_mem[SZ_INDEX]);
|
||||
CHKANDJUMP(ret != 0, 255, "ftruncate failed\n");
|
||||
|
||||
mem = mmap(0, sz_mem[SZ_INDEX], PROT_READ | PROT_WRITE, MAP_SHARED,
|
||||
fd, 0);
|
||||
CHKANDJUMP(mem == MAP_FAILED, 255, "mmap failed\n");
|
||||
|
||||
//unsigned long val = *((unsigned long *)mem);
|
||||
*((unsigned long *)mem) = 0x123456789abcdef0;
|
||||
|
||||
pid = fork();
|
||||
CHKANDJUMP(pid == -1, 255, "fork failed\n");
|
||||
if (pid == 0) {
|
||||
_exit(123);
|
||||
} else {
|
||||
ret = waitpid(pid, &status, 0);
|
||||
CHKANDJUMP(ret == -1, 255, "waitpid failed\n");
|
||||
printf("exit status=%d\n", WEXITSTATUS(status));
|
||||
}
|
||||
|
||||
|
||||
fn_exit:
|
||||
return ret;
|
||||
fn_fail:
|
||||
goto fn_exit;
|
||||
}
|
||||
61
test/rusage/007_mck.c
Normal file
61
test/rusage/007_mck.c
Normal file
@@ -0,0 +1,61 @@
|
||||
#include <unistd.h>
|
||||
#include <stdio.h>
|
||||
#include <sys/mman.h>
|
||||
#include <string.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <fcntl.h>
|
||||
#include <errno.h>
|
||||
#include <sys/wait.h>
|
||||
#include "util.h"
|
||||
|
||||
#define DEBUG
|
||||
|
||||
int sz_mem[] = {
|
||||
4 * (1ULL<<10),
|
||||
2 * (1ULL<<20),
|
||||
1 * (1ULL<<30),
|
||||
134217728};
|
||||
|
||||
#define SZ_INDEX 0
|
||||
#define NUM_AREAS 1
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
void *mem;
|
||||
int ret = 0;
|
||||
pid_t pid;
|
||||
int status;
|
||||
int fd;
|
||||
|
||||
char fn[256] = "/dev/shm/Intel_MPI";
|
||||
|
||||
fd = open(fn, O_CREAT | O_TRUNC | O_RDWR, 0600);
|
||||
CHKANDJUMP(fd == -1, 255, "shm_open failed,str=%s\n", strerror(errno));
|
||||
|
||||
ret = ftruncate(fd, sz_mem[SZ_INDEX]);
|
||||
CHKANDJUMP(ret != 0, 255, "ftruncate failed\n");
|
||||
|
||||
mem = mmap(0, sz_mem[SZ_INDEX], PROT_READ | PROT_WRITE, MAP_SHARED,
|
||||
fd, 0);
|
||||
CHKANDJUMP(mem == MAP_FAILED, 255, "mmap failed\n");
|
||||
|
||||
//unsigned long val = *((unsigned long *)mem);
|
||||
*((unsigned long *)mem) = 0x123456789abcdef0;
|
||||
|
||||
pid = fork();
|
||||
CHKANDJUMP(pid == -1, 255, "fork failed\n");
|
||||
if (pid == 0) {
|
||||
_exit(123);
|
||||
} else {
|
||||
ret = waitpid(pid, &status, 0);
|
||||
CHKANDJUMP(ret == -1, 255, "waitpid failed\n");
|
||||
printf("exit status=%d\n", WEXITSTATUS(status));
|
||||
}
|
||||
|
||||
|
||||
fn_exit:
|
||||
return ret;
|
||||
fn_fail:
|
||||
goto fn_exit;
|
||||
}
|
||||
66
test/rusage/008_mck.c
Normal file
66
test/rusage/008_mck.c
Normal file
@@ -0,0 +1,66 @@
|
||||
#include <unistd.h>
|
||||
#include <stdio.h>
|
||||
#include <sys/mman.h>
|
||||
#include <string.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <fcntl.h>
|
||||
#include <errno.h>
|
||||
#include <sys/wait.h>
|
||||
#include "util.h"
|
||||
|
||||
#define DEBUG
|
||||
|
||||
int sz_mem[] = {
|
||||
4 * (1ULL<<10),
|
||||
2 * (1ULL<<20),
|
||||
1 * (1ULL<<30),
|
||||
134217728};
|
||||
|
||||
#define SZ_INDEX 0
|
||||
#define NUM_AREAS 1
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
void *mem;
|
||||
int ret = 0;
|
||||
pid_t pid;
|
||||
int status;
|
||||
int fd;
|
||||
unsigned long val;
|
||||
|
||||
pid = fork();
|
||||
CHKANDJUMP(pid == -1, 255, "fork failed\n");
|
||||
if (pid == 0) {
|
||||
fd = open("./file", O_RDWR);
|
||||
CHKANDJUMP(fd == -1, 255, "open failed\n");
|
||||
|
||||
mem = mmap(0, sz_mem[SZ_INDEX], PROT_READ | PROT_WRITE,
|
||||
MAP_SHARED, fd, 0);
|
||||
CHKANDJUMP(mem == MAP_FAILED, 255, "mmap failed\n");
|
||||
|
||||
val = *((unsigned long *)mem);
|
||||
printf("val=%lx\n", val);
|
||||
|
||||
_exit(123);
|
||||
} else {
|
||||
fd = open("./file", O_RDWR);
|
||||
CHKANDJUMP(fd == -1, 255, "open failed\n");
|
||||
|
||||
mem = mmap(0, sz_mem[SZ_INDEX], PROT_READ | PROT_WRITE,
|
||||
MAP_SHARED, fd, 0);
|
||||
CHKANDJUMP(mem == MAP_FAILED, 255, "mmap failed\n");
|
||||
|
||||
val = *((unsigned long *)mem);
|
||||
printf("val=%lx\n", val);
|
||||
|
||||
ret = waitpid(pid, &status, 0);
|
||||
CHKANDJUMP(ret == -1, 255, "waitpid failed\n");
|
||||
printf("exit status=%d\n", WEXITSTATUS(status));
|
||||
}
|
||||
|
||||
fn_exit:
|
||||
return ret;
|
||||
fn_fail:
|
||||
goto fn_exit;
|
||||
}
|
||||
75
test/rusage/009_mck.c
Normal file
75
test/rusage/009_mck.c
Normal file
@@ -0,0 +1,75 @@
|
||||
#include <unistd.h>
|
||||
#include <stdio.h>
|
||||
#include <sys/mman.h>
|
||||
#include <string.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <fcntl.h>
|
||||
#include <errno.h>
|
||||
#include <sys/wait.h>
|
||||
#include <sys/ipc.h>
|
||||
#include <sys/shm.h>
|
||||
#include "util.h"
|
||||
|
||||
#define DEBUG
|
||||
|
||||
int sz_mem[] = {
|
||||
4 * (1ULL<<10),
|
||||
2 * (1ULL<<20),
|
||||
1 * (1ULL<<30),
|
||||
134217728};
|
||||
|
||||
#define SZ_INDEX 0
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
void *mem;
|
||||
int ret = 0;
|
||||
pid_t pid;
|
||||
int status;
|
||||
key_t key = ftok(argv[0], 0);
|
||||
int shmid;
|
||||
|
||||
shmid = shmget(key, sz_mem[SZ_INDEX], IPC_CREAT | 0660);
|
||||
CHKANDJUMP(shmid == -1, 255, "shmget failed: %s\n", strerror(errno));
|
||||
|
||||
pid = fork();
|
||||
CHKANDJUMP(pid == -1, 255, "fork failed\n");
|
||||
if (pid == 0) {
|
||||
mem = shmat(shmid, NULL, 0);
|
||||
CHKANDJUMP(mem == (void *)-1, 255, "shmat failed: %s\n",
|
||||
strerror(errno));
|
||||
|
||||
*((unsigned long *)mem) = 0x1234;
|
||||
|
||||
ret = shmdt(mem);
|
||||
CHKANDJUMP(ret == -1, 255, "shmdt failed\n");
|
||||
|
||||
_exit(123);
|
||||
} else {
|
||||
mem = shmat(shmid, NULL, 0);
|
||||
CHKANDJUMP(mem == (void *)-1, 255, "shmat failed: %s\n",
|
||||
strerror(errno));
|
||||
|
||||
|
||||
ret = waitpid(pid, &status, 0);
|
||||
CHKANDJUMP(ret == -1, 255, "waitpid failed\n");
|
||||
|
||||
printf("%lx\n", *((unsigned long *)mem));
|
||||
|
||||
#if 0
|
||||
struct shmid_ds buf;
|
||||
|
||||
ret = shmctl(shmid, IPC_RMID, &buf);
|
||||
CHKANDJUMP(ret == -1, 255, "shmctl failed\n");
|
||||
#endif
|
||||
|
||||
ret = shmdt(mem);
|
||||
CHKANDJUMP(ret == -1, 255, "shmdt failed\n");
|
||||
}
|
||||
|
||||
fn_exit:
|
||||
return ret;
|
||||
fn_fail:
|
||||
goto fn_exit;
|
||||
}
|
||||
44
test/rusage/010_mck.c
Normal file
44
test/rusage/010_mck.c
Normal file
@@ -0,0 +1,44 @@
|
||||
#include <unistd.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <sys/mman.h>
|
||||
#include <string.h>
|
||||
#include "util.h"
|
||||
|
||||
#define DEBUG
|
||||
|
||||
int sz_anon[] = {
|
||||
4 * (1ULL<<10),
|
||||
2 * (1ULL<<20),
|
||||
1 * (1ULL<<30),
|
||||
134217728};
|
||||
|
||||
#define SZ_INDEX 0
|
||||
#define NUM_AREAS 1
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
int i;
|
||||
int sz_index;
|
||||
void *anon[NUM_AREAS];
|
||||
int ret = 0;
|
||||
|
||||
CHKANDJUMP(argc != 2, 255, "%s <sz_index>\n", argv[0]);
|
||||
sz_index = atoi(argv[1]);
|
||||
|
||||
for (i = 0; i < NUM_AREAS; i++) {
|
||||
anon[i] = mmap(0, sz_anon[sz_index], PROT_READ | PROT_WRITE,
|
||||
MAP_ANONYMOUS | MAP_PRIVATE, -1, 0);
|
||||
CHKANDJUMP(anon[i] == MAP_FAILED, 255, "mmap failed\n");
|
||||
*((unsigned long *)anon[i]) = 0x123456789abcdef0;
|
||||
}
|
||||
|
||||
for (i = 0; i < NUM_AREAS; i++) {
|
||||
munmap(anon[i], sz_anon[sz_index]);
|
||||
}
|
||||
|
||||
fn_exit:
|
||||
return ret;
|
||||
fn_fail:
|
||||
goto fn_exit;
|
||||
}
|
||||
108
test/rusage/011_mck.c
Normal file
108
test/rusage/011_mck.c
Normal file
@@ -0,0 +1,108 @@
|
||||
#include <unistd.h>
|
||||
#include <stdio.h>
|
||||
#include <sys/mman.h>
|
||||
#include <string.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <fcntl.h>
|
||||
#include <errno.h>
|
||||
#include <sys/wait.h>
|
||||
#include <sys/ipc.h>
|
||||
#include <sys/shm.h>
|
||||
#include <xpmem.h>
|
||||
#include "util.h"
|
||||
|
||||
#define DEBUG
|
||||
|
||||
int sz_mem[] = {
|
||||
4 * (1ULL<<10),
|
||||
2 * (1ULL<<20),
|
||||
1 * (1ULL<<30),
|
||||
134217728};
|
||||
|
||||
#define SZ_INDEX 0
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
void *mem;
|
||||
int ret = 0;
|
||||
pid_t pid;
|
||||
int status;
|
||||
key_t key = ftok(argv[0], 0);
|
||||
int shmid;
|
||||
xpmem_segid_t segid;
|
||||
|
||||
shmid = shmget(key, sz_mem[SZ_INDEX], IPC_CREAT | 0660);
|
||||
CHKANDJUMP(shmid == -1, 255, "shmget failed: %s\n", strerror(errno));
|
||||
|
||||
mem = mmap(0, sz_mem[SZ_INDEX], PROT_READ | PROT_WRITE,
|
||||
MAP_ANONYMOUS|MAP_PRIVATE, -1, 0);
|
||||
CHKANDJUMP(mem == MAP_FAILED, 255, "mmap failed\n");
|
||||
memset(mem, 0, sz_mem[SZ_INDEX]);
|
||||
|
||||
pid = fork();
|
||||
CHKANDJUMP(pid == -1, 255, "fork failed\n");
|
||||
if (pid == 0) {
|
||||
void *shm = shmat(shmid, NULL, 0);
|
||||
|
||||
CHKANDJUMP(shm == (void *)-1, 255, "shmat failed: %s\n",
|
||||
strerror(errno));
|
||||
|
||||
while ((segid = *(xpmem_segid_t *)shm) == 0) {
|
||||
};
|
||||
|
||||
ret = shmdt(shm);
|
||||
CHKANDJUMP(ret == -1, 255, "shmdt failed\n");
|
||||
|
||||
xpmem_apid_t apid = xpmem_get(segid, XPMEM_RDWR,
|
||||
XPMEM_PERMIT_MODE, NULL);
|
||||
CHKANDJUMP(apid == -1, 255, "xpmem_get failed: %s\n",
|
||||
strerror(errno));
|
||||
|
||||
struct xpmem_addr addr = { .apid = apid, .offset = 0 };
|
||||
void *attach = xpmem_attach(addr, sz_mem[SZ_INDEX], NULL);
|
||||
|
||||
CHKANDJUMP(attach == (void *)-1, 255,
|
||||
"xpmem_attach failed: %s\n", strerror(errno));
|
||||
|
||||
*((unsigned long *)attach) = 0x1234;
|
||||
|
||||
ret = xpmem_detach(attach);
|
||||
CHKANDJUMP(ret == -1, 255, "xpmem_detach failed\n");
|
||||
|
||||
_exit(123);
|
||||
} else {
|
||||
void *shm = shmat(shmid, NULL, 0);
|
||||
|
||||
CHKANDJUMP(mem == (void *)-1, 255, "shmat failed: %s\n",
|
||||
strerror(errno));
|
||||
|
||||
segid = xpmem_make(mem, sz_mem[SZ_INDEX], XPMEM_PERMIT_MODE,
|
||||
(void *)0666);
|
||||
CHKANDJUMP(segid == -1, 255, "xpmem_ioctl failed: %s\n",
|
||||
strerror(errno));
|
||||
|
||||
*(xpmem_segid_t *)shm = segid;
|
||||
|
||||
ret = waitpid(pid, &status, 0);
|
||||
CHKANDJUMP(ret == -1, 255, "waitpid failed\n");
|
||||
|
||||
printf("%lx\n", *((unsigned long *)mem));
|
||||
|
||||
struct shmid_ds buf;
|
||||
|
||||
ret = shmctl(shmid, IPC_RMID, &buf);
|
||||
CHKANDJUMP(ret == -1, 255, "shmctl failed\n");
|
||||
|
||||
ret = shmdt(shm);
|
||||
CHKANDJUMP(ret == -1, 255, "shmdt failed\n");
|
||||
|
||||
ret = xpmem_remove(segid);
|
||||
CHKANDJUMP(ret == -1, 255, "xpmem_remove failed\n");
|
||||
}
|
||||
|
||||
fn_exit:
|
||||
return ret;
|
||||
fn_fail:
|
||||
goto fn_exit;
|
||||
}
|
||||
78
test/rusage/012_mck.c
Normal file
78
test/rusage/012_mck.c
Normal file
@@ -0,0 +1,78 @@
|
||||
#include <unistd.h>
|
||||
#include <stdio.h>
|
||||
#include <sys/mman.h>
|
||||
#include <string.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <fcntl.h>
|
||||
#include <errno.h>
|
||||
#include <sys/wait.h>
|
||||
#include <sys/ipc.h>
|
||||
#include <sys/shm.h>
|
||||
#include <xpmem.h>
|
||||
#include "util.h"
|
||||
|
||||
#define DEBUG
|
||||
|
||||
int sz_mem[] = {
|
||||
4 * (1ULL<<10),
|
||||
2 * (1ULL<<20),
|
||||
1 * (1ULL<<30),
|
||||
134217728};
|
||||
|
||||
#define SZ_INDEX 0
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
void *mem;
|
||||
int ret = 0;
|
||||
pid_t pid;
|
||||
int status;
|
||||
xpmem_segid_t segid;
|
||||
|
||||
mem = mmap(0, sz_mem[SZ_INDEX], PROT_READ | PROT_WRITE,
|
||||
MAP_ANONYMOUS | MAP_PRIVATE, -1, 0);
|
||||
CHKANDJUMP(mem == MAP_FAILED, 255, "mmap failed\n");
|
||||
memset(mem, 0, sz_mem[SZ_INDEX]);
|
||||
|
||||
segid = xpmem_make(mem, sz_mem[SZ_INDEX], XPMEM_PERMIT_MODE,
|
||||
(void *)0666);
|
||||
CHKANDJUMP(segid == -1, 255, "xpmem_ioctl failed: %s\n",
|
||||
strerror(errno));
|
||||
|
||||
pid = fork();
|
||||
CHKANDJUMP(pid == -1, 255, "fork failed\n");
|
||||
if (pid == 0) {
|
||||
xpmem_apid_t apid = xpmem_get(segid, XPMEM_RDWR,
|
||||
XPMEM_PERMIT_MODE, NULL);
|
||||
|
||||
CHKANDJUMP(apid == -1, 255, "xpmem_get failed: %s\n",
|
||||
strerror(errno));
|
||||
|
||||
struct xpmem_addr addr = { .apid = apid, .offset = 0 };
|
||||
void *attach = xpmem_attach(addr, sz_mem[SZ_INDEX], NULL);
|
||||
|
||||
CHKANDJUMP(attach == (void *)-1, 255,
|
||||
"xpmem_attach failed: %s\n", strerror(errno));
|
||||
|
||||
*((unsigned long *)attach) = 0x1234;
|
||||
|
||||
ret = xpmem_detach(attach);
|
||||
CHKANDJUMP(ret == -1, 255, "xpmem_detach failed\n");
|
||||
|
||||
_exit(123);
|
||||
} else {
|
||||
ret = waitpid(pid, &status, 0);
|
||||
CHKANDJUMP(ret == -1, 255, "waitpid failed\n");
|
||||
|
||||
printf("%lx\n", *((unsigned long *)mem));
|
||||
|
||||
ret = xpmem_remove(segid);
|
||||
CHKANDJUMP(ret == -1, 255, "xpmem_remove failed\n");
|
||||
}
|
||||
|
||||
fn_exit:
|
||||
return ret;
|
||||
fn_fail:
|
||||
goto fn_exit;
|
||||
}
|
||||
48
test/rusage/013_mck.c
Normal file
48
test/rusage/013_mck.c
Normal file
@@ -0,0 +1,48 @@
|
||||
#include <unistd.h>
|
||||
#include <stdio.h>
|
||||
#include <sys/mman.h>
|
||||
#include <string.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <fcntl.h>
|
||||
#include "util.h"
|
||||
|
||||
#define DEBUG
|
||||
|
||||
int sz_mem[] = {
|
||||
4 * (1ULL<<10),
|
||||
2 * (1ULL<<20),
|
||||
1 * (1ULL<<30),
|
||||
134217728};
|
||||
|
||||
#define SZ_INDEX 0
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
void *mem;
|
||||
int ret = 0;
|
||||
int fd;
|
||||
|
||||
fd = open("./file", O_RDWR);
|
||||
CHKANDJUMP(fd == -1, 255, "open failed\n");
|
||||
|
||||
mem = mmap(0, sz_mem[SZ_INDEX], PROT_READ | PROT_WRITE,
|
||||
MAP_PRIVATE, fd, 0);
|
||||
CHKANDJUMP(mem == MAP_FAILED, 255, "mmap failed\n");
|
||||
|
||||
// unsigned long val = *((unsigned long *)mem);
|
||||
// memset(mem, 0, sz_mem[SZ_INDEX]);
|
||||
|
||||
*((unsigned long *)mem) = 0x123456789abcdef0;
|
||||
// ret = msync(mem, sz_mem[SZ_INDEX], MS_SYNC);
|
||||
// *((unsigned long *)mem) = 0x123456789abcdef0;
|
||||
|
||||
munmap(mem, sz_mem[SZ_INDEX]);
|
||||
// ret = close(fd);
|
||||
// CHKANDJUMP(ret != 0, 255, "close failed\n");
|
||||
|
||||
fn_exit:
|
||||
return ret;
|
||||
fn_fail:
|
||||
goto fn_exit;
|
||||
}
|
||||
51
test/rusage/014_mck.c
Normal file
51
test/rusage/014_mck.c
Normal file
@@ -0,0 +1,51 @@
|
||||
#define _GNU_SOURCE /* See feature_test_macros(7) */
|
||||
#include <unistd.h>
|
||||
#include <stdio.h>
|
||||
#include <sys/mman.h>
|
||||
#include <string.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <fcntl.h>
|
||||
#include "util.h"
|
||||
|
||||
#define DEBUG
|
||||
|
||||
int sz_unit[] = {
|
||||
4 * (1ULL<<10),
|
||||
2 * (1ULL<<20),
|
||||
1 * (1ULL<<30)};
|
||||
|
||||
#define SZ_INDEX 0
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
void *mem;
|
||||
int ret = 0;
|
||||
int fd;
|
||||
|
||||
fd = open("./file", O_RDWR);
|
||||
CHKANDJUMP(fd == -1, 255, "open failed\n");
|
||||
|
||||
mem = mmap(0, 2 * sz_unit[SZ_INDEX], PROT_READ | PROT_WRITE,
|
||||
MAP_SHARED, fd, 0);
|
||||
CHKANDJUMP(mem == MAP_FAILED, 255, "mmap failed\n");
|
||||
|
||||
ret = remap_file_pages(mem + 0 * sz_unit[SZ_INDEX],
|
||||
sz_unit[SZ_INDEX], 0, 1, MAP_SHARED);
|
||||
CHKANDJUMP(ret != 0, 255, "remap_file_pages failed\n");
|
||||
|
||||
ret = remap_file_pages(mem + 1 * sz_unit[SZ_INDEX],
|
||||
sz_unit[SZ_INDEX], 0, 0, MAP_SHARED);
|
||||
CHKANDJUMP(ret != 0, 255, "remap_file_pages failed\n");
|
||||
|
||||
*((unsigned long *)mem) = 0x123456789abcdef0;
|
||||
*(unsigned long *)((char *)mem + 1 * sz_unit[SZ_INDEX]) =
|
||||
0x123456789abcdef0;
|
||||
|
||||
munmap(mem, 2 * sz_unit[SZ_INDEX]);
|
||||
|
||||
fn_exit:
|
||||
return ret;
|
||||
fn_fail:
|
||||
goto fn_exit;
|
||||
}
|
||||
55
test/rusage/015_mck.c
Normal file
55
test/rusage/015_mck.c
Normal file
@@ -0,0 +1,55 @@
|
||||
#define _GNU_SOURCE /* See feature_test_macros(7) */
|
||||
#include <unistd.h>
|
||||
#include <stdio.h>
|
||||
#include <sys/mman.h>
|
||||
#include <string.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <fcntl.h>
|
||||
#include "util.h"
|
||||
|
||||
#define DEBUG
|
||||
|
||||
int sz_unit[] = {
|
||||
4 * (1ULL<<10),
|
||||
2 * (1ULL<<20),
|
||||
1 * (1ULL<<30)};
|
||||
|
||||
#define SZ_INDEX 0
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
void *mem;
|
||||
int ret = 0;
|
||||
int fd;
|
||||
|
||||
fd = open("./file", O_RDWR);
|
||||
CHKANDJUMP(fd == -1, 255, "open failed\n");
|
||||
|
||||
mem = mmap(0, 2 * sz_unit[SZ_INDEX], PROT_READ | PROT_WRITE,
|
||||
MAP_SHARED, fd, 0);
|
||||
CHKANDJUMP(mem == MAP_FAILED, 255, "mmap failed\n");
|
||||
|
||||
*((unsigned long *)mem) = 0x123456789abcdef0;
|
||||
*(unsigned long *)((char *)mem + 1 * sz_unit[SZ_INDEX]) =
|
||||
0xbeefbeefbeefbeef;
|
||||
|
||||
ret = remap_file_pages(mem + 0 * sz_unit[SZ_INDEX],
|
||||
sz_unit[SZ_INDEX], 0, 1, MAP_SHARED);
|
||||
CHKANDJUMP(ret != 0, 255, "remap_file_pages failed\n");
|
||||
|
||||
ret = remap_file_pages(mem + 1 * sz_unit[SZ_INDEX],
|
||||
sz_unit[SZ_INDEX], 0, 0, MAP_SHARED);
|
||||
CHKANDJUMP(ret != 0, 255, "remap_file_pages failed\n");
|
||||
|
||||
*((unsigned long *)mem) = 0x123456789abcdef0;
|
||||
*(unsigned long *)((char *)mem + 1 * sz_unit[SZ_INDEX]) =
|
||||
0xbeefbeefbeefbeef;
|
||||
|
||||
munmap(mem, 2 * sz_unit[SZ_INDEX]);
|
||||
|
||||
fn_exit:
|
||||
return ret;
|
||||
fn_fail:
|
||||
goto fn_exit;
|
||||
}
|
||||
43
test/rusage/016_mck.c
Normal file
43
test/rusage/016_mck.c
Normal file
@@ -0,0 +1,43 @@
|
||||
#define _GNU_SOURCE /* See feature_test_macros(7) */
|
||||
|
||||
#include <unistd.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <sys/mman.h>
|
||||
#include <string.h>
|
||||
#include "util.h"
|
||||
|
||||
#define DEBUG
|
||||
|
||||
int sz_anon[] = {
|
||||
4 * (1ULL<<10),
|
||||
2 * (1ULL<<20),
|
||||
1 * (1ULL<<30),
|
||||
134217728};
|
||||
|
||||
#define SZ_INDEX 0
|
||||
#define NUM_AREAS 1
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
void *mem;
|
||||
void *newmem;
|
||||
int ret = 0;
|
||||
|
||||
mem = mmap(0, sz_anon[SZ_INDEX], PROT_READ | PROT_WRITE,
|
||||
MAP_ANONYMOUS|MAP_PRIVATE, -1, 0);
|
||||
CHKANDJUMP(mem == MAP_FAILED, 255, "mmap failed\n");
|
||||
*((unsigned long *)mem) = 0x123456789abcdef0;
|
||||
|
||||
newmem = mremap(mem, sz_anon[SZ_INDEX], sz_anon[SZ_INDEX + 1],
|
||||
MREMAP_MAYMOVE);
|
||||
CHKANDJUMP(newmem == MAP_FAILED, 255, "mmap failed\n");
|
||||
*((unsigned long *)mem) = 0xbeefbeefbeefbeef;
|
||||
|
||||
munmap(newmem, sz_anon[SZ_INDEX + 1]);
|
||||
|
||||
fn_exit:
|
||||
return ret;
|
||||
fn_fail:
|
||||
goto fn_exit;
|
||||
}
|
||||
53
test/rusage/017_mck.c
Normal file
53
test/rusage/017_mck.c
Normal file
@@ -0,0 +1,53 @@
|
||||
#define _GNU_SOURCE /* See feature_test_macros(7) */
|
||||
|
||||
#include <unistd.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <sys/mman.h>
|
||||
#include <string.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <fcntl.h>
|
||||
#include "util.h"
|
||||
|
||||
#define DEBUG
|
||||
|
||||
int sz_mem[] = {
|
||||
4 * (1ULL<<10),
|
||||
2 * (1ULL<<20),
|
||||
1 * (1ULL<<30),
|
||||
134217728};
|
||||
|
||||
#define SZ_INDEX 0
|
||||
#define NUM_AREAS 1
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
void *mem;
|
||||
int ret = 0;
|
||||
int fd;
|
||||
|
||||
fd = open("./file", O_RDWR);
|
||||
CHKANDJUMP(fd == -1, 255, "open failed\n");
|
||||
|
||||
mem = mmap(0, 3 * sz_mem[SZ_INDEX], PROT_READ | PROT_WRITE,
|
||||
MAP_PRIVATE, fd, 0);
|
||||
CHKANDJUMP(mem == MAP_FAILED, 255, "mmap failed\n");
|
||||
|
||||
*(unsigned long *)((char *)mem + 0) = 0x123456789abcdef0;
|
||||
*(unsigned long *)((char *)mem + sz_mem[SZ_INDEX]) =
|
||||
0xbeefbeefbeefbeef;
|
||||
*(unsigned long *)((char *)mem + 2 * sz_mem[SZ_INDEX]) =
|
||||
0xbeefbeefbeefbeef;
|
||||
|
||||
ret = mprotect(mem + sz_mem[SZ_INDEX], sz_mem[SZ_INDEX],
|
||||
PROT_READ | PROT_WRITE | PROT_EXEC);
|
||||
CHKANDJUMP(ret != 0, 255, "mprotect failed\n");
|
||||
|
||||
munmap(mem, 3 * sz_mem[SZ_INDEX]);
|
||||
|
||||
fn_exit:
|
||||
return ret;
|
||||
fn_fail:
|
||||
goto fn_exit;
|
||||
}
|
||||
49
test/rusage/018_mck.c
Normal file
49
test/rusage/018_mck.c
Normal file
@@ -0,0 +1,49 @@
|
||||
#define _GNU_SOURCE /* See feature_test_macros(7) */
|
||||
|
||||
#include <unistd.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <sys/mman.h>
|
||||
#include <string.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <fcntl.h>
|
||||
#include "util.h"
|
||||
|
||||
#define DEBUG
|
||||
|
||||
int sz_mem[] = {
|
||||
4 * (1ULL<<10),
|
||||
2 * (1ULL<<20),
|
||||
1 * (1ULL<<30),
|
||||
134217728};
|
||||
|
||||
#define SZ_INDEX 1
|
||||
#define NUM_AREAS 1
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
void *mem;
|
||||
int ret = 0;
|
||||
|
||||
mem = mmap(0, 3 * sz_mem[SZ_INDEX], PROT_READ | PROT_WRITE,
|
||||
MAP_ANONYMOUS | MAP_PRIVATE, -1, 0);
|
||||
CHKANDJUMP(mem == MAP_FAILED, 255, "mmap failed\n");
|
||||
|
||||
*(unsigned long *)((char *)mem + 0) = 0x123456789abcdef0;
|
||||
*(unsigned long *)((char *)mem + sz_mem[SZ_INDEX]) =
|
||||
0xbeefbeefbeefbeef;
|
||||
*(unsigned long *)((char *)mem + 2 * sz_mem[SZ_INDEX]) =
|
||||
0xbeefbeefbeefbeef;
|
||||
|
||||
ret = mprotect(mem + sz_mem[SZ_INDEX - 1], sz_mem[SZ_INDEX - 1],
|
||||
PROT_READ | PROT_WRITE | PROT_EXEC);
|
||||
CHKANDJUMP(ret != 0, 255, "mprotect failed\n");
|
||||
|
||||
munmap(mem, 3 * sz_mem[SZ_INDEX]);
|
||||
|
||||
fn_exit:
|
||||
return ret;
|
||||
fn_fail:
|
||||
goto fn_exit;
|
||||
}
|
||||
44
test/rusage/020_mck.c
Normal file
44
test/rusage/020_mck.c
Normal file
@@ -0,0 +1,44 @@
|
||||
#include <unistd.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <sys/mman.h>
|
||||
#include <string.h>
|
||||
#include "util.h"
|
||||
|
||||
#define DEBUG
|
||||
|
||||
int sz_anon[] = {
|
||||
4 * (1ULL<<10),
|
||||
2 * (1ULL<<20),
|
||||
1 * (1ULL<<30),
|
||||
134217728};
|
||||
|
||||
#define SZ_INDEX 0
|
||||
#define NUM_AREAS 1
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
int i;
|
||||
int sz_index;
|
||||
void *anon[NUM_AREAS];
|
||||
int ret = 0;
|
||||
|
||||
CHKANDJUMP(argc != 2, 255, "%s <sz_index>\n", argv[0]);
|
||||
sz_index = atoi(argv[1]);
|
||||
|
||||
for (i = 0; i < NUM_AREAS; i++) {
|
||||
anon[i] = mmap(0, sz_anon[sz_index], PROT_READ | PROT_WRITE,
|
||||
MAP_ANONYMOUS|MAP_PRIVATE, -1, 0);
|
||||
CHKANDJUMP(anon[i] == MAP_FAILED, 255, "mmap failed\n");
|
||||
*((unsigned long *)anon[i]) = 0x123456789abcdef0;
|
||||
}
|
||||
|
||||
for (i = 0; i < NUM_AREAS; i++) {
|
||||
munmap(anon[i], sz_anon[sz_index]);
|
||||
}
|
||||
|
||||
fn_exit:
|
||||
return ret;
|
||||
fn_fail:
|
||||
goto fn_exit;
|
||||
}
|
||||
44
test/rusage/030_mck.c
Normal file
44
test/rusage/030_mck.c
Normal file
@@ -0,0 +1,44 @@
|
||||
#include <unistd.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <sys/mman.h>
|
||||
#include <string.h>
|
||||
#include "util.h"
|
||||
|
||||
#define DEBUG
|
||||
|
||||
int sz_anon[] = {
|
||||
4 * (1ULL<<10),
|
||||
2 * (1ULL<<20),
|
||||
1 * (1ULL<<30),
|
||||
134217728};
|
||||
|
||||
#define SZ_INDEX 0
|
||||
#define NUM_AREAS 1
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
int i;
|
||||
int sz_index;
|
||||
void *anon[NUM_AREAS];
|
||||
int ret = 0;
|
||||
|
||||
CHKANDJUMP(argc != 2, 255, "%s <sz_index>\n", argv[0]);
|
||||
sz_index = atoi(argv[1]);
|
||||
|
||||
for (i = 0; i < NUM_AREAS; i++) {
|
||||
anon[i] = mmap(0, sz_anon[sz_index], PROT_READ | PROT_WRITE,
|
||||
MAP_ANONYMOUS | MAP_PRIVATE, -1, 0);
|
||||
CHKANDJUMP(anon[i] == MAP_FAILED, 255, "mmap failed\n");
|
||||
*((unsigned long *)anon[i]) = 0x123456789abcdef0;
|
||||
}
|
||||
|
||||
for (i = 0; i < NUM_AREAS; i++) {
|
||||
munmap(anon[i], sz_anon[sz_index]);
|
||||
}
|
||||
|
||||
fn_exit:
|
||||
return ret;
|
||||
fn_fail:
|
||||
goto fn_exit;
|
||||
}
|
||||
70
test/rusage/100_mck.c
Normal file
70
test/rusage/100_mck.c
Normal file
@@ -0,0 +1,70 @@
|
||||
#include <stdio.h>
|
||||
#include <sys/mman.h>
|
||||
#include <unistd.h>
|
||||
#include <sys/syscall.h> /* For SYS_xxx definitions */
|
||||
#include "util.h"
|
||||
#include "ihklib.h"
|
||||
#include "mckernel/ihklib_rusage.h"
|
||||
|
||||
#define DEBUG
|
||||
|
||||
int sz_anon[] = {
|
||||
4 * (1ULL<<10),
|
||||
2 * (1ULL<<20),
|
||||
1 * (1ULL<<30),
|
||||
134217728};
|
||||
|
||||
#define SZ_INDEX 0
|
||||
#define NLOOP 2
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
int i, j, ret = 0;
|
||||
void *mem;
|
||||
struct mckernel_rusage rusage;
|
||||
|
||||
for (j = 0; j < NLOOP; j++) {
|
||||
mem = mmap(0, sz_anon[SZ_INDEX], PROT_READ | PROT_WRITE,
|
||||
MAP_ANONYMOUS | MAP_PRIVATE, -1, 0);
|
||||
CHKANDJUMP(mem == MAP_FAILED, 255, "mmap failed\n");
|
||||
*((unsigned long *)mem) = 0x123456789abcdef0;
|
||||
|
||||
ret = syscall(900);
|
||||
CHKANDJUMP(ret != 0, 255, "syscall failed\n");
|
||||
|
||||
ret = ihk_os_getrusage(0, &rusage, sizeof(rusage));
|
||||
CHKANDJUMP(ret != 0, 255, "ihk_os_getrusage failed\n");
|
||||
|
||||
for (i = 0; i < IHK_MAX_NUM_PGSIZES; i++) {
|
||||
printf("memory_stat_rss[%d]=%ld\n", i,
|
||||
rusage.memory_stat_rss[i]);
|
||||
printf("memory_stat_mapped_file[%d]=%ld\n", i,
|
||||
rusage.memory_stat_mapped_file[i]);
|
||||
}
|
||||
printf("memory_max_usage=%ld\n", rusage.memory_max_usage);
|
||||
printf("memory_kmem_usage=%ld\n", rusage.memory_kmem_usage);
|
||||
printf("memory_kmem_max_usage=%ld\n",
|
||||
rusage.memory_kmem_max_usage);
|
||||
#define NUM_NUMA_NODES 2
|
||||
for (i = 0; i < NUM_NUMA_NODES; i++) {
|
||||
printf("memory_numa_stat[%d]=%ld\n", i,
|
||||
rusage.memory_numa_stat[i]);
|
||||
}
|
||||
#define NUM_CPUS 2
|
||||
for (i = 0; i < NUM_CPUS; i++) {
|
||||
printf("cpuacct_usage_percpu[%d]=%ld\n", i,
|
||||
rusage.cpuacct_usage_percpu[i]);
|
||||
}
|
||||
printf("cpuacct_stat_system=%ld\n",
|
||||
rusage.cpuacct_stat_system);
|
||||
printf("cpuacct_stat_user=%ld\n", rusage.cpuacct_stat_user);
|
||||
printf("cpuacct_usage=%ld\n", rusage.cpuacct_usage);
|
||||
|
||||
printf("num_threads=%d\n", rusage.num_threads);
|
||||
printf("max_num_threads=%d\n", rusage.max_num_threads);
|
||||
}
|
||||
fn_exit:
|
||||
return ret;
|
||||
fn_fail:
|
||||
goto fn_exit;
|
||||
}
|
||||
88
test/rusage/101_mck.c
Normal file
88
test/rusage/101_mck.c
Normal file
@@ -0,0 +1,88 @@
|
||||
#include <stdio.h>
|
||||
#include <sys/mman.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/wait.h>
|
||||
#include <unistd.h>
|
||||
#include <sys/syscall.h> /* For SYS_xxx definitions */
|
||||
#include "util.h"
|
||||
#include "ihklib.h"
|
||||
#include "mckernel/ihklib_rusage.h"
|
||||
|
||||
#define DEBUG
|
||||
|
||||
int sz_anon[] = {
|
||||
4 * (1ULL<<10),
|
||||
2 * (1ULL<<20),
|
||||
1 * (1ULL<<30),
|
||||
134217728};
|
||||
|
||||
#define SZ_INDEX 0
|
||||
#define NLOOP 2
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
int i, j, ret = 0;
|
||||
void *mem;
|
||||
struct mckernel_rusage rusage;
|
||||
pid_t pid;
|
||||
int status;
|
||||
|
||||
pid = fork();
|
||||
CHKANDJUMP(pid == -1, 255, "fork failed");
|
||||
if (pid == 0) {
|
||||
|
||||
for (j = 0; j < NLOOP; j++) {
|
||||
mem = mmap(0, sz_anon[SZ_INDEX],
|
||||
PROT_READ | PROT_WRITE,
|
||||
MAP_ANONYMOUS | MAP_PRIVATE, -1, 0);
|
||||
CHKANDJUMP(mem == MAP_FAILED, 255, "mmap failed\n");
|
||||
*((unsigned long *)mem) = 0x123456789abcdef0;
|
||||
|
||||
ret = syscall(900);
|
||||
CHKANDJUMP(ret != 0, 255, "syscall failed\n");
|
||||
|
||||
ret = ihk_os_getrusage(0, &rusage, sizeof(rusage));
|
||||
CHKANDJUMP(ret != 0, 255, "ihk_os_getrusage failed\n");
|
||||
|
||||
for (i = 0; i < IHK_MAX_NUM_PGSIZES; i++) {
|
||||
printf("memory_stat_rss[%d]=%ld\n",
|
||||
i, rusage.memory_stat_rss[i]);
|
||||
printf("memory_stat_mapped_file[%d]=%ld\n",
|
||||
i, rusage.memory_stat_mapped_file[i]);
|
||||
}
|
||||
printf("memory_max_usage=%ld\n",
|
||||
rusage.memory_max_usage);
|
||||
printf("memory_kmem_usage=%ld\n",
|
||||
rusage.memory_kmem_usage);
|
||||
printf("memory_kmem_max_usage=%ld\n",
|
||||
rusage.memory_kmem_max_usage);
|
||||
#define NUM_NUMA_NODES 2
|
||||
for (i = 0; i < NUM_NUMA_NODES; i++) {
|
||||
printf("memory_numa_stat[%d]=%ld\n",
|
||||
i, rusage.memory_numa_stat[i]);
|
||||
}
|
||||
#define NUM_CPUS 2
|
||||
for (i = 0; i < NUM_CPUS; i++) {
|
||||
printf("cpuacct_usage_percpu[%d]=%ld\n",
|
||||
i, rusage.cpuacct_usage_percpu[i]);
|
||||
}
|
||||
printf("cpuacct_stat_system=%ld\n",
|
||||
rusage.cpuacct_stat_system);
|
||||
printf("cpuacct_stat_user=%ld\n",
|
||||
rusage.cpuacct_stat_user);
|
||||
printf("cpuacct_usage=%ld\n", rusage.cpuacct_usage);
|
||||
|
||||
printf("num_threads=%d\n", rusage.num_threads);
|
||||
printf("max_num_threads=%d\n", rusage.max_num_threads);
|
||||
}
|
||||
_exit(123);
|
||||
} else {
|
||||
ret = waitpid(pid, &status, 0);
|
||||
CHKANDJUMP(ret == -1, 255, "waitpid failed\n");
|
||||
}
|
||||
|
||||
fn_exit:
|
||||
return ret;
|
||||
fn_fail:
|
||||
goto fn_exit;
|
||||
}
|
||||
78
test/rusage/102_mck.c
Normal file
78
test/rusage/102_mck.c
Normal file
@@ -0,0 +1,78 @@
|
||||
#include <stdio.h>
|
||||
#include <sys/mman.h>
|
||||
#include <unistd.h>
|
||||
#include <sys/syscall.h> /* For SYS_xxx definitions */
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <fcntl.h>
|
||||
#include "util.h"
|
||||
#include "ihklib.h"
|
||||
#include "mckernel/ihklib_rusage.h"
|
||||
|
||||
#define DEBUG
|
||||
|
||||
int sz_mem[] = {
|
||||
4 * (1ULL<<10),
|
||||
2 * (1ULL<<20),
|
||||
1 * (1ULL<<30),
|
||||
134217728};
|
||||
|
||||
#define SZ_INDEX 0
|
||||
#define NLOOP 2
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
int i, j, ret = 0;
|
||||
void *mem;
|
||||
int fd;
|
||||
struct mckernel_rusage rusage;
|
||||
|
||||
fd = open("./file", O_RDWR);
|
||||
CHKANDJUMP(fd == -1, 255, "open failed\n");
|
||||
|
||||
for (j = 0; j < NLOOP; j++) {
|
||||
|
||||
mem = mmap(0, sz_mem[SZ_INDEX], PROT_READ | PROT_WRITE,
|
||||
MAP_SHARED, fd, sz_mem[SZ_INDEX] * j);
|
||||
CHKANDJUMP(mem == MAP_FAILED, 255, "mmap failed\n");
|
||||
*((unsigned long *)mem) = 0x123456789abcdef0;
|
||||
|
||||
ret = syscall(900);
|
||||
CHKANDJUMP(ret != 0, 255, "syscall failed\n");
|
||||
|
||||
ret = ihk_os_getrusage(0, &rusage, sizeof(rusage));
|
||||
CHKANDJUMP(ret != 0, 255, "ihk_os_getrusage failed\n");
|
||||
|
||||
for (i = 0; i < IHK_MAX_NUM_PGSIZES; i++) {
|
||||
printf("memory_stat_rss[%d]=%ld\n",
|
||||
i, rusage.memory_stat_rss[i]);
|
||||
printf("memory_stat_mapped_file[%d]=%ld\n",
|
||||
i, rusage.memory_stat_mapped_file[i]);
|
||||
}
|
||||
printf("memory_max_usage=%ld\n", rusage.memory_max_usage);
|
||||
printf("memory_kmem_usage=%ld\n", rusage.memory_kmem_usage);
|
||||
printf("memory_kmem_max_usage=%ld\n",
|
||||
rusage.memory_kmem_max_usage);
|
||||
#define NUM_NUMA_NODES 2
|
||||
for (i = 0; i < NUM_NUMA_NODES; i++) {
|
||||
printf("memory_numa_stat[%d]=%ld\n",
|
||||
i, rusage.memory_numa_stat[i]);
|
||||
}
|
||||
#define NUM_CPUS 2
|
||||
for (i = 0; i < NUM_CPUS; i++) {
|
||||
printf("cpuacct_usage_percpu[%d]=%ld\n",
|
||||
i, rusage.cpuacct_usage_percpu[i]);
|
||||
}
|
||||
printf("cpuacct_stat_system=%ld\n",
|
||||
rusage.cpuacct_stat_system);
|
||||
printf("cpuacct_stat_user=%ld\n", rusage.cpuacct_stat_user);
|
||||
printf("cpuacct_usage=%ld\n", rusage.cpuacct_usage);
|
||||
|
||||
printf("num_threads=%d\n", rusage.num_threads);
|
||||
printf("max_num_threads=%d\n", rusage.max_num_threads);
|
||||
}
|
||||
fn_exit:
|
||||
return ret;
|
||||
fn_fail:
|
||||
goto fn_exit;
|
||||
}
|
||||
70
test/rusage/103_mck.c
Normal file
70
test/rusage/103_mck.c
Normal file
@@ -0,0 +1,70 @@
|
||||
#include <stdio.h>
|
||||
#include <sys/mman.h>
|
||||
#include <unistd.h>
|
||||
#include <sys/syscall.h> /* For SYS_xxx definitions */
|
||||
#include "util.h"
|
||||
#include "ihklib.h"
|
||||
#include "mckernel/ihklib_rusage.h"
|
||||
|
||||
#define DEBUG
|
||||
|
||||
int sz_anon[] = {
|
||||
4 * (1ULL<<10),
|
||||
2 * (1ULL<<20),
|
||||
1 * (1ULL<<30),
|
||||
134217728};
|
||||
|
||||
#define SZ_INDEX 0
|
||||
#define NLOOP 2
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
int i, j, ret = 0;
|
||||
void *mem;
|
||||
struct mckernel_rusage rusage;
|
||||
|
||||
for (j = 0; j < NLOOP; j++) {
|
||||
mem = mmap(0, sz_anon[SZ_INDEX], PROT_READ | PROT_WRITE,
|
||||
MAP_ANONYMOUS|MAP_PRIVATE, -1, 0);
|
||||
CHKANDJUMP(mem == MAP_FAILED, 255, "mmap failed\n");
|
||||
*((unsigned long *)mem) = 0x123456789abcdef0;
|
||||
|
||||
ret = syscall(900);
|
||||
CHKANDJUMP(ret != 0, 255, "syscall failed\n");
|
||||
|
||||
ret = ihk_os_getrusage(0, &rusage, sizeof(rusage));
|
||||
CHKANDJUMP(ret != 0, 255, "ihk_os_getrusage failed\n");
|
||||
|
||||
for (i = 0; i < IHK_MAX_NUM_PGSIZES; i++) {
|
||||
printf("memory_stat_rss[%d]=%ld\n",
|
||||
i, rusage.memory_stat_rss[i]);
|
||||
printf("memory_stat_mapped_file[%d]=%ld\n",
|
||||
i, rusage.memory_stat_mapped_file[i]);
|
||||
}
|
||||
printf("memory_max_usage=%ld\n", rusage.memory_max_usage);
|
||||
printf("memory_kmem_usage=%ld\n", rusage.memory_kmem_usage);
|
||||
printf("memory_kmem_max_usage=%ld\n",
|
||||
rusage.memory_kmem_max_usage);
|
||||
#define NUM_NUMA_NODES 2
|
||||
for (i = 0; i < NUM_NUMA_NODES; i++) {
|
||||
printf("memory_numa_stat[%d]=%ld\n",
|
||||
i, rusage.memory_numa_stat[i]);
|
||||
}
|
||||
#define NUM_CPUS 2
|
||||
for (i = 0; i < NUM_CPUS; i++) {
|
||||
printf("cpuacct_usage_percpu[%d]=%ld\n",
|
||||
i, rusage.cpuacct_usage_percpu[i]);
|
||||
}
|
||||
printf("cpuacct_stat_system=%ld\n",
|
||||
rusage.cpuacct_stat_system);
|
||||
printf("cpuacct_stat_user=%ld\n", rusage.cpuacct_stat_user);
|
||||
printf("cpuacct_usage=%ld\n", rusage.cpuacct_usage);
|
||||
|
||||
printf("num_threads=%d\n", rusage.num_threads);
|
||||
printf("max_num_threads=%d\n", rusage.max_num_threads);
|
||||
}
|
||||
fn_exit:
|
||||
return ret;
|
||||
fn_fail:
|
||||
goto fn_exit;
|
||||
}
|
||||
@@ -20,7 +20,7 @@ int main(int argc, char **argv)
|
||||
if ((ret = ihk_os_getrusage(0, &rusage, sizeof(rusage)))) {
|
||||
fprintf(stderr, "%s: ihk_os_getrusage failed\n", __func__);
|
||||
ret = -EINVAL;
|
||||
goto out;
|
||||
goto fn_fail;
|
||||
}
|
||||
|
||||
OKNG(WITHIN_RANGE(rusage.cpuacct_usage_percpu[1], DELAY0, SCALE),
|
||||
@@ -32,7 +32,7 @@ int main(int argc, char **argv)
|
||||
|
||||
printf("All tests finished\n");
|
||||
|
||||
out:
|
||||
fn_fail:
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <fcntl.h>
|
||||
#include "util.h"
|
||||
|
||||
|
||||
#define DELAY0 (100UL * 1000 * 1000)
|
||||
@@ -115,7 +116,6 @@ unsigned long nsec;
|
||||
void fwq_init(void)
|
||||
{
|
||||
struct timespec start, end;
|
||||
int i;
|
||||
|
||||
clock_gettime(TIMER_KIND, &start);
|
||||
#define N_INIT 10000000
|
||||
@@ -1,179 +1,60 @@
|
||||
.SUFFIXES: # Clear suffixes
|
||||
.SUFFIXES: .c
|
||||
include $(HOME)/.mck_test_config.mk
|
||||
XPMEM_DIR=$(HOME)/usr
|
||||
|
||||
CC = gcc
|
||||
|
||||
CPPFLAGS = -I$(HOME)/project/os/install/include
|
||||
CCFLAGS = -g
|
||||
LDFLAGS = -L$(HOME)/project/os/install/lib -lihk -Wl,-rpath -Wl,$(HOME)/project/os/install/lib -lpthread
|
||||
EXES =
|
||||
SRCS =
|
||||
OBJS = $(SRCS:.c=.o)
|
||||
CPPFLAGSLIN = -I$(MCK_DIR)/include
|
||||
CFLAGSLIN = -Wall -Werror -g
|
||||
LDFLAGSLIN = -L$(MCK_DIR)/lib -lihk -Wl,-rpath -Wl,$(MCK_DIR)/lib -lpthread
|
||||
SRCSLIN = $(shell ls *_lin.c)
|
||||
EXESLIN = $(SRCSLIN:.c=)
|
||||
OBJSLIN = $(SRCSLIN:.c=.o)
|
||||
|
||||
CPPFLAGSMCK = -I$(HOME)/usr/include
|
||||
CCFLAGSMCK = -g -O0
|
||||
LDFLAGSMCK = -static -lpthread
|
||||
SRCSMCK = $(shell ls rusage*.c)
|
||||
CPPFLAGSMCK =
|
||||
CFLAGSMCK = -Wall -Werror -g -O0
|
||||
LDFLAGSMCK =
|
||||
SRCSMCK = $(shell ls *.c | grep -vE '_lin')
|
||||
EXESMCK = $(SRCSMCK:.c=)
|
||||
OBJSMCK = $(SRCSMCK:.c=.o)
|
||||
|
||||
all: $(EXES) $(EXESMCK)
|
||||
all: $(EXESLIN) $(EXESMCK)
|
||||
|
||||
rusage000: rusage000.o
|
||||
$(CC) -o $@ $^ $(LDFLAGSMCK)
|
||||
011_mck: 011_mck.o
|
||||
$(CC) -o $@ $^ $(LDFLAGSMCK) -L$(XPMEM_DIR)/lib -lxpmem
|
||||
|
||||
rusage000.o: rusage000.c
|
||||
$(CC) $(CCFLAGSMCK) $(CPPFLAGSMCK) -c $<
|
||||
011_mck.o: 011_mck.c
|
||||
$(CC) $(CFLAGSMCK) $(CPPFLAGSMCK) -I$(XPMEM_DIR)/include -c $<
|
||||
|
||||
rusage010: rusage010.o
|
||||
$(CC) -o $@ $^ $(LDFLAGSMCK)
|
||||
012_mck: 012_mck.o
|
||||
$(CC) -o $@ $^ $(LDFLAGSMCK) -L$(XPMEM_DIR)/lib -lxpmem -Wl,-rpath -Wl,$(XPMEM_DIR)/lib
|
||||
|
||||
rusage010.o: rusage010.c
|
||||
$(CC) $(CCFLAGSMCK) $(CPPFLAGSMCK) -c $<
|
||||
012_mck.o: 012_mck.c
|
||||
$(CC) $(CFLAGSMCK) $(CPPFLAGSMCK) -I$(XPMEM_DIR)/include -c $<
|
||||
|
||||
rusage020: rusage020.o
|
||||
$(CC) -o $@ $^ $(LDFLAGSMCK)
|
||||
10%_mck: 10%_mck.o
|
||||
$(CC) -o $@ $^ $(LDFLAGSMCK) -L$(MCK_DIR)/lib -lihk -Wl,-rpath -Wl,$(MCK_DIR)/lib
|
||||
|
||||
rusage020.o: rusage020.c
|
||||
$(CC) $(CCFLAGSMCK) $(CPPFLAGSMCK) -c $<
|
||||
10%_mck.o:: 10%_mck.c
|
||||
$(CC) $(CFLAGSMCK) $(CPPFLAGSMCK) -I$(MCK_DIR)/include -c $<
|
||||
|
||||
rusage030: rusage030.o
|
||||
$(CC) -o $@ $^ $(LDFLAGSMCK)
|
||||
20%_mck: 20%_mck.o
|
||||
$(CC) -o $@ $^ $(LDFLAGSMCK) -lpthread
|
||||
|
||||
rusage030.o: rusage030.c
|
||||
$(CC) $(CCFLAGSMCK) $(CPPFLAGSMCK) -c $<
|
||||
|
||||
rusage001: rusage001.o
|
||||
$(CC) -o $@ $^ $(LDFLAGSMCK)
|
||||
|
||||
rusage001.o: rusage001.c
|
||||
$(CC) $(CCFLAGSMCK) $(CPPFLAGSMCK) -c $<
|
||||
|
||||
rusage002: rusage002.o
|
||||
$(CC) -o $@ $^ $(LDFLAGSMCK) -lrt
|
||||
|
||||
rusage002.o: rusage002.c
|
||||
$(CC) $(CCFLAGSMCK) $(CPPFLAGSMCK) -c $<
|
||||
|
||||
rusage003: rusage003.o
|
||||
$(CC) -o $@ $^ $(LDFLAGSMCK) -lrt
|
||||
|
||||
rusage003.o: rusage003.c
|
||||
$(CC) $(CCFLAGSMCK) $(CPPFLAGSMCK) -c $<
|
||||
|
||||
rusage004: rusage004.o
|
||||
$(CC) -o $@ $^ $(LDFLAGSMCK)
|
||||
|
||||
rusage004.o: rusage004.c
|
||||
$(CC) $(CCFLAGSMCK) $(CPPFLAGSMCK) -c $<
|
||||
|
||||
rusage006: rusage006.o
|
||||
$(CC) -o $@ $^ $(LDFLAGSMCK)
|
||||
|
||||
rusage006.o: rusage006.c
|
||||
$(CC) $(CCFLAGSMCK) $(CPPFLAGSMCK) -c $<
|
||||
|
||||
rusage007: rusage007.o
|
||||
$(CC) -o $@ $^ $(LDFLAGSMCK)
|
||||
|
||||
rusage007.o: rusage007.c
|
||||
$(CC) $(CCFLAGSMCK) $(CPPFLAGSMCK) -c $<
|
||||
|
||||
rusage008: rusage008.o
|
||||
$(CC) -o $@ $^ $(LDFLAGSMCK)
|
||||
|
||||
rusage008.o: rusage008.c
|
||||
$(CC) $(CCFLAGSMCK) $(CPPFLAGSMCK) -c $<
|
||||
|
||||
rusage009: rusage009.o
|
||||
$(CC) -o $@ $^ $(LDFLAGSMCK)
|
||||
|
||||
rusage009.o: rusage009.c
|
||||
$(CC) $(CCFLAGSMCK) $(CPPFLAGSMCK) -c $<
|
||||
|
||||
rusage011: rusage011.o
|
||||
$(CC) -o $@ $^ $(LDFLAGSMCK) -L/home/takagi/usr/lib -lxpmem
|
||||
|
||||
rusage011.o: rusage011.c
|
||||
$(CC) $(CCFLAGSMCK) $(CPPFLAGSMCK) -c $<
|
||||
|
||||
rusage012: rusage012.o
|
||||
$(CC) -o $@ $^ $(LDFLAGSMCK) -L/home/takagi/usr/lib -lxpmem
|
||||
|
||||
rusage012.o: rusage012.c
|
||||
$(CC) $(CCFLAGSMCK) $(CPPFLAGSMCK) -c $<
|
||||
|
||||
rusage013: rusage013.o
|
||||
$(CC) -o $@ $^ $(LDFLAGSMCK)
|
||||
|
||||
rusage013.o: rusage013.c
|
||||
$(CC) $(CCFLAGSMCK) $(CPPFLAGSMCK) -c $<
|
||||
|
||||
rusage014: rusage014.o
|
||||
$(CC) -o $@ $^ $(LDFLAGSMCK)
|
||||
|
||||
rusage014.o: rusage014.c
|
||||
$(CC) $(CCFLAGSMCK) $(CPPFLAGSMCK) -c $<
|
||||
|
||||
rusage015: rusage015.o
|
||||
$(CC) -o $@ $^ $(LDFLAGSMCK)
|
||||
|
||||
rusage015.o: rusage015.c
|
||||
$(CC) $(CCFLAGSMCK) $(CPPFLAGSMCK) -c $<
|
||||
|
||||
rusage016: rusage016.o
|
||||
$(CC) -o $@ $^ $(LDFLAGSMCK)
|
||||
|
||||
rusage016.o: rusage016.c
|
||||
$(CC) $(CCFLAGSMCK) $(CPPFLAGSMCK) -c $<
|
||||
|
||||
rusage017: rusage017.o
|
||||
$(CC) -o $@ $^ $(LDFLAGSMCK)
|
||||
|
||||
rusage017.o: rusage017.c
|
||||
$(CC) $(CCFLAGSMCK) $(CPPFLAGSMCK) -c $<
|
||||
|
||||
rusage018: rusage018.o
|
||||
$(CC) -o $@ $^ $(LDFLAGSMCK)
|
||||
|
||||
rusage018.o: rusage018.c
|
||||
$(CC) $(CCFLAGSMCK) $(CPPFLAGSMCK) -c $<
|
||||
|
||||
rusage100: rusage100.o
|
||||
$(CC) -o $@ $^ $(LDFLAGS)
|
||||
|
||||
rusage100.o: rusage100.c
|
||||
$(CC) $(CCFLAGS) $(CPPFLAGS) -c $<
|
||||
|
||||
rusage101: rusage101.o
|
||||
$(CC) -o $@ $^ $(LDFLAGS)
|
||||
|
||||
rusage101.o: rusage101.c
|
||||
$(CC) $(CCFLAGS) $(CPPFLAGS) -c $<
|
||||
|
||||
rusage102: rusage102.o
|
||||
$(CC) -o $@ $^ $(LDFLAGS)
|
||||
|
||||
rusage102.o: rusage102.c
|
||||
$(CC) $(CCFLAGS) $(CPPFLAGS) -c $<
|
||||
|
||||
rusage103: rusage103.o
|
||||
$(CC) -o $@ $^ $(LDFLAGS)
|
||||
|
||||
rusage103.o: rusage103.c
|
||||
$(CC) $(CCFLAGS) $(CPPFLAGS) -c $<
|
||||
20%_mck.o:: 20%_mck.c
|
||||
$(CC) $(CFLAGSMCK) $(CPPFLAGSMCK) -c $<
|
||||
|
||||
%_mck: %_mck.o
|
||||
$(CC) -o $@ $^ $(LDFLAGSMCK)
|
||||
|
||||
%_mck.o:: %_mck.c
|
||||
$(CC) $(CCFLAGSMCK) $(CPPFLAGSMCK) -c $<
|
||||
$(CC) $(CFLAGSMCK) $(CPPFLAGSMCK) -c $<
|
||||
|
||||
|
||||
%_lin.o:: %_lin.c
|
||||
$(CC) $(CCFLAGS) $(CPPFLAGS) -c $<
|
||||
$(CC) $(CFLAGSLIN) $(CPPFLAGSLIN) -c $<
|
||||
|
||||
%_lin: %_lin.o
|
||||
$(CC) -o $@ $^ $(LDFLAGS)
|
||||
$(CC) -o $@ $^ $(LDFLAGSLIN)
|
||||
|
||||
clean:
|
||||
rm -f core $(EXES) $(OBJS) $(EXESMCK) $(OBJSMCK)
|
||||
rm -f core $(EXESLIN) $(OBJSLIN) $(EXESMCK) $(OBJSMCK)
|
||||
|
||||
@@ -1,10 +1,14 @@
|
||||
==========
|
||||
How to run
|
||||
==========
|
||||
./run.sh <rusagexxx>
|
||||
|
||||
Example:
|
||||
./run.sh rusage000
|
||||
(1) cp <build>/mckernel/mck_test_config.sample \
|
||||
~/.mck_test_config
|
||||
(2) cp <build>/ihk/mck_test_config.mk.sample \
|
||||
~/.mck_test_config.mk
|
||||
(3) Edit the following line in Makefile:
|
||||
XPMEM_DIR=/usr/
|
||||
(4) ./run.sh <test_id>
|
||||
Example: ./run.sh 000
|
||||
|
||||
===================================
|
||||
How to judge it behaves as expected
|
||||
@@ -14,7 +18,7 @@ Follow the instruction given by run.sh.
|
||||
=====================
|
||||
Descripation of tests
|
||||
=====================
|
||||
rusage000: Excercise the following execution paths:
|
||||
000: Excercise the following execution paths:
|
||||
args_envs()->set_range() text,data,arg,env[OK]
|
||||
args_envs()->set_range() !vdso [OK],
|
||||
args_envs()->set_range() stack[OK],
|
||||
@@ -29,89 +33,89 @@ rusage000: Excercise the following execution paths:
|
||||
exit_group()->free_process_memory_range()->!vdso[OK],
|
||||
exit_group()->free_process_memory_range()->stack[OK],
|
||||
|
||||
rusage010: Excercise the following execution paths:
|
||||
010: Excercise the following execution paths:
|
||||
app->mmap() 2M,anon,pre-page ->set_range()->munmap()->free_process_memory_range()->clear_range()[OK]
|
||||
|
||||
rusage020: Excercise the following execution paths:
|
||||
020: Excercise the following execution paths:
|
||||
app->mmap() 1G,anon,private,demand-page -> pf -> set_range() [NA (failed to get 1GB page)],
|
||||
app->mmap() 1G,anon,private,demand-page -> pf -> set_range()->munmap()->free_process_memory_range()->clear_range()[NA (failed to get 1GB page)]
|
||||
|
||||
rusage030: Excercise the following execution paths:
|
||||
030: Excercise the following execution paths:
|
||||
app->mmap() 128M,anon,private,demand-page(=zeroobj) -> pf -> set_range() [OK],
|
||||
app->mmap() 128M,anon,private,demand-page(=zeroobj) -> pf -> set_range()->munmap()->free_process_memory_range()->clear_range()[OK]
|
||||
|
||||
rusage001: Excercise the following execution paths:
|
||||
001: Excercise the following execution paths:
|
||||
do_mmap(),file,demand-page->get_page(),ld->set_pte()->munmap()->clear_range() [OK]
|
||||
do_mmap(),file,demand-page->get_page(),ld->set_pte()->st->munmap()->clear_range() [OK]
|
||||
do_mmap(),file,demand-page->get_page(),st->set_pte()->flush()->munmap()->clear_range() [OK]
|
||||
|
||||
rusage002: Excercise the following execution paths:
|
||||
002: Excercise the following execution paths:
|
||||
do_mmap(),/dev/shm with --mpol_shm_premap,pre-page->get_page(),st->set_pte()->munmap()->clear_range() [OK]
|
||||
|
||||
rusage003: Excercise the following execution paths:
|
||||
003: Excercise the following execution paths:
|
||||
do_mmap(),/dev/shm without --mpol_shm_premap,pre-page->get_page(),st->set_pte()->munmap()->clear_range() [OK]
|
||||
|
||||
rusage004: Excercise the following execution paths related to clone
|
||||
004: Excercise the following execution paths related to clone
|
||||
load segments->copy_user_ranges()->clear_range() [OK]
|
||||
filemap(demand-paging)->copy_user_ranges()->clear_range() [OK]
|
||||
|
||||
rusage005: Excercise the following execution paths related to device file (ib ping-pong)
|
||||
005: Excercise the following execution paths related to device file (ib ping-pong)
|
||||
devobj()->get_page()->pf->munmap()->clear_range() [OK]
|
||||
remote page fault->cow->clear_range() [OK]
|
||||
ld-linux.so->mmap private->cow->clear_range() [OK]
|
||||
|
||||
rusage006: Excercise the following execution paths related to clone
|
||||
006: Excercise the following execution paths related to clone
|
||||
filemap,/dev/shm with --mpol_shm_premap->copy_user_ranges()->clear_range() [OK]
|
||||
|
||||
rusage007: Excercise the following execution paths related to clone
|
||||
007: Excercise the following execution paths related to clone
|
||||
filemap,/dev/shm without --mpol_shm_premap->copy_user_ranges()->clear_range() [OK]
|
||||
|
||||
rusage008: Excercise the following execution paths related to sharing file-map page
|
||||
008: Excercise the following execution paths related to sharing file-map page
|
||||
fork()->filemap->pf->clear_range() [OK]
|
||||
|
||||
rusage009: Excercise the following execution paths related to sharing shmget() page
|
||||
009: Excercise the following execution paths related to sharing shmget() page
|
||||
fork()->shmat()->pf->clear_range() [OK]
|
||||
|
||||
rusage011: Excercise the following execution paths related to sharing xpmem page
|
||||
011: Excercise the following execution paths related to sharing xpmem page
|
||||
fork()->xpmem_attach()->pf->clear_range() [OK]
|
||||
|
||||
rusage012: #925
|
||||
012: #925
|
||||
|
||||
rusage013: Excercise the following execution paths:
|
||||
013: Excercise the following execution paths:
|
||||
fileobj(prvate)->cow->set_pte()->clear_range() [OK]
|
||||
|
||||
rusage014: Excercise the following execution paths related to remap_file_pages
|
||||
014: Excercise the following execution paths related to remap_file_pages
|
||||
do_mmap->fileobj-->remap_file_pages()->st->clear_range() [OK]
|
||||
|
||||
rusage015: Excercise the following execution paths related to remap_file_pages
|
||||
015: Excercise the following execution paths related to remap_file_pages
|
||||
do_mmap->fileobj-->st-->remap_one_page()->clear_range() [OK]
|
||||
|
||||
rusage016: Excercise the following execution paths related to mremap
|
||||
016: Excercise the following execution paths related to mremap
|
||||
mremap()->move_pte_range()-->clear_range() [OK]
|
||||
|
||||
rusage017: Excercise the following execution paths related to split_process_memory_range, file-map
|
||||
017: Excercise the following execution paths related to split_process_memory_range, file-map
|
||||
mprotect()->split_process_memory_range()->change_prot_process_memory_range()->clear_range()/file_obj_release() [OK]
|
||||
|
||||
rusage018: Excercise the following execution paths related to split_process_memory_range, 2M-page
|
||||
018: Excercise the following execution paths related to split_process_memory_range, 2M-page
|
||||
mprotect()->ihk_mc_pt_split()->change_prot_process_memory_range()->clear_range() [OK]
|
||||
|
||||
rusage019: Run npb bt-mz.S.2
|
||||
019: Run npb bt-mz.S.2
|
||||
1-ppn x 2-tpn x 2-node[OK]
|
||||
|
||||
rusage021: Run npb bt-mz.S.4
|
||||
021: Run npb bt-mz.S.4
|
||||
2-ppn x 2-tpn x 2-node (wallaby{14,15}) [OK]
|
||||
2-ppn x 1-tpn x 2-node (polaris,kochab) [OK]
|
||||
|
||||
rusage100: Test ihk_os_getrusage()
|
||||
100: Test ihk_os_getrusage(), call from McKernel process
|
||||
anon mmap,num_threads=1 [OK]
|
||||
|
||||
rusage101: Test ihk_os_getrusage()
|
||||
101: Test ihk_os_getrusage(), call from McKernel process
|
||||
anon mmap,num_threads=2 [OK]
|
||||
|
||||
rusage102: Test ihk_os_getrusage()
|
||||
102: Test ihk_os_getrusage(), call from McKernel process
|
||||
file map,num_threads=1 [OK]
|
||||
|
||||
rusage103: Test ihk_os_getrusage()
|
||||
103: Test ihk_os_getrusage(), call from McKernel process
|
||||
anon mmap@numa#1 [OK]
|
||||
|
||||
rusage104: Test ihk_os_getrusage(), user time per CPU
|
||||
200: Test ihk_os_getrusage(), user time per CPU
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
#!/usr/bin/bash
|
||||
|
||||
. ${HOME}/.mck_test_config
|
||||
|
||||
testname=$1
|
||||
bootopt="-m 256M"
|
||||
mcexecopt=""
|
||||
@@ -7,21 +9,19 @@ testopt=""
|
||||
kill="n"
|
||||
dryrun="n"
|
||||
sleepopt="0.4"
|
||||
home=$(eval echo \$\{HOME\})
|
||||
install=${home}/project/os/install
|
||||
|
||||
echo Executing ${testname}
|
||||
|
||||
case ${testname} in
|
||||
rusage011 | rusage012)
|
||||
011 | 012)
|
||||
printf "*** Enable debug messages in rusage.h, memory.c, fileobj.c, shmobj.c, process.c by defining DEBUG macro, e.g. #define RUSAGE_DEBUG and then recompile IHK/McKernel.\n"
|
||||
printf "*** Install xpmem by git-clone https://github.com/hjelmn/xpmem.\n"
|
||||
;;
|
||||
rusage100 | rusage101 | rusage102 | rusage103)
|
||||
100 | 101 | 102 | 103)
|
||||
printf "*** Refer to rusage100.patch to add syscall #900 by editing syscall_list.h and syscall.c and recompile IHK/McKernel.\n"
|
||||
;;
|
||||
rusage104)
|
||||
printf "*** Apply rusage104.patch to enable syscall #900"
|
||||
200)
|
||||
printf "*** Apply rusage200.patch to enable syscall #900"
|
||||
printf "which reports rusage values.\n"
|
||||
;;
|
||||
*)
|
||||
@@ -32,33 +32,34 @@ esac
|
||||
read -p "*** Hit return when ready!" key
|
||||
|
||||
case ${testname} in
|
||||
rusage005)
|
||||
ssh wallaby -c '(cd ${home}/project/src/rusage/verbs; make rdma_wr)'
|
||||
bn=verbs/rdma_wr
|
||||
005)
|
||||
ssh wallaby -c '(cd ${HOME}/project/src/rusage/verbs; make rdma_wr)'
|
||||
bn_mck=verbs/rdma_wr
|
||||
;;
|
||||
rusage019)
|
||||
#ssh wallaby -c '(cd ${home}/project/src/rusage/npb/NPB3.3.1-MZ/NPB3.3-MZ-MPI; make bt-mz CLASS=S NPROCS=2)'
|
||||
bn=npb/NPB3.3.1-MZ/NPB3.3-MZ-MPI/bin/bt-mz.S.2
|
||||
019)
|
||||
#ssh wallaby -c '(cd ${HOME}/project/src/rusage/npb/NPB3.3.1-MZ/NPB3.3-MZ-MPI; make bt-mz CLASS=S NPROCS=2)'
|
||||
bn_mck=npb/NPB3.3.1-MZ/NPB3.3-MZ-MPI/bin/bt-mz.S.2
|
||||
perl -e 'print "wallaby14\nwallaby15\n"' > ./hostfile
|
||||
;;
|
||||
rusage021)
|
||||
021)
|
||||
if ! grep /var/log/local6 /etc/rsyslog.conf &>/dev/null; then
|
||||
echo "Insert a line of local6.* /var/log/local6 into /etc/rsyslog.conf"
|
||||
exit 255
|
||||
fi
|
||||
ssh wallaby bash -c '(cd ${home}/project/src/rusage/npb/NPB3.3.1-MZ/NPB3.3-MZ-MPI; make bt-mz CLASS=S NPROCS=4)'
|
||||
bn=npb/NPB3.3.1-MZ/NPB3.3-MZ-MPI/bin/bt-mz.S.4
|
||||
ssh wallaby bash -c '(cd ${HOME}/project/src/rusage/npb/NPB3.3.1-MZ/NPB3.3-MZ-MPI; make bt-mz CLASS=S NPROCS=4)'
|
||||
bn_mck=npb/NPB3.3.1-MZ/NPB3.3-MZ-MPI/bin/bt-mz.S.4
|
||||
perl -e 'print "polaris:2\nkochab:2\n"' > ./hostfile
|
||||
;;
|
||||
rusage104)
|
||||
bn=${testname}
|
||||
200)
|
||||
bn_mck=${testname}_mck
|
||||
bn_lin=${testname}_lin
|
||||
make clean > /dev/null 2> /dev/null
|
||||
make ${bn}_mck ${bn}_lin
|
||||
make $bn_mck $bn_lin
|
||||
;;
|
||||
*)
|
||||
bn=${testname}
|
||||
bn_mck=${testname}_mck
|
||||
make clean > /dev/null 2> /dev/null
|
||||
make ${bn}
|
||||
make $bn_mck
|
||||
esac
|
||||
|
||||
pid=`pidof mcexec`
|
||||
@@ -67,91 +68,82 @@ if [ "${pid}" != "" ]; then
|
||||
fi
|
||||
|
||||
case ${testname} in
|
||||
rusage000)
|
||||
000)
|
||||
testopt="0"
|
||||
;;
|
||||
rusage010)
|
||||
010)
|
||||
testopt="1"
|
||||
;;
|
||||
rusage020)
|
||||
020)
|
||||
bootopt="-m 256M@0,1G@0"
|
||||
testopt="2"
|
||||
kill="y"
|
||||
;;
|
||||
rusage030)
|
||||
030)
|
||||
testopt="3"
|
||||
;;
|
||||
rusage001)
|
||||
cp ${bn} ./file
|
||||
001)
|
||||
cp $bn_mck ./file
|
||||
kill="n"
|
||||
;;
|
||||
rusage002)
|
||||
002)
|
||||
mcexecopt="--mpol-shm-premap"
|
||||
;;
|
||||
rusage003)
|
||||
003)
|
||||
;;
|
||||
rusage004)
|
||||
cp ${bn} ./file
|
||||
004)
|
||||
cp $bn_mck ./file
|
||||
;;
|
||||
rusage005)
|
||||
echo ssh wallaby15.aics-sys.riken.jp ${home}/project/src/verbs/rdma_wr -p 10000&
|
||||
005)
|
||||
echo ssh wallaby15.aics-sys.riken.jp ${HOME}/project/src/verbs/rdma_wr -p 10000&
|
||||
read -p "Run rdma_wr on wallaby15 and enter the port number." port
|
||||
testopt="-s wallaby15.aics-sys.riken.jp -p ${port}"
|
||||
;;
|
||||
rusage006)
|
||||
006)
|
||||
mcexecopt="--mpol-shm-premap"
|
||||
;;
|
||||
rusage007)
|
||||
007)
|
||||
;;
|
||||
rusage008)
|
||||
cp ${bn} ./file
|
||||
008)
|
||||
cp $bn_mck ./file
|
||||
;;
|
||||
rusage009)
|
||||
009)
|
||||
;;
|
||||
rusage011)
|
||||
011)
|
||||
sudo insmod /home/takagi/usr/lib/module/xpmem.ko
|
||||
sudo chmod og+rw /dev/xpmem
|
||||
dryrun="n"
|
||||
kill="n"
|
||||
sleepopt="5"
|
||||
;;
|
||||
rusage012)
|
||||
012)
|
||||
sudo insmod /home/takagi/usr/lib/module/xpmem.ko
|
||||
sudo chmod og+rw /dev/xpmem
|
||||
dryrun="n"
|
||||
kill="n"
|
||||
sleepopt="5"
|
||||
;;
|
||||
rusage013)
|
||||
cp ${bn} ./file
|
||||
013 | 014 | 015 | 017)
|
||||
cp $bn_mck ./file
|
||||
;;
|
||||
rusage014)
|
||||
cp ${bn} ./file
|
||||
016)
|
||||
;;
|
||||
rusage015)
|
||||
cp ${bn} ./file
|
||||
018)
|
||||
;;
|
||||
rusage016)
|
||||
;;
|
||||
rusage017)
|
||||
cp ${bn} ./file
|
||||
;;
|
||||
rusage018)
|
||||
;;
|
||||
rusage019 | rusage021)
|
||||
019 | 021)
|
||||
bootopt="-k 1 -m 256M"
|
||||
;;
|
||||
rusage100)
|
||||
100)
|
||||
;;
|
||||
rusage101)
|
||||
101)
|
||||
;;
|
||||
rusage102)
|
||||
cp ${bn} ./file
|
||||
102)
|
||||
cp $bn_lin ./file
|
||||
;;
|
||||
rusage103)
|
||||
103)
|
||||
bootopt="-m 256M@1"
|
||||
;;
|
||||
rusage104)
|
||||
200)
|
||||
bootopt="-c 1,2,3 -m 256M"
|
||||
;;
|
||||
*)
|
||||
@@ -164,7 +156,7 @@ exit
|
||||
fi
|
||||
|
||||
case ${testname} in
|
||||
rusage019 | rusage021)
|
||||
019 | 021)
|
||||
sudo rm /var/log/local6
|
||||
sudo touch /var/log/local6
|
||||
sudo chmod 600 /var/log/local6
|
||||
@@ -175,60 +167,69 @@ case ${testname} in
|
||||
esac
|
||||
|
||||
case ${testname} in
|
||||
rusage019 | rusage021)
|
||||
echo sudo ssh wallaby15 ${install}/sbin/mcstop+release.sh &&
|
||||
echo sudo ssh wallaby15 ${install}/sbin/mcreboot.sh
|
||||
019 | 021)
|
||||
echo sudo ssh wallaby15 ${MCK_DIR}/sbin/mcstop+release.sh &&
|
||||
echo sudo ssh wallaby15 ${MCK_DIR}/sbin/mcreboot.sh
|
||||
read -p "Boot mckernel on wallaby15." ans
|
||||
;;
|
||||
*)
|
||||
;;
|
||||
esac
|
||||
sudo ${install}/sbin/mcstop+release.sh &&
|
||||
sudo ${install}/sbin/mcreboot.sh ${bootopt}
|
||||
sudo ${MCK_DIR}/sbin/mcstop+release.sh &&
|
||||
sudo ${MCK_DIR}/sbin/mcreboot.sh ${bootopt}
|
||||
|
||||
if [ ${kill} == "y" ]; then
|
||||
${install}/bin/mcexec ${mcexecopt} ./${bn} ${testopt} &
|
||||
${MCK_DIR}/bin/mcexec ${mcexecopt} ./${bn} ${testopt} &
|
||||
sleep ${sleepopt}
|
||||
sudo ${install}/sbin/ihkosctl 0 kmsg > ./${testname}.log
|
||||
sudo ${MCK_DIR}/sbin/ihkosctl 0 kmsg > ./${testname}.log
|
||||
pid=`pidof mcexec`
|
||||
if [ "${pid}" != "" ]; then
|
||||
kill -9 ${pid} > /dev/null 2> /dev/null
|
||||
fi
|
||||
else
|
||||
case ${testname} in
|
||||
rusage005)
|
||||
${install}/bin/mcexec ${mcexecopt} ./${bn} ${testopt}
|
||||
005)
|
||||
${MCK_DIR}/bin/mcexec ${mcexecopt} ./${bn_mck} ${testopt}
|
||||
#read -p "Run rdma_wr." ans
|
||||
sudo ${install}/sbin/ihkosctl 0 kmsg > ./${testname}.log
|
||||
sudo ${MCK_DIR}/sbin/ihkosctl 0 kmsg > ./${testname}.log
|
||||
;;
|
||||
rusage019 | rusage021)
|
||||
echo OMP_NUM_THREADS=2 mpiexec -machinefile ./hostfile ${install}/bin/mcexec ${mcexecopt} ./${bn} ${testopt}
|
||||
read -p "Run ${bn} and hit return." ans
|
||||
019 | 021)
|
||||
echo OMP_NUM_THREADS=2 mpiexec -machinefile ./hostfile ${MCK_DIR}/bin/mcexec ${mcexecopt} ./${bn_mck} ${testopt}
|
||||
read -p "Run ${bn_mck} and hit return." ans
|
||||
sleep 1.5
|
||||
sudo cat /var/log/local6 > ./${testname}.log
|
||||
;;
|
||||
rusage100 | rusage101 | rusage102 | rusage103)
|
||||
${install}/bin/mcexec ${mcexecopt} ./${bn} ${testopt} > ./${testname}.log
|
||||
100 | 101 | 102 | 103)
|
||||
${MCK_DIR}/bin/mcexec ${mcexecopt} ./${bn_mck} ${testopt} > ./${testname}.log
|
||||
echo "================================================" >> ./${testname}.log
|
||||
sudo ${install}/sbin/ihkosctl 0 kmsg >> ./${testname}.log
|
||||
sudo ${MCK_DIR}/sbin/ihkosctl 0 kmsg >> ./${testname}.log
|
||||
;;
|
||||
rusage104)
|
||||
${install}/bin/mcexec ${mcexecopt} ./${bn}_mck
|
||||
${install}/bin/mcexec ${mcexecopt} ./${bn}_lin
|
||||
sudo ${install}/sbin/ihkosctl 0 kmsg > ./${testname}.log
|
||||
200)
|
||||
${MCK_DIR}/bin/mcexec ${mcexecopt} ./${bn_mck}
|
||||
${MCK_DIR}/bin/mcexec ${mcexecopt} ./${bn_lin}
|
||||
sudo ${MCK_DIR}/sbin/ihkosctl 0 kmsg > ./${testname}.log
|
||||
grep user ./${testname}.log
|
||||
;;
|
||||
*)
|
||||
${install}/bin/mcexec ${mcexecopt} ./${bn} ${testopt}
|
||||
sudo ${install}/sbin/ihkosctl 0 kmsg > ./${testname}.log
|
||||
${MCK_DIR}/bin/mcexec ${mcexecopt} ./${bn_mck} ${testopt}
|
||||
sudo ${MCK_DIR}/sbin/ihkosctl 0 kmsg > ./${testname}.log
|
||||
esac
|
||||
fi
|
||||
|
||||
|
||||
case ${testname} in
|
||||
rusage100 | rusage101 | rusage102 | rusage103)
|
||||
011 | 012)
|
||||
sudo rmmod xpmem
|
||||
;;
|
||||
*)
|
||||
;;
|
||||
esac
|
||||
|
||||
case ${testname} in
|
||||
100 | 101 | 102 | 103)
|
||||
printf "*** Check the ihk_os_getrusage() result (the first part of ${testname}.log) matches with the syscall #900 result (the second part) \n"
|
||||
;;
|
||||
rusage104)
|
||||
200)
|
||||
printf "*** It behaves as expected when there's no [NG] and "
|
||||
printf "\"All tests finished\" is shown\n"
|
||||
;;
|
||||
@@ -238,4 +239,4 @@ case ${testname} in
|
||||
;;
|
||||
esac
|
||||
|
||||
sudo ${install}/sbin/mcstop+release.sh
|
||||
sudo ${MCK_DIR}/sbin/mcstop+release.sh
|
||||
|
||||
@@ -1,67 +0,0 @@
|
||||
#include <unistd.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <sys/mman.h>
|
||||
#include <string.h>
|
||||
|
||||
#define DEBUG
|
||||
|
||||
#ifdef DEBUG
|
||||
#define dprintf(...) \
|
||||
do { \
|
||||
char msg[1024]; \
|
||||
sprintf(msg, __VA_ARGS__); \
|
||||
fprintf(stderr, "%s,%s", __FUNCTION__, msg); \
|
||||
} while (0);
|
||||
#define eprintf(...) \
|
||||
do { \
|
||||
char msg[1024]; \
|
||||
sprintf(msg, __VA_ARGS__); \
|
||||
fprintf(stderr, "%s,%s", __FUNCTION__, msg); \
|
||||
} while (0);
|
||||
#else
|
||||
#define dprintf(...) do { } while (0)
|
||||
#define eprintf(...) do { } while (0)
|
||||
#endif
|
||||
|
||||
#define CHKANDJUMP(cond, err, ...) \
|
||||
do { \
|
||||
if(cond) { \
|
||||
eprintf(__VA_ARGS__); \
|
||||
ret = err; \
|
||||
goto fn_fail; \
|
||||
} \
|
||||
} while(0)
|
||||
|
||||
int sz_anon[] = {
|
||||
4 * (1ULL<<10),
|
||||
2 * (1ULL<<20),
|
||||
1 * (1ULL<<30),
|
||||
134217728};
|
||||
|
||||
#define SZ_INDEX 0
|
||||
#define NUM_AREAS 1
|
||||
|
||||
int main(int argc, char** argv) {
|
||||
int i;
|
||||
int sz_index;
|
||||
void* anon[NUM_AREAS];
|
||||
int ret = 0;
|
||||
CHKANDJUMP(argc != 2, 255, "%s <sz_index>\n", argv[0]);
|
||||
sz_index = atoi(argv[1]);
|
||||
|
||||
for(i = 0; i < NUM_AREAS; i++) {
|
||||
anon[i] = mmap(0, sz_anon[sz_index], PROT_READ|PROT_WRITE, MAP_ANONYMOUS|MAP_PRIVATE, -1, 0);
|
||||
CHKANDJUMP(anon[i] == MAP_FAILED, 255, "mmap failed\n");
|
||||
*((unsigned long*)anon[i]) = 0x123456789abcdef0;
|
||||
}
|
||||
|
||||
for(i = 0; i < NUM_AREAS; i++) {
|
||||
munmap(anon[i], sz_anon[sz_index]);
|
||||
}
|
||||
|
||||
fn_exit:
|
||||
return ret;
|
||||
fn_fail:
|
||||
goto fn_exit;
|
||||
}
|
||||
@@ -1,72 +0,0 @@
|
||||
#include <unistd.h>
|
||||
#include <stdio.h>
|
||||
#include <sys/mman.h>
|
||||
#include <string.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <fcntl.h>
|
||||
|
||||
#define DEBUG
|
||||
|
||||
#ifdef DEBUG
|
||||
#define dprintf(...) \
|
||||
do { \
|
||||
char msg[1024]; \
|
||||
sprintf(msg, __VA_ARGS__); \
|
||||
fprintf(stderr, "%s,%s", __FUNCTION__, msg); \
|
||||
} while (0);
|
||||
#define eprintf(...) \
|
||||
do { \
|
||||
char msg[1024]; \
|
||||
sprintf(msg, __VA_ARGS__); \
|
||||
fprintf(stderr, "%s,%s", __FUNCTION__, msg); \
|
||||
} while (0);
|
||||
#else
|
||||
#define dprintf(...) do { } while (0)
|
||||
#define eprintf(...) do { } while (0)
|
||||
#endif
|
||||
|
||||
#define CHKANDJUMP(cond, err, ...) \
|
||||
do { \
|
||||
if(cond) { \
|
||||
eprintf(__VA_ARGS__); \
|
||||
ret = err; \
|
||||
goto fn_fail; \
|
||||
} \
|
||||
} while(0)
|
||||
|
||||
int sz_mem[] = {
|
||||
4 * (1ULL<<10),
|
||||
2 * (1ULL<<20),
|
||||
1 * (1ULL<<30),
|
||||
134217728};
|
||||
|
||||
#define SZ_INDEX 0
|
||||
|
||||
int main(int argc, char** argv) {
|
||||
void* mem;
|
||||
int ret = 0;
|
||||
int fd;
|
||||
|
||||
fd = open("./file", O_RDWR);
|
||||
CHKANDJUMP(fd == -1, 255, "open failed\n");
|
||||
|
||||
mem = mmap(0, sz_mem[SZ_INDEX], PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
|
||||
CHKANDJUMP(mem == MAP_FAILED, 255, "mmap failed\n");
|
||||
|
||||
unsigned long val = *((unsigned long*)mem);
|
||||
//memset(mem, 0, sz_mem[SZ_INDEX]);
|
||||
|
||||
*((unsigned long*)mem) = 0x123456789abcdef0;
|
||||
//ret = msync(mem, sz_mem[SZ_INDEX], MS_SYNC);
|
||||
// *((unsigned long*)mem) = 0x123456789abcdef0;
|
||||
|
||||
munmap(mem, sz_mem[SZ_INDEX]);
|
||||
//ret = close(fd);
|
||||
//CHKANDJUMP(ret != 0, 255, "close failed\n");
|
||||
|
||||
fn_exit:
|
||||
return ret;
|
||||
fn_fail:
|
||||
goto fn_exit;
|
||||
}
|
||||
@@ -1,79 +0,0 @@
|
||||
#include <unistd.h>
|
||||
#include <stdio.h>
|
||||
#include <sys/mman.h>
|
||||
#include <string.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <fcntl.h>
|
||||
#include <errno.h>
|
||||
|
||||
#define DEBUG
|
||||
|
||||
#ifdef DEBUG
|
||||
#define dprintf(...) \
|
||||
do { \
|
||||
char msg[1024]; \
|
||||
sprintf(msg, __VA_ARGS__); \
|
||||
fprintf(stderr, "%s,%s", __FUNCTION__, msg); \
|
||||
} while (0);
|
||||
#define eprintf(...) \
|
||||
do { \
|
||||
char msg[1024]; \
|
||||
sprintf(msg, __VA_ARGS__); \
|
||||
fprintf(stderr, "%s,%s", __FUNCTION__, msg); \
|
||||
} while (0);
|
||||
#else
|
||||
#define dprintf(...) do { } while (0)
|
||||
#define eprintf(...) do { } while (0)
|
||||
#endif
|
||||
|
||||
#define CHKANDJUMP(cond, err, ...) \
|
||||
do { \
|
||||
if(cond) { \
|
||||
eprintf(__VA_ARGS__); \
|
||||
ret = err; \
|
||||
goto fn_fail; \
|
||||
} \
|
||||
} while(0)
|
||||
|
||||
int sz_mem[] = {
|
||||
4 * (1ULL<<10),
|
||||
2 * (1ULL<<20),
|
||||
1 * (1ULL<<30),
|
||||
134217728};
|
||||
|
||||
#define SZ_INDEX 0
|
||||
|
||||
int main(int argc, char** argv) {
|
||||
void* mem;
|
||||
int ret = 0;
|
||||
int fd;
|
||||
char fn[256] = "/dev/shm/Intel_MPI";
|
||||
|
||||
fd = open(fn, O_CREAT | O_TRUNC | O_RDWR, S_IRUSR | S_IWUSR);
|
||||
CHKANDJUMP(fd == -1, 255, "shm_open failed,str=%s\n", strerror(errno));
|
||||
|
||||
ret = ftruncate(fd, sz_mem[SZ_INDEX]);
|
||||
CHKANDJUMP(ret != 0, 255, "ftruncate failed\n");
|
||||
|
||||
mem = mmap(0, sz_mem[SZ_INDEX], PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
|
||||
CHKANDJUMP(mem == MAP_FAILED, 255, "mmap failed\n");
|
||||
|
||||
//unsigned long val = *((unsigned long*)mem);
|
||||
//memset(mem, 0, sz_mem[SZ_INDEX]);
|
||||
|
||||
*((unsigned long*)mem) = 0x123456789abcdef0;
|
||||
// ret = msync(mem, sz_mem[SZ_INDEX], MS_SYNC);
|
||||
// *((unsigned long*)mem) = 0x123456789abcdef0;
|
||||
|
||||
munmap(mem, sz_mem[SZ_INDEX]);
|
||||
ret = close(fd);
|
||||
CHKANDJUMP(ret != 0, 255, "close failed\n");
|
||||
ret = unlink(fn);
|
||||
CHKANDJUMP(ret != 0, 255, "shm_unlink failed\n");
|
||||
|
||||
fn_exit:
|
||||
return ret;
|
||||
fn_fail:
|
||||
goto fn_exit;
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
rusage002.c
|
||||
@@ -1,78 +0,0 @@
|
||||
#include <unistd.h>
|
||||
#include <stdio.h>
|
||||
#include <sys/mman.h>
|
||||
#include <string.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <fcntl.h>
|
||||
#include <errno.h>
|
||||
#include <sys/wait.h>
|
||||
|
||||
#define DEBUG
|
||||
|
||||
#ifdef DEBUG
|
||||
#define dprintf(...) \
|
||||
do { \
|
||||
char msg[1024]; \
|
||||
sprintf(msg, __VA_ARGS__); \
|
||||
fprintf(stderr, "%s,%s", __FUNCTION__, msg); \
|
||||
} while (0);
|
||||
#define eprintf(...) \
|
||||
do { \
|
||||
char msg[1024]; \
|
||||
sprintf(msg, __VA_ARGS__); \
|
||||
fprintf(stderr, "%s,%s", __FUNCTION__, msg); \
|
||||
} while (0);
|
||||
#else
|
||||
#define dprintf(...) do { } while (0)
|
||||
#define eprintf(...) do { } while (0)
|
||||
#endif
|
||||
|
||||
#define CHKANDJUMP(cond, err, ...) \
|
||||
do { \
|
||||
if(cond) { \
|
||||
eprintf(__VA_ARGS__); \
|
||||
ret = err; \
|
||||
goto fn_fail; \
|
||||
} \
|
||||
} while(0)
|
||||
|
||||
int sz_mem[] = {
|
||||
4 * (1ULL<<10),
|
||||
2 * (1ULL<<20),
|
||||
1 * (1ULL<<30),
|
||||
134217728};
|
||||
|
||||
#define SZ_INDEX 0
|
||||
#define NUM_AREAS 1
|
||||
|
||||
int main(int argc, char** argv) {
|
||||
void* mem;
|
||||
int ret = 0;
|
||||
pid_t pid;
|
||||
int status;
|
||||
int fd;
|
||||
|
||||
fd = open("./file", O_RDWR);
|
||||
CHKANDJUMP(fd == -1, 255, "open failed\n");
|
||||
|
||||
mem = mmap(0, sz_mem[SZ_INDEX], PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
|
||||
CHKANDJUMP(mem == MAP_FAILED, 255, "mmap failed\n");
|
||||
|
||||
unsigned long val = *((unsigned long*)mem);
|
||||
|
||||
pid = fork();
|
||||
CHKANDJUMP(pid == -1, 255, "fork failed\n");
|
||||
if(pid == 0) {
|
||||
_exit(123);
|
||||
} else {
|
||||
ret = waitpid(pid, &status, 0);
|
||||
CHKANDJUMP(ret == -1, 255, "waitpid failed\n");
|
||||
printf("exit status=%d\n", WEXITSTATUS(status));
|
||||
}
|
||||
|
||||
fn_exit:
|
||||
return ret;
|
||||
fn_fail:
|
||||
goto fn_exit;
|
||||
}
|
||||
@@ -1,85 +0,0 @@
|
||||
#include <unistd.h>
|
||||
#include <stdio.h>
|
||||
#include <sys/mman.h>
|
||||
#include <string.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <fcntl.h>
|
||||
#include <errno.h>
|
||||
#include <sys/wait.h>
|
||||
|
||||
#define DEBUG
|
||||
|
||||
#ifdef DEBUG
|
||||
#define dprintf(...) \
|
||||
do { \
|
||||
char msg[1024]; \
|
||||
sprintf(msg, __VA_ARGS__); \
|
||||
fprintf(stderr, "%s,%s", __FUNCTION__, msg); \
|
||||
} while (0);
|
||||
#define eprintf(...) \
|
||||
do { \
|
||||
char msg[1024]; \
|
||||
sprintf(msg, __VA_ARGS__); \
|
||||
fprintf(stderr, "%s,%s", __FUNCTION__, msg); \
|
||||
} while (0);
|
||||
#else
|
||||
#define dprintf(...) do { } while (0)
|
||||
#define eprintf(...) do { } while (0)
|
||||
#endif
|
||||
|
||||
#define CHKANDJUMP(cond, err, ...) \
|
||||
do { \
|
||||
if(cond) { \
|
||||
eprintf(__VA_ARGS__); \
|
||||
ret = err; \
|
||||
goto fn_fail; \
|
||||
} \
|
||||
} while(0)
|
||||
|
||||
int sz_mem[] = {
|
||||
4 * (1ULL<<10),
|
||||
2 * (1ULL<<20),
|
||||
1 * (1ULL<<30),
|
||||
134217728};
|
||||
|
||||
#define SZ_INDEX 0
|
||||
#define NUM_AREAS 1
|
||||
|
||||
int main(int argc, char** argv) {
|
||||
void* mem;
|
||||
int ret = 0;
|
||||
pid_t pid;
|
||||
int status;
|
||||
int fd;
|
||||
|
||||
char fn[256] = "/dev/shm/Intel_MPI";
|
||||
|
||||
fd = open(fn, O_CREAT | O_TRUNC | O_RDWR, S_IRUSR | S_IWUSR);
|
||||
CHKANDJUMP(fd == -1, 255, "shm_open failed,str=%s\n", strerror(errno));
|
||||
|
||||
ret = ftruncate(fd, sz_mem[SZ_INDEX]);
|
||||
CHKANDJUMP(ret != 0, 255, "ftruncate failed\n");
|
||||
|
||||
mem = mmap(0, sz_mem[SZ_INDEX], PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
|
||||
CHKANDJUMP(mem == MAP_FAILED, 255, "mmap failed\n");
|
||||
|
||||
//unsigned long val = *((unsigned long*)mem);
|
||||
*((unsigned long*)mem) = 0x123456789abcdef0;
|
||||
|
||||
pid = fork();
|
||||
CHKANDJUMP(pid == -1, 255, "fork failed\n");
|
||||
if(pid == 0) {
|
||||
_exit(123);
|
||||
} else {
|
||||
ret = waitpid(pid, &status, 0);
|
||||
CHKANDJUMP(ret == -1, 255, "waitpid failed\n");
|
||||
printf("exit status=%d\n", WEXITSTATUS(status));
|
||||
}
|
||||
|
||||
|
||||
fn_exit:
|
||||
return ret;
|
||||
fn_fail:
|
||||
goto fn_exit;
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
rusage006.c
|
||||
@@ -1,86 +0,0 @@
|
||||
#include <unistd.h>
|
||||
#include <stdio.h>
|
||||
#include <sys/mman.h>
|
||||
#include <string.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <fcntl.h>
|
||||
#include <errno.h>
|
||||
#include <sys/wait.h>
|
||||
|
||||
#define DEBUG
|
||||
|
||||
#ifdef DEBUG
|
||||
#define dprintf(...) \
|
||||
do { \
|
||||
char msg[1024]; \
|
||||
sprintf(msg, __VA_ARGS__); \
|
||||
fprintf(stderr, "%s,%s", __FUNCTION__, msg); \
|
||||
} while (0);
|
||||
#define eprintf(...) \
|
||||
do { \
|
||||
char msg[1024]; \
|
||||
sprintf(msg, __VA_ARGS__); \
|
||||
fprintf(stderr, "%s,%s", __FUNCTION__, msg); \
|
||||
} while (0);
|
||||
#else
|
||||
#define dprintf(...) do { } while (0)
|
||||
#define eprintf(...) do { } while (0)
|
||||
#endif
|
||||
|
||||
#define CHKANDJUMP(cond, err, ...) \
|
||||
do { \
|
||||
if(cond) { \
|
||||
eprintf(__VA_ARGS__); \
|
||||
ret = err; \
|
||||
goto fn_fail; \
|
||||
} \
|
||||
} while(0)
|
||||
|
||||
int sz_mem[] = {
|
||||
4 * (1ULL<<10),
|
||||
2 * (1ULL<<20),
|
||||
1 * (1ULL<<30),
|
||||
134217728};
|
||||
|
||||
#define SZ_INDEX 0
|
||||
#define NUM_AREAS 1
|
||||
|
||||
int main(int argc, char** argv) {
|
||||
void* mem;
|
||||
int ret = 0;
|
||||
pid_t pid;
|
||||
int status;
|
||||
int fd;
|
||||
|
||||
pid = fork();
|
||||
CHKANDJUMP(pid == -1, 255, "fork failed\n");
|
||||
if(pid == 0) {
|
||||
fd = open("./file", O_RDWR);
|
||||
CHKANDJUMP(fd == -1, 255, "open failed\n");
|
||||
|
||||
mem = mmap(0, sz_mem[SZ_INDEX], PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
|
||||
CHKANDJUMP(mem == MAP_FAILED, 255, "mmap failed\n");
|
||||
|
||||
unsigned long val = *((unsigned long*)mem);
|
||||
|
||||
_exit(123);
|
||||
} else {
|
||||
fd = open("./file", O_RDWR);
|
||||
CHKANDJUMP(fd == -1, 255, "open failed\n");
|
||||
|
||||
mem = mmap(0, sz_mem[SZ_INDEX], PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
|
||||
CHKANDJUMP(mem == MAP_FAILED, 255, "mmap failed\n");
|
||||
|
||||
unsigned long val = *((unsigned long*)mem);
|
||||
|
||||
ret = waitpid(pid, &status, 0);
|
||||
CHKANDJUMP(ret == -1, 255, "waitpid failed\n");
|
||||
printf("exit status=%d\n", WEXITSTATUS(status));
|
||||
}
|
||||
|
||||
fn_exit:
|
||||
return ret;
|
||||
fn_fail:
|
||||
goto fn_exit;
|
||||
}
|
||||
@@ -1,97 +0,0 @@
|
||||
#include <unistd.h>
|
||||
#include <stdio.h>
|
||||
#include <sys/mman.h>
|
||||
#include <string.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <fcntl.h>
|
||||
#include <errno.h>
|
||||
#include <sys/wait.h>
|
||||
#include <sys/ipc.h>
|
||||
#include <sys/shm.h>
|
||||
|
||||
#define DEBUG
|
||||
|
||||
#ifdef DEBUG
|
||||
#define dprintf(...) \
|
||||
do { \
|
||||
char msg[1024]; \
|
||||
sprintf(msg, __VA_ARGS__); \
|
||||
fprintf(stderr, "%s,%s", __FUNCTION__, msg); \
|
||||
} while (0);
|
||||
#define eprintf(...) \
|
||||
do { \
|
||||
char msg[1024]; \
|
||||
sprintf(msg, __VA_ARGS__); \
|
||||
fprintf(stderr, "%s,%s", __FUNCTION__, msg); \
|
||||
} while (0);
|
||||
#else
|
||||
#define dprintf(...) do { } while (0)
|
||||
#define eprintf(...) do { } while (0)
|
||||
#endif
|
||||
|
||||
#define CHKANDJUMP(cond, err, ...) \
|
||||
do { \
|
||||
if(cond) { \
|
||||
eprintf(__VA_ARGS__); \
|
||||
ret = err; \
|
||||
goto fn_fail; \
|
||||
} \
|
||||
} while(0)
|
||||
|
||||
int sz_mem[] = {
|
||||
4 * (1ULL<<10),
|
||||
2 * (1ULL<<20),
|
||||
1 * (1ULL<<30),
|
||||
134217728};
|
||||
|
||||
#define SZ_INDEX 0
|
||||
|
||||
int main(int argc, char** argv) {
|
||||
void* mem;
|
||||
int ret = 0;
|
||||
pid_t pid;
|
||||
int status;
|
||||
key_t key = ftok(argv[0], 0);
|
||||
int shmid;
|
||||
|
||||
shmid = shmget(key, sz_mem[SZ_INDEX], IPC_CREAT | 0660);
|
||||
CHKANDJUMP(shmid == -1, 255, "shmget failed: %s\n", strerror(errno));
|
||||
|
||||
pid = fork();
|
||||
CHKANDJUMP(pid == -1, 255, "fork failed\n");
|
||||
if(pid == 0) {
|
||||
mem = shmat(shmid, NULL, 0);
|
||||
CHKANDJUMP(mem == (void*)-1, 255, "shmat failed: %s\n", strerror(errno));
|
||||
|
||||
*((unsigned long*)mem) = 0x1234;
|
||||
|
||||
ret = shmdt(mem);
|
||||
CHKANDJUMP(ret == -1, 255, "shmdt failed\n");
|
||||
|
||||
_exit(123);
|
||||
} else {
|
||||
mem = shmat(shmid, NULL, 0);
|
||||
CHKANDJUMP(mem == (void*)-1, 255, "shmat failed: %s\n", strerror(errno));
|
||||
|
||||
|
||||
ret = waitpid(pid, &status, 0);
|
||||
CHKANDJUMP(ret == -1, 255, "waitpid failed\n");
|
||||
|
||||
printf("%lx\n", *((unsigned long*)mem));
|
||||
|
||||
#if 0
|
||||
struct shmid_ds buf;
|
||||
ret = shmctl(shmid, IPC_RMID, &buf);
|
||||
CHKANDJUMP(ret == -1, 255, "shmctl failed\n");
|
||||
#endif
|
||||
|
||||
ret = shmdt(mem);
|
||||
CHKANDJUMP(ret == -1, 255, "shmdt failed\n");
|
||||
}
|
||||
|
||||
fn_exit:
|
||||
return ret;
|
||||
fn_fail:
|
||||
goto fn_exit;
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
rusage000.c
|
||||
@@ -1,126 +0,0 @@
|
||||
#include <unistd.h>
|
||||
#include <stdio.h>
|
||||
#include <sys/mman.h>
|
||||
#include <string.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <fcntl.h>
|
||||
#include <errno.h>
|
||||
#include <sys/wait.h>
|
||||
#include <sys/ipc.h>
|
||||
#include <sys/shm.h>
|
||||
#include <xpmem.h>
|
||||
|
||||
#define DEBUG
|
||||
|
||||
#ifdef DEBUG
|
||||
#define dprintf(...) \
|
||||
do { \
|
||||
char msg[1024]; \
|
||||
sprintf(msg, __VA_ARGS__); \
|
||||
fprintf(stderr, "%s,%s", __FUNCTION__, msg); \
|
||||
} while (0);
|
||||
#define eprintf(...) \
|
||||
do { \
|
||||
char msg[1024]; \
|
||||
sprintf(msg, __VA_ARGS__); \
|
||||
fprintf(stderr, "%s,%s", __FUNCTION__, msg); \
|
||||
} while (0);
|
||||
#else
|
||||
#define dprintf(...) do { } while (0)
|
||||
#define eprintf(...) do { } while (0)
|
||||
#endif
|
||||
|
||||
#define CHKANDJUMP(cond, err, ...) \
|
||||
do { \
|
||||
if(cond) { \
|
||||
eprintf(__VA_ARGS__); \
|
||||
ret = err; \
|
||||
goto fn_fail; \
|
||||
} \
|
||||
} while(0)
|
||||
|
||||
int sz_mem[] = {
|
||||
4 * (1ULL<<10),
|
||||
2 * (1ULL<<20),
|
||||
1 * (1ULL<<30),
|
||||
134217728};
|
||||
|
||||
#define SZ_INDEX 0
|
||||
|
||||
int main(int argc, char** argv) {
|
||||
void* mem;
|
||||
int ret = 0;
|
||||
pid_t pid;
|
||||
int status;
|
||||
key_t key = ftok(argv[0], 0);
|
||||
int shmid;
|
||||
xpmem_segid_t segid;
|
||||
|
||||
shmid = shmget(key, sz_mem[SZ_INDEX], IPC_CREAT | 0660);
|
||||
CHKANDJUMP(shmid == -1, 255, "shmget failed: %s\n", strerror(errno));
|
||||
|
||||
mem = mmap(0, sz_mem[SZ_INDEX], PROT_READ|PROT_WRITE, MAP_ANONYMOUS|MAP_PRIVATE, -1, 0);
|
||||
CHKANDJUMP(mem == MAP_FAILED, 255, "mmap failed\n");
|
||||
memset(mem, 0, sz_mem[SZ_INDEX]);
|
||||
|
||||
pid = fork();
|
||||
CHKANDJUMP(pid == -1, 255, "fork failed\n");
|
||||
if(pid == 0) {
|
||||
void *shm = shmat(shmid, NULL, 0);
|
||||
CHKANDJUMP(shm == (void*)-1, 255, "shmat failed: %s\n", strerror(errno));
|
||||
|
||||
while((segid = *(xpmem_segid_t*)shm) == 0) { };
|
||||
|
||||
ret = shmdt(shm);
|
||||
CHKANDJUMP(ret == -1, 255, "shmdt failed\n");
|
||||
|
||||
ret = xpmem_init();
|
||||
CHKANDJUMP(ret != 0, 255, "xpmem_init failed: %s\n", strerror(errno));
|
||||
|
||||
xpmem_apid_t apid = xpmem_get(segid, XPMEM_RDWR, XPMEM_PERMIT_MODE, NULL);
|
||||
CHKANDJUMP(apid == -1, 255, "xpmem_get failed: %s\n", strerror(errno));
|
||||
|
||||
struct xpmem_addr addr = { .apid = apid, .offset = 0 };
|
||||
void* attach = xpmem_attach(addr, sz_mem[SZ_INDEX], NULL);
|
||||
CHKANDJUMP(attach == (void*)-1, 255, "xpmem_attach failed: %s\n", strerror(errno));
|
||||
|
||||
*((unsigned long*)attach) = 0x1234;
|
||||
|
||||
ret = xpmem_detach(attach);
|
||||
CHKANDJUMP(ret == -1, 255, "xpmem_detach failed\n");
|
||||
|
||||
_exit(123);
|
||||
} else {
|
||||
void *shm = shmat(shmid, NULL, 0);
|
||||
CHKANDJUMP(mem == (void*)-1, 255, "shmat failed: %s\n", strerror(errno));
|
||||
|
||||
ret = xpmem_init();
|
||||
CHKANDJUMP(ret != 0, 255, "xpmem_init failed: %s\n", strerror(errno));
|
||||
|
||||
segid = xpmem_make(mem, sz_mem[SZ_INDEX], XPMEM_PERMIT_MODE, (void*)0666);
|
||||
CHKANDJUMP(segid == -1, 255, "xpmem_ioctl failed: %s\n", strerror(errno));
|
||||
|
||||
*(xpmem_segid_t*)shm = segid;
|
||||
|
||||
ret = waitpid(pid, &status, 0);
|
||||
CHKANDJUMP(ret == -1, 255, "waitpid failed\n");
|
||||
|
||||
printf("%lx\n", *((unsigned long*)mem));
|
||||
|
||||
struct shmid_ds buf;
|
||||
ret = shmctl(shmid, IPC_RMID, &buf);
|
||||
CHKANDJUMP(ret == -1, 255, "shmctl failed\n");
|
||||
|
||||
ret = shmdt(shm);
|
||||
CHKANDJUMP(ret == -1, 255, "shmdt failed\n");
|
||||
|
||||
ret = xpmem_remove(segid);
|
||||
CHKANDJUMP(ret == -1, 255, "xpmem_remove failed\n");
|
||||
}
|
||||
|
||||
fn_exit:
|
||||
return ret;
|
||||
fn_fail:
|
||||
goto fn_exit;
|
||||
}
|
||||
@@ -1,98 +0,0 @@
|
||||
#include <unistd.h>
|
||||
#include <stdio.h>
|
||||
#include <sys/mman.h>
|
||||
#include <string.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <fcntl.h>
|
||||
#include <errno.h>
|
||||
#include <sys/wait.h>
|
||||
#include <sys/ipc.h>
|
||||
#include <sys/shm.h>
|
||||
#include <xpmem.h>
|
||||
|
||||
#define DEBUG
|
||||
|
||||
#ifdef DEBUG
|
||||
#define dprintf(...) \
|
||||
do { \
|
||||
char msg[1024]; \
|
||||
sprintf(msg, __VA_ARGS__); \
|
||||
fprintf(stderr, "%s,%s", __FUNCTION__, msg); \
|
||||
} while (0);
|
||||
#define eprintf(...) \
|
||||
do { \
|
||||
char msg[1024]; \
|
||||
sprintf(msg, __VA_ARGS__); \
|
||||
fprintf(stderr, "%s,%s", __FUNCTION__, msg); \
|
||||
} while (0);
|
||||
#else
|
||||
#define dprintf(...) do { } while (0)
|
||||
#define eprintf(...) do { } while (0)
|
||||
#endif
|
||||
|
||||
#define CHKANDJUMP(cond, err, ...) \
|
||||
do { \
|
||||
if(cond) { \
|
||||
eprintf(__VA_ARGS__); \
|
||||
ret = err; \
|
||||
goto fn_fail; \
|
||||
} \
|
||||
} while(0)
|
||||
|
||||
int sz_mem[] = {
|
||||
4 * (1ULL<<10),
|
||||
2 * (1ULL<<20),
|
||||
1 * (1ULL<<30),
|
||||
134217728};
|
||||
|
||||
#define SZ_INDEX 0
|
||||
|
||||
int main(int argc, char** argv) {
|
||||
void* mem;
|
||||
int ret = 0;
|
||||
pid_t pid;
|
||||
int status;
|
||||
xpmem_segid_t segid;
|
||||
|
||||
mem = mmap(0, sz_mem[SZ_INDEX], PROT_READ|PROT_WRITE, MAP_ANONYMOUS|MAP_PRIVATE, -1, 0);
|
||||
CHKANDJUMP(mem == MAP_FAILED, 255, "mmap failed\n");
|
||||
memset(mem, 0, sz_mem[SZ_INDEX]);
|
||||
|
||||
ret = xpmem_init();
|
||||
CHKANDJUMP(ret != 0, 255, "xpmem_init failed: %s\n", strerror(errno));
|
||||
|
||||
segid = xpmem_make(mem, sz_mem[SZ_INDEX], XPMEM_PERMIT_MODE, (void*)0666);
|
||||
CHKANDJUMP(segid == -1, 255, "xpmem_ioctl failed: %s\n", strerror(errno));
|
||||
|
||||
pid = fork();
|
||||
CHKANDJUMP(pid == -1, 255, "fork failed\n");
|
||||
if(pid == 0) {
|
||||
xpmem_apid_t apid = xpmem_get(segid, XPMEM_RDWR, XPMEM_PERMIT_MODE, NULL);
|
||||
CHKANDJUMP(apid == -1, 255, "xpmem_get failed: %s\n", strerror(errno));
|
||||
|
||||
struct xpmem_addr addr = { .apid = apid, .offset = 0 };
|
||||
void* attach = xpmem_attach(addr, sz_mem[SZ_INDEX], NULL);
|
||||
CHKANDJUMP(attach == (void*)-1, 255, "xpmem_attach failed: %s\n", strerror(errno));
|
||||
|
||||
*((unsigned long*)attach) = 0x1234;
|
||||
|
||||
ret = xpmem_detach(attach);
|
||||
CHKANDJUMP(ret == -1, 255, "xpmem_detach failed\n");
|
||||
|
||||
_exit(123);
|
||||
} else {
|
||||
ret = waitpid(pid, &status, 0);
|
||||
CHKANDJUMP(ret == -1, 255, "waitpid failed\n");
|
||||
|
||||
printf("%lx\n", *((unsigned long*)mem));
|
||||
|
||||
ret = xpmem_remove(segid);
|
||||
CHKANDJUMP(ret == -1, 255, "xpmem_remove failed\n");
|
||||
}
|
||||
|
||||
fn_exit:
|
||||
return ret;
|
||||
fn_fail:
|
||||
goto fn_exit;
|
||||
}
|
||||
@@ -1,72 +0,0 @@
|
||||
#include <unistd.h>
|
||||
#include <stdio.h>
|
||||
#include <sys/mman.h>
|
||||
#include <string.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <fcntl.h>
|
||||
|
||||
#define DEBUG
|
||||
|
||||
#ifdef DEBUG
|
||||
#define dprintf(...) \
|
||||
do { \
|
||||
char msg[1024]; \
|
||||
sprintf(msg, __VA_ARGS__); \
|
||||
fprintf(stderr, "%s,%s", __FUNCTION__, msg); \
|
||||
} while (0);
|
||||
#define eprintf(...) \
|
||||
do { \
|
||||
char msg[1024]; \
|
||||
sprintf(msg, __VA_ARGS__); \
|
||||
fprintf(stderr, "%s,%s", __FUNCTION__, msg); \
|
||||
} while (0);
|
||||
#else
|
||||
#define dprintf(...) do { } while (0)
|
||||
#define eprintf(...) do { } while (0)
|
||||
#endif
|
||||
|
||||
#define CHKANDJUMP(cond, err, ...) \
|
||||
do { \
|
||||
if(cond) { \
|
||||
eprintf(__VA_ARGS__); \
|
||||
ret = err; \
|
||||
goto fn_fail; \
|
||||
} \
|
||||
} while(0)
|
||||
|
||||
int sz_mem[] = {
|
||||
4 * (1ULL<<10),
|
||||
2 * (1ULL<<20),
|
||||
1 * (1ULL<<30),
|
||||
134217728};
|
||||
|
||||
#define SZ_INDEX 0
|
||||
|
||||
int main(int argc, char** argv) {
|
||||
void* mem;
|
||||
int ret = 0;
|
||||
int fd;
|
||||
|
||||
fd = open("./file", O_RDWR);
|
||||
CHKANDJUMP(fd == -1, 255, "open failed\n");
|
||||
|
||||
mem = mmap(0, sz_mem[SZ_INDEX], PROT_READ|PROT_WRITE, MAP_PRIVATE, fd, 0);
|
||||
CHKANDJUMP(mem == MAP_FAILED, 255, "mmap failed\n");
|
||||
|
||||
//unsigned long val = *((unsigned long*)mem);
|
||||
//memset(mem, 0, sz_mem[SZ_INDEX]);
|
||||
|
||||
*((unsigned long*)mem) = 0x123456789abcdef0;
|
||||
//ret = msync(mem, sz_mem[SZ_INDEX], MS_SYNC);
|
||||
// *((unsigned long*)mem) = 0x123456789abcdef0;
|
||||
|
||||
munmap(mem, sz_mem[SZ_INDEX]);
|
||||
//ret = close(fd);
|
||||
//CHKANDJUMP(ret != 0, 255, "close failed\n");
|
||||
|
||||
fn_exit:
|
||||
return ret;
|
||||
fn_fail:
|
||||
goto fn_exit;
|
||||
}
|
||||
@@ -1,71 +0,0 @@
|
||||
#include <unistd.h>
|
||||
#include <stdio.h>
|
||||
#include <sys/mman.h>
|
||||
#include <string.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <fcntl.h>
|
||||
|
||||
#define DEBUG
|
||||
|
||||
#ifdef DEBUG
|
||||
#define dprintf(...) \
|
||||
do { \
|
||||
char msg[1024]; \
|
||||
sprintf(msg, __VA_ARGS__); \
|
||||
fprintf(stderr, "%s,%s", __FUNCTION__, msg); \
|
||||
} while (0);
|
||||
#define eprintf(...) \
|
||||
do { \
|
||||
char msg[1024]; \
|
||||
sprintf(msg, __VA_ARGS__); \
|
||||
fprintf(stderr, "%s,%s", __FUNCTION__, msg); \
|
||||
} while (0);
|
||||
#else
|
||||
#define dprintf(...) do { } while (0)
|
||||
#define eprintf(...) do { } while (0)
|
||||
#endif
|
||||
|
||||
#define CHKANDJUMP(cond, err, ...) \
|
||||
do { \
|
||||
if(cond) { \
|
||||
eprintf(__VA_ARGS__); \
|
||||
ret = err; \
|
||||
goto fn_fail; \
|
||||
} \
|
||||
} while(0)
|
||||
|
||||
int sz_unit[] = {
|
||||
4 * (1ULL<<10),
|
||||
2 * (1ULL<<20),
|
||||
1 * (1ULL<<30)};
|
||||
|
||||
#define SZ_INDEX 0
|
||||
|
||||
int main(int argc, char** argv) {
|
||||
void* mem;
|
||||
int ret = 0;
|
||||
int fd;
|
||||
|
||||
fd = open("./file", O_RDWR);
|
||||
CHKANDJUMP(fd == -1, 255, "open failed\n");
|
||||
|
||||
mem = mmap(0, 2 * sz_unit[SZ_INDEX], PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
|
||||
CHKANDJUMP(mem == MAP_FAILED, 255, "mmap failed\n");
|
||||
|
||||
ret = remap_file_pages(mem + 0 * sz_unit[SZ_INDEX], sz_unit[SZ_INDEX], 0, 1, MAP_SHARED);
|
||||
CHKANDJUMP(ret != 0, 255, "remap_file_pages failed\n");
|
||||
|
||||
ret = remap_file_pages(mem + 1 * sz_unit[SZ_INDEX], sz_unit[SZ_INDEX], 0, 0, MAP_SHARED);
|
||||
CHKANDJUMP(ret != 0, 255, "remap_file_pages failed\n");
|
||||
|
||||
*((unsigned long*)mem) = 0x123456789abcdef0;
|
||||
*(unsigned long*)((char*)mem + 1 * sz_unit[SZ_INDEX]) = 0x123456789abcdef0;
|
||||
|
||||
munmap(mem, 2 * sz_unit[SZ_INDEX]);
|
||||
|
||||
fn_exit:
|
||||
return ret;
|
||||
fn_fail:
|
||||
goto fn_exit;
|
||||
}
|
||||
@@ -1,74 +0,0 @@
|
||||
#include <unistd.h>
|
||||
#include <stdio.h>
|
||||
#include <sys/mman.h>
|
||||
#include <string.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <fcntl.h>
|
||||
|
||||
#define DEBUG
|
||||
|
||||
#ifdef DEBUG
|
||||
#define dprintf(...) \
|
||||
do { \
|
||||
char msg[1024]; \
|
||||
sprintf(msg, __VA_ARGS__); \
|
||||
fprintf(stderr, "%s,%s", __FUNCTION__, msg); \
|
||||
} while (0);
|
||||
#define eprintf(...) \
|
||||
do { \
|
||||
char msg[1024]; \
|
||||
sprintf(msg, __VA_ARGS__); \
|
||||
fprintf(stderr, "%s,%s", __FUNCTION__, msg); \
|
||||
} while (0);
|
||||
#else
|
||||
#define dprintf(...) do { } while (0)
|
||||
#define eprintf(...) do { } while (0)
|
||||
#endif
|
||||
|
||||
#define CHKANDJUMP(cond, err, ...) \
|
||||
do { \
|
||||
if(cond) { \
|
||||
eprintf(__VA_ARGS__); \
|
||||
ret = err; \
|
||||
goto fn_fail; \
|
||||
} \
|
||||
} while(0)
|
||||
|
||||
int sz_unit[] = {
|
||||
4 * (1ULL<<10),
|
||||
2 * (1ULL<<20),
|
||||
1 * (1ULL<<30)};
|
||||
|
||||
#define SZ_INDEX 0
|
||||
|
||||
int main(int argc, char** argv) {
|
||||
void* mem;
|
||||
int ret = 0;
|
||||
int fd;
|
||||
|
||||
fd = open("./file", O_RDWR);
|
||||
CHKANDJUMP(fd == -1, 255, "open failed\n");
|
||||
|
||||
mem = mmap(0, 2 * sz_unit[SZ_INDEX], PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
|
||||
CHKANDJUMP(mem == MAP_FAILED, 255, "mmap failed\n");
|
||||
|
||||
*((unsigned long*)mem) = 0x123456789abcdef0;
|
||||
*(unsigned long*)((char*)mem + 1 * sz_unit[SZ_INDEX]) = 0xbeefbeefbeefbeef;
|
||||
|
||||
ret = remap_file_pages(mem + 0 * sz_unit[SZ_INDEX], sz_unit[SZ_INDEX], 0, 1, MAP_SHARED);
|
||||
CHKANDJUMP(ret != 0, 255, "remap_file_pages failed\n");
|
||||
|
||||
ret = remap_file_pages(mem + 1 * sz_unit[SZ_INDEX], sz_unit[SZ_INDEX], 0, 0, MAP_SHARED);
|
||||
CHKANDJUMP(ret != 0, 255, "remap_file_pages failed\n");
|
||||
|
||||
*((unsigned long*)mem) = 0x123456789abcdef0;
|
||||
*(unsigned long*)((char*)mem + 1 * sz_unit[SZ_INDEX]) = 0xbeefbeefbeefbeef;
|
||||
|
||||
munmap(mem, 2 * sz_unit[SZ_INDEX]);
|
||||
|
||||
fn_exit:
|
||||
return ret;
|
||||
fn_fail:
|
||||
goto fn_exit;
|
||||
}
|
||||
@@ -1,67 +0,0 @@
|
||||
#define _GNU_SOURCE /* See feature_test_macros(7) */
|
||||
|
||||
#include <unistd.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <sys/mman.h>
|
||||
#include <string.h>
|
||||
|
||||
#define DEBUG
|
||||
|
||||
#ifdef DEBUG
|
||||
#define dprintf(...) \
|
||||
do { \
|
||||
char msg[1024]; \
|
||||
sprintf(msg, __VA_ARGS__); \
|
||||
fprintf(stderr, "%s,%s", __FUNCTION__, msg); \
|
||||
} while (0);
|
||||
#define eprintf(...) \
|
||||
do { \
|
||||
char msg[1024]; \
|
||||
sprintf(msg, __VA_ARGS__); \
|
||||
fprintf(stderr, "%s,%s", __FUNCTION__, msg); \
|
||||
} while (0);
|
||||
#else
|
||||
#define dprintf(...) do { } while (0)
|
||||
#define eprintf(...) do { } while (0)
|
||||
#endif
|
||||
|
||||
#define CHKANDJUMP(cond, err, ...) \
|
||||
do { \
|
||||
if(cond) { \
|
||||
eprintf(__VA_ARGS__); \
|
||||
ret = err; \
|
||||
goto fn_fail; \
|
||||
} \
|
||||
} while(0)
|
||||
|
||||
int sz_anon[] = {
|
||||
4 * (1ULL<<10),
|
||||
2 * (1ULL<<20),
|
||||
1 * (1ULL<<30),
|
||||
134217728};
|
||||
|
||||
#define SZ_INDEX 0
|
||||
#define NUM_AREAS 1
|
||||
|
||||
int main(int argc, char** argv) {
|
||||
int i;
|
||||
void* mem;
|
||||
void* newmem;
|
||||
int ret = 0;
|
||||
|
||||
mem = mmap(0, sz_anon[SZ_INDEX], PROT_READ|PROT_WRITE, MAP_ANONYMOUS|MAP_PRIVATE, -1, 0);
|
||||
CHKANDJUMP(mem == MAP_FAILED, 255, "mmap failed\n");
|
||||
*((unsigned long*)mem) = 0x123456789abcdef0;
|
||||
|
||||
newmem = mremap(mem, sz_anon[SZ_INDEX], sz_anon[SZ_INDEX + 1], MREMAP_MAYMOVE);
|
||||
CHKANDJUMP(newmem == MAP_FAILED, 255, "mmap failed\n");
|
||||
*((unsigned long*)mem) = 0xbeefbeefbeefbeef;
|
||||
|
||||
munmap(newmem, sz_anon[SZ_INDEX + 1]);
|
||||
|
||||
fn_exit:
|
||||
return ret;
|
||||
fn_fail:
|
||||
goto fn_exit;
|
||||
}
|
||||
@@ -1,76 +0,0 @@
|
||||
#define _GNU_SOURCE /* See feature_test_macros(7) */
|
||||
|
||||
#include <unistd.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <sys/mman.h>
|
||||
#include <string.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <fcntl.h>
|
||||
|
||||
#define DEBUG
|
||||
|
||||
#ifdef DEBUG
|
||||
#define dprintf(...) \
|
||||
do { \
|
||||
char msg[1024]; \
|
||||
sprintf(msg, __VA_ARGS__); \
|
||||
fprintf(stderr, "%s,%s", __FUNCTION__, msg); \
|
||||
} while (0);
|
||||
#define eprintf(...) \
|
||||
do { \
|
||||
char msg[1024]; \
|
||||
sprintf(msg, __VA_ARGS__); \
|
||||
fprintf(stderr, "%s,%s", __FUNCTION__, msg); \
|
||||
} while (0);
|
||||
#else
|
||||
#define dprintf(...) do { } while (0)
|
||||
#define eprintf(...) do { } while (0)
|
||||
#endif
|
||||
|
||||
#define CHKANDJUMP(cond, err, ...) \
|
||||
do { \
|
||||
if(cond) { \
|
||||
eprintf(__VA_ARGS__); \
|
||||
ret = err; \
|
||||
goto fn_fail; \
|
||||
} \
|
||||
} while(0)
|
||||
|
||||
int sz_mem[] = {
|
||||
4 * (1ULL<<10),
|
||||
2 * (1ULL<<20),
|
||||
1 * (1ULL<<30),
|
||||
134217728};
|
||||
|
||||
#define SZ_INDEX 0
|
||||
#define NUM_AREAS 1
|
||||
|
||||
int main(int argc, char** argv) {
|
||||
int i;
|
||||
void* mem;
|
||||
void* newmem;
|
||||
int ret = 0;
|
||||
int fd;
|
||||
|
||||
fd = open("./file", O_RDWR);
|
||||
CHKANDJUMP(fd == -1, 255, "open failed\n");
|
||||
|
||||
mem = mmap(0, 3 * sz_mem[SZ_INDEX], PROT_READ | PROT_WRITE, MAP_PRIVATE, fd, 0);
|
||||
CHKANDJUMP(mem == MAP_FAILED, 255, "mmap failed\n");
|
||||
|
||||
*(unsigned long*)((char*)mem + 0) = 0x123456789abcdef0;
|
||||
*(unsigned long*)((char*)mem + sz_mem[SZ_INDEX]) = 0xbeefbeefbeefbeef;
|
||||
*(unsigned long*)((char*)mem + 2 * sz_mem[SZ_INDEX]) = 0xbeefbeefbeefbeef;
|
||||
|
||||
ret = mprotect(mem + sz_mem[SZ_INDEX], sz_mem[SZ_INDEX], PROT_READ | PROT_EXEC);
|
||||
CHKANDJUMP(ret != 0, 255, "mprotect failed\n");
|
||||
|
||||
munmap(mem, 3 * sz_mem[SZ_INDEX]);
|
||||
|
||||
fn_exit:
|
||||
return ret;
|
||||
fn_fail:
|
||||
goto fn_exit;
|
||||
}
|
||||
@@ -1,73 +0,0 @@
|
||||
#define _GNU_SOURCE /* See feature_test_macros(7) */
|
||||
|
||||
#include <unistd.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <sys/mman.h>
|
||||
#include <string.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <fcntl.h>
|
||||
|
||||
#define DEBUG
|
||||
|
||||
#ifdef DEBUG
|
||||
#define dprintf(...) \
|
||||
do { \
|
||||
char msg[1024]; \
|
||||
sprintf(msg, __VA_ARGS__); \
|
||||
fprintf(stderr, "%s,%s", __FUNCTION__, msg); \
|
||||
} while (0);
|
||||
#define eprintf(...) \
|
||||
do { \
|
||||
char msg[1024]; \
|
||||
sprintf(msg, __VA_ARGS__); \
|
||||
fprintf(stderr, "%s,%s", __FUNCTION__, msg); \
|
||||
} while (0);
|
||||
#else
|
||||
#define dprintf(...) do { } while (0)
|
||||
#define eprintf(...) do { } while (0)
|
||||
#endif
|
||||
|
||||
#define CHKANDJUMP(cond, err, ...) \
|
||||
do { \
|
||||
if(cond) { \
|
||||
eprintf(__VA_ARGS__); \
|
||||
ret = err; \
|
||||
goto fn_fail; \
|
||||
} \
|
||||
} while(0)
|
||||
|
||||
int sz_mem[] = {
|
||||
4 * (1ULL<<10),
|
||||
2 * (1ULL<<20),
|
||||
1 * (1ULL<<30),
|
||||
134217728};
|
||||
|
||||
#define SZ_INDEX 1
|
||||
#define NUM_AREAS 1
|
||||
|
||||
int main(int argc, char** argv) {
|
||||
int i;
|
||||
void* mem;
|
||||
void* newmem;
|
||||
int ret = 0;
|
||||
int fd;
|
||||
|
||||
mem = mmap(0, 3 * sz_mem[SZ_INDEX], PROT_READ | PROT_WRITE, MAP_ANONYMOUS | MAP_PRIVATE, -1, 0);
|
||||
CHKANDJUMP(mem == MAP_FAILED, 255, "mmap failed\n");
|
||||
|
||||
*(unsigned long*)((char*)mem + 0) = 0x123456789abcdef0;
|
||||
*(unsigned long*)((char*)mem + sz_mem[SZ_INDEX]) = 0xbeefbeefbeefbeef;
|
||||
*(unsigned long*)((char*)mem + 2 * sz_mem[SZ_INDEX]) = 0xbeefbeefbeefbeef;
|
||||
|
||||
ret = mprotect(mem + sz_mem[SZ_INDEX - 1], sz_mem[SZ_INDEX - 1], PROT_READ | PROT_EXEC);
|
||||
CHKANDJUMP(ret != 0, 255, "mprotect failed\n");
|
||||
|
||||
munmap(mem, 3 * sz_mem[SZ_INDEX]);
|
||||
|
||||
fn_exit:
|
||||
return ret;
|
||||
fn_fail:
|
||||
goto fn_exit;
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
rusage000.c
|
||||
@@ -1 +0,0 @@
|
||||
rusage000.c
|
||||
@@ -1,81 +0,0 @@
|
||||
#include <stdio.h>
|
||||
#include <sys/mman.h>
|
||||
#include <unistd.h>
|
||||
#include <sys/syscall.h> /* For SYS_xxx definitions */
|
||||
#include "ihklib.h"
|
||||
#include "mckernel/ihklib_rusage.h"
|
||||
|
||||
#define DEBUG
|
||||
|
||||
#ifdef DEBUG
|
||||
#define dprintf(...) \
|
||||
do { \
|
||||
char msg[1024]; \
|
||||
sprintf(msg, __VA_ARGS__); \
|
||||
fprintf(stderr, "%s,%s", __FUNCTION__, msg); \
|
||||
} while (0);
|
||||
#else
|
||||
#define dprintf(...) do { } while (0)
|
||||
#endif
|
||||
|
||||
#define CHKANDJUMP(cond, err, ...) \
|
||||
do { \
|
||||
if(cond) { \
|
||||
dprintf(__VA_ARGS__); \
|
||||
ret = err; \
|
||||
goto fn_fail; \
|
||||
} \
|
||||
} while(0)
|
||||
|
||||
int sz_anon[] = {
|
||||
4 * (1ULL<<10),
|
||||
2 * (1ULL<<20),
|
||||
1 * (1ULL<<30),
|
||||
134217728};
|
||||
|
||||
#define SZ_INDEX 0
|
||||
#define NLOOP 2
|
||||
|
||||
int main(int argc, char** argv) {
|
||||
int i, j, ret = 0, ret_ihklib;
|
||||
void* mem;
|
||||
struct mckernel_rusage rusage;
|
||||
|
||||
for (j = 0; j < NLOOP; j++) {
|
||||
mem = mmap(0, sz_anon[SZ_INDEX], PROT_READ|PROT_WRITE, MAP_ANONYMOUS|MAP_PRIVATE, -1, 0);
|
||||
CHKANDJUMP(mem == MAP_FAILED, 255, "mmap failed\n");
|
||||
*((unsigned long*)mem) = 0x123456789abcdef0;
|
||||
|
||||
ret = syscall(900);
|
||||
CHKANDJUMP(ret != 0, 255, "syscall failed\n");
|
||||
|
||||
ret = ihk_os_getrusage(0, &rusage, sizeof(rusage));
|
||||
CHKANDJUMP(ret != 0, 255, "ihk_os_getrusage failed\n");
|
||||
|
||||
for (i = 0; i < IHK_MAX_NUM_PGSIZES; i++) {
|
||||
printf("memory_stat_rss[%d]=%ld\n", i, rusage.memory_stat_rss[i]);
|
||||
printf("memory_stat_mapped_file[%d]=%ld\n", i, rusage.memory_stat_mapped_file[i]);
|
||||
}
|
||||
printf("memory_max_usage=%ld\n", rusage.memory_max_usage);
|
||||
printf("memory_kmem_usage=%ld\n", rusage.memory_kmem_usage);
|
||||
printf("memory_kmem_max_usage=%ld\n", rusage.memory_kmem_max_usage);
|
||||
#define NUM_NUMA_NODES 2
|
||||
for (i = 0; i < NUM_NUMA_NODES; i++) {
|
||||
printf("memory_numa_stat[%d]=%ld\n", i, rusage.memory_numa_stat[i]);
|
||||
}
|
||||
#define NUM_CPUS 2
|
||||
for (i = 0; i < NUM_CPUS; i++) {
|
||||
printf("cpuacct_usage_percpu[%d]=%ld\n", i, rusage.cpuacct_usage_percpu[i]);
|
||||
}
|
||||
printf("cpuacct_stat_system=%ld\n", rusage.cpuacct_stat_system);
|
||||
printf("cpuacct_stat_user=%ld\n", rusage.cpuacct_stat_user);
|
||||
printf("cpuacct_usage=%ld\n", rusage.cpuacct_usage);
|
||||
|
||||
printf("num_threads=%d\n", rusage.num_threads);
|
||||
printf("max_num_threads=%d\n", rusage.max_num_threads);
|
||||
}
|
||||
fn_exit:
|
||||
return ret;
|
||||
fn_fail:
|
||||
goto fn_exit;
|
||||
}
|
||||
@@ -1,93 +0,0 @@
|
||||
#include <stdio.h>
|
||||
#include <sys/mman.h>
|
||||
#include <unistd.h>
|
||||
#include <sys/syscall.h> /* For SYS_xxx definitions */
|
||||
#include "ihklib.h"
|
||||
#include "mckernel/ihklib_rusage.h"
|
||||
|
||||
#define DEBUG
|
||||
|
||||
#ifdef DEBUG
|
||||
#define dprintf(...) \
|
||||
do { \
|
||||
char msg[1024]; \
|
||||
sprintf(msg, __VA_ARGS__); \
|
||||
fprintf(stderr, "%s,%s", __FUNCTION__, msg); \
|
||||
} while (0);
|
||||
#else
|
||||
#define dprintf(...) do { } while (0)
|
||||
#endif
|
||||
|
||||
#define CHKANDJUMP(cond, err, ...) \
|
||||
do { \
|
||||
if(cond) { \
|
||||
dprintf(__VA_ARGS__); \
|
||||
ret = err; \
|
||||
goto fn_fail; \
|
||||
} \
|
||||
} while(0)
|
||||
|
||||
int sz_anon[] = {
|
||||
4 * (1ULL<<10),
|
||||
2 * (1ULL<<20),
|
||||
1 * (1ULL<<30),
|
||||
134217728};
|
||||
|
||||
#define SZ_INDEX 0
|
||||
#define NLOOP 2
|
||||
|
||||
int main(int argc, char** argv) {
|
||||
int i, j, ret = 0, ret_ihklib;
|
||||
void* mem;
|
||||
struct mckernel_rusage rusage;
|
||||
pid_t pid;
|
||||
int status;
|
||||
|
||||
pid = fork();
|
||||
CHKANDJUMP(pid == -1, 255, "fork failed");
|
||||
if (pid == 0) {
|
||||
|
||||
for (j = 0; j < NLOOP; j++) {
|
||||
mem = mmap(0, sz_anon[SZ_INDEX], PROT_READ|PROT_WRITE, MAP_ANONYMOUS|MAP_PRIVATE, -1, 0);
|
||||
CHKANDJUMP(mem == MAP_FAILED, 255, "mmap failed\n");
|
||||
*((unsigned long*)mem) = 0x123456789abcdef0;
|
||||
|
||||
ret = syscall(900);
|
||||
CHKANDJUMP(ret != 0, 255, "syscall failed\n");
|
||||
|
||||
ret = ihk_os_getrusage(0, &rusage, sizeof(rusage));
|
||||
CHKANDJUMP(ret != 0, 255, "ihk_os_getrusage failed\n");
|
||||
|
||||
for (i = 0; i < IHK_MAX_NUM_PGSIZES; i++) {
|
||||
printf("memory_stat_rss[%d]=%ld\n", i, rusage.memory_stat_rss[i]);
|
||||
printf("memory_stat_mapped_file[%d]=%ld\n", i, rusage.memory_stat_mapped_file[i]);
|
||||
}
|
||||
printf("memory_max_usage=%ld\n", rusage.memory_max_usage);
|
||||
printf("memory_kmem_usage=%ld\n", rusage.memory_kmem_usage);
|
||||
printf("memory_kmem_max_usage=%ld\n", rusage.memory_kmem_max_usage);
|
||||
#define NUM_NUMA_NODES 2
|
||||
for (i = 0; i < NUM_NUMA_NODES; i++) {
|
||||
printf("memory_numa_stat[%d]=%ld\n", i, rusage.memory_numa_stat[i]);
|
||||
}
|
||||
#define NUM_CPUS 2
|
||||
for (i = 0; i < NUM_CPUS; i++) {
|
||||
printf("cpuacct_usage_percpu[%d]=%ld\n", i, rusage.cpuacct_usage_percpu[i]);
|
||||
}
|
||||
printf("cpuacct_stat_system=%ld\n", rusage.cpuacct_stat_system);
|
||||
printf("cpuacct_stat_user=%ld\n", rusage.cpuacct_stat_user);
|
||||
printf("cpuacct_usage=%ld\n", rusage.cpuacct_usage);
|
||||
|
||||
printf("num_threads=%d\n", rusage.num_threads);
|
||||
printf("max_num_threads=%d\n", rusage.max_num_threads);
|
||||
}
|
||||
_exit(123);
|
||||
} else {
|
||||
ret = waitpid(pid, &status, 0);
|
||||
CHKANDJUMP(ret == -1, 255, "waitpid failed\n");
|
||||
}
|
||||
|
||||
fn_exit:
|
||||
return ret;
|
||||
fn_fail:
|
||||
goto fn_exit;
|
||||
}
|
||||
@@ -1,89 +0,0 @@
|
||||
#include <stdio.h>
|
||||
#include <sys/mman.h>
|
||||
#include <unistd.h>
|
||||
#include <sys/syscall.h> /* For SYS_xxx definitions */
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <fcntl.h>
|
||||
#include "ihklib.h"
|
||||
#include "mckernel/ihklib_rusage.h"
|
||||
|
||||
#define DEBUG
|
||||
|
||||
#ifdef DEBUG
|
||||
#define dprintf(...) \
|
||||
do { \
|
||||
char msg[1024]; \
|
||||
sprintf(msg, __VA_ARGS__); \
|
||||
fprintf(stderr, "%s,%s", __FUNCTION__, msg); \
|
||||
} while (0);
|
||||
#else
|
||||
#define dprintf(...) do { } while (0)
|
||||
#endif
|
||||
|
||||
#define CHKANDJUMP(cond, err, ...) \
|
||||
do { \
|
||||
if(cond) { \
|
||||
dprintf(__VA_ARGS__); \
|
||||
ret = err; \
|
||||
goto fn_fail; \
|
||||
} \
|
||||
} while(0)
|
||||
|
||||
int sz_mem[] = {
|
||||
4 * (1ULL<<10),
|
||||
2 * (1ULL<<20),
|
||||
1 * (1ULL<<30),
|
||||
134217728};
|
||||
|
||||
#define SZ_INDEX 0
|
||||
#define NLOOP 2
|
||||
|
||||
int main(int argc, char** argv) {
|
||||
int i, j, ret = 0, ret_ihklib;
|
||||
void* mem;
|
||||
int fd;
|
||||
struct mckernel_rusage rusage;
|
||||
|
||||
fd = open("./file", O_RDWR);
|
||||
CHKANDJUMP(fd == -1, 255, "open failed\n");
|
||||
|
||||
for (j = 0; j < NLOOP; j++) {
|
||||
|
||||
mem = mmap(0, sz_mem[SZ_INDEX], PROT_READ|PROT_WRITE, MAP_SHARED, fd, sz_mem[SZ_INDEX] * j);
|
||||
CHKANDJUMP(mem == MAP_FAILED, 255, "mmap failed\n");
|
||||
*((unsigned long*)mem) = 0x123456789abcdef0;
|
||||
|
||||
ret = syscall(900);
|
||||
CHKANDJUMP(ret != 0, 255, "syscall failed\n");
|
||||
|
||||
ret = ihk_os_getrusage(0, &rusage, sizeof(rusage));
|
||||
CHKANDJUMP(ret != 0, 255, "ihk_os_getrusage failed\n");
|
||||
|
||||
for (i = 0; i < IHK_MAX_NUM_PGSIZES; i++) {
|
||||
printf("memory_stat_rss[%d]=%ld\n", i, rusage.memory_stat_rss[i]);
|
||||
printf("memory_stat_mapped_file[%d]=%ld\n", i, rusage.memory_stat_mapped_file[i]);
|
||||
}
|
||||
printf("memory_max_usage=%ld\n", rusage.memory_max_usage);
|
||||
printf("memory_kmem_usage=%ld\n", rusage.memory_kmem_usage);
|
||||
printf("memory_kmem_max_usage=%ld\n", rusage.memory_kmem_max_usage);
|
||||
#define NUM_NUMA_NODES 2
|
||||
for (i = 0; i < NUM_NUMA_NODES; i++) {
|
||||
printf("memory_numa_stat[%d]=%ld\n", i, rusage.memory_numa_stat[i]);
|
||||
}
|
||||
#define NUM_CPUS 2
|
||||
for (i = 0; i < NUM_CPUS; i++) {
|
||||
printf("cpuacct_usage_percpu[%d]=%ld\n", i, rusage.cpuacct_usage_percpu[i]);
|
||||
}
|
||||
printf("cpuacct_stat_system=%ld\n", rusage.cpuacct_stat_system);
|
||||
printf("cpuacct_stat_user=%ld\n", rusage.cpuacct_stat_user);
|
||||
printf("cpuacct_usage=%ld\n", rusage.cpuacct_usage);
|
||||
|
||||
printf("num_threads=%d\n", rusage.num_threads);
|
||||
printf("max_num_threads=%d\n", rusage.max_num_threads);
|
||||
}
|
||||
fn_exit:
|
||||
return ret;
|
||||
fn_fail:
|
||||
goto fn_exit;
|
||||
}
|
||||
@@ -1,81 +0,0 @@
|
||||
#include <stdio.h>
|
||||
#include <sys/mman.h>
|
||||
#include <unistd.h>
|
||||
#include <sys/syscall.h> /* For SYS_xxx definitions */
|
||||
#include "ihklib.h"
|
||||
#include "mckernel/ihklib_rusage.h"
|
||||
|
||||
#define DEBUG
|
||||
|
||||
#ifdef DEBUG
|
||||
#define dprintf(...) \
|
||||
do { \
|
||||
char msg[1024]; \
|
||||
sprintf(msg, __VA_ARGS__); \
|
||||
fprintf(stderr, "%s,%s", __FUNCTION__, msg); \
|
||||
} while (0);
|
||||
#else
|
||||
#define dprintf(...) do { } while (0)
|
||||
#endif
|
||||
|
||||
#define CHKANDJUMP(cond, err, ...) \
|
||||
do { \
|
||||
if(cond) { \
|
||||
dprintf(__VA_ARGS__); \
|
||||
ret = err; \
|
||||
goto fn_fail; \
|
||||
} \
|
||||
} while(0)
|
||||
|
||||
int sz_anon[] = {
|
||||
4 * (1ULL<<10),
|
||||
2 * (1ULL<<20),
|
||||
1 * (1ULL<<30),
|
||||
134217728};
|
||||
|
||||
#define SZ_INDEX 0
|
||||
#define NLOOP 2
|
||||
|
||||
int main(int argc, char** argv) {
|
||||
int i, j, ret = 0, ret_ihklib;
|
||||
void* mem;
|
||||
struct mckernel_rusage rusage;
|
||||
|
||||
for (j = 0; j < NLOOP; j++) {
|
||||
mem = mmap(0, sz_anon[SZ_INDEX], PROT_READ|PROT_WRITE, MAP_ANONYMOUS|MAP_PRIVATE, -1, 0);
|
||||
CHKANDJUMP(mem == MAP_FAILED, 255, "mmap failed\n");
|
||||
*((unsigned long*)mem) = 0x123456789abcdef0;
|
||||
|
||||
ret = syscall(900);
|
||||
CHKANDJUMP(ret != 0, 255, "syscall failed\n");
|
||||
|
||||
ret = ihk_os_getrusage(0, &rusage, sizeof(rusage));
|
||||
CHKANDJUMP(ret != 0, 255, "ihk_os_getrusage failed\n");
|
||||
|
||||
for (i = 0; i < IHK_MAX_NUM_PGSIZES; i++) {
|
||||
printf("memory_stat_rss[%d]=%ld\n", i, rusage.memory_stat_rss[i]);
|
||||
printf("memory_stat_mapped_file[%d]=%ld\n", i, rusage.memory_stat_mapped_file[i]);
|
||||
}
|
||||
printf("memory_max_usage=%ld\n", rusage.memory_max_usage);
|
||||
printf("memory_kmem_usage=%ld\n", rusage.memory_kmem_usage);
|
||||
printf("memory_kmem_max_usage=%ld\n", rusage.memory_kmem_max_usage);
|
||||
#define NUM_NUMA_NODES 2
|
||||
for (i = 0; i < NUM_NUMA_NODES; i++) {
|
||||
printf("memory_numa_stat[%d]=%ld\n", i, rusage.memory_numa_stat[i]);
|
||||
}
|
||||
#define NUM_CPUS 2
|
||||
for (i = 0; i < NUM_CPUS; i++) {
|
||||
printf("cpuacct_usage_percpu[%d]=%ld\n", i, rusage.cpuacct_usage_percpu[i]);
|
||||
}
|
||||
printf("cpuacct_stat_system=%ld\n", rusage.cpuacct_stat_system);
|
||||
printf("cpuacct_stat_user=%ld\n", rusage.cpuacct_stat_user);
|
||||
printf("cpuacct_usage=%ld\n", rusage.cpuacct_usage);
|
||||
|
||||
printf("num_threads=%d\n", rusage.num_threads);
|
||||
printf("max_num_threads=%d\n", rusage.max_num_threads);
|
||||
}
|
||||
fn_exit:
|
||||
return ret;
|
||||
fn_fail:
|
||||
goto fn_exit;
|
||||
}
|
||||
@@ -7,7 +7,7 @@
|
||||
#define dprintf(...) do { \
|
||||
char msg[1024]; \
|
||||
sprintf(msg, __VA_ARGS__); \
|
||||
fprintf(stderr, "%s,%s", __func__, msg); \
|
||||
fprintf(stderr, "%s: %s", __func__, msg); \
|
||||
} while (0)
|
||||
#else
|
||||
#define dprintf(...) do { } while (0)
|
||||
@@ -16,7 +16,7 @@
|
||||
#define eprintf(...) do { \
|
||||
char msg[1024]; \
|
||||
sprintf(msg, __VA_ARGS__); \
|
||||
fprintf(stderr, "%s,%s", __func__, msg); \
|
||||
fprintf(stderr, "%s: ERROR: %s", __func__, msg); \
|
||||
} while (0)
|
||||
|
||||
#define CHKANDJUMP(cond, err, ...) do { \
|
||||
@@ -36,7 +36,7 @@
|
||||
printf("[ NG ] "); \
|
||||
printf(__VA_ARGS__); \
|
||||
ret = -EINVAL; \
|
||||
goto out; \
|
||||
goto fn_fail; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user