From 2fe5c8de2e7b109e5f1597cfcb791b5400d31b51 Mon Sep 17 00:00:00 2001 From: Masamichi Takagi Date: Tue, 16 Jun 2020 10:38:33 +0900 Subject: [PATCH] Revert "xpmem: Fix deadlock in xpmem_remove_process_memory_range()" This reverts commit d052acab1dbbfb4c2f1180f0248ce935b86aa47b. Change-Id: I31e982465ef9e0936145f27c8d1587c01737ec81 --- kernel/xpmem.c | 4 + test/issues/1330/README | 22 ---- test/issues/1330/aarch64_result.log | 151 ---------------------------- test/issues/1330/x86_64_result.log | 151 ---------------------------- test/xpmem/README | 71 ------------- test/xpmem/XTP_001.c | 60 ----------- test/xpmem/XTP_002.c | 76 -------------- test/xpmem/XTP_003.c | 79 --------------- test/xpmem/XTP_004.c | 112 --------------------- test/xpmem/XTP_005.c | 76 -------------- test/xpmem/XTP_006.c | 64 ------------ test/xpmem/XTP_007.c | 78 -------------- test/xpmem/XTP_901.c | 89 ---------------- test/xpmem/XTP_902.c | 89 ---------------- test/xpmem/XTP_903.c | 92 ----------------- test/xpmem/XTP_904.c | 90 ----------------- test/xpmem/XTP_905.c | 88 ---------------- test/xpmem/go_test.sh | 36 ------- test/xpmem/mc_run.sh | 15 --- test/xpmem/util.h | 31 ------ 20 files changed, 4 insertions(+), 1470 deletions(-) delete mode 100644 test/issues/1330/README delete mode 100644 test/issues/1330/aarch64_result.log delete mode 100644 test/issues/1330/x86_64_result.log delete mode 100644 test/xpmem/README delete mode 100644 test/xpmem/XTP_001.c delete mode 100644 test/xpmem/XTP_002.c delete mode 100644 test/xpmem/XTP_003.c delete mode 100644 test/xpmem/XTP_004.c delete mode 100644 test/xpmem/XTP_005.c delete mode 100644 test/xpmem/XTP_006.c delete mode 100644 test/xpmem/XTP_007.c delete mode 100644 test/xpmem/XTP_901.c delete mode 100644 test/xpmem/XTP_902.c delete mode 100644 test/xpmem/XTP_903.c delete mode 100644 test/xpmem/XTP_904.c delete mode 100644 test/xpmem/XTP_905.c delete mode 100755 test/xpmem/go_test.sh delete mode 100755 test/xpmem/mc_run.sh delete mode 100644 test/xpmem/util.h diff --git a/kernel/xpmem.c b/kernel/xpmem.c index fc437d3f..f4499f2a 100644 --- a/kernel/xpmem.c +++ b/kernel/xpmem.c @@ -1664,6 +1664,8 @@ int xpmem_remove_process_memory_range( xpmem_att_ref(att); + ihk_rwspinlock_read_lock_noirq(&vm->memory_range_lock); + mcs_rwlock_writer_lock(&att->at_lock, &at_lock); if (att->flags & XPMEM_FLAG_DESTROYING) { @@ -1742,6 +1744,8 @@ int xpmem_remove_process_memory_range( out: mcs_rwlock_writer_unlock(&att->at_lock, &at_lock); + ihk_rwspinlock_read_unlock_noirq(&vm->memory_range_lock); + xpmem_att_deref(att); XPMEM_DEBUG("return: ret=%d", 0); diff --git a/test/issues/1330/README b/test/issues/1330/README deleted file mode 100644 index e8c6b832..00000000 --- a/test/issues/1330/README +++ /dev/null @@ -1,22 +0,0 @@ -【Issue#1330 動作確認】 -□ テスト内容 -1. xpmemの基本操作の確認 -mckernel/test/xpmemのテストを実行し、xpmemの基本操作が -正常に動作することを確認する -テスト内容の詳細はmckernel/test/xpmem/README を参照 - -□ 実行手順 -1. mckernel/test/xpmem に移動する -1. xpmemのインストールディレクトリをMakefileとgo_test.sh中のXPMEM_DIRに記載する -2. xpmemのビルドディレクトリをgo_test.sh中のXPMEM_BUILD_DIRに記載する -3. 下記の手順でテストを実行する -$ make test - -McKernelのインストール先や、OSTEST, LTPの配置場所は、 -$HOME/.mck_test_config を参照している -.mck_test_config は、McKernelをビルドした際に生成されるmck_test_config.sample ファイルを -$HOMEにコピーし、適宜編集する - -□ 実行結果 -x86_64_result.log, aarch64_result.log 参照。 -すべての項目をPASSしていることを確認。 diff --git a/test/issues/1330/aarch64_result.log b/test/issues/1330/aarch64_result.log deleted file mode 100644 index 72885b32..00000000 --- a/test/issues/1330/aarch64_result.log +++ /dev/null @@ -1,151 +0,0 @@ -*** XPMEM_TESTSUITE start ******************************* -XPMEM version = 26003 - -==== test_base STARTS ==== -xpmem_proc1: mypid = 3962 -xpmem_proc1: sharing 262144 bytes -xpmem_proc1: segid = 200000f7a at 0x100000210000 - -xpmem_proc2: mypid = 4161 -xpmem_proc2: segid = 200000f7a -xpmem_proc2: attached at 0x100000210000 -xpmem_proc2: adding 1 to all elems - -xpmem_proc1: verifying data...done -==== test_base PASSED ==== - -==== test_two_attach STARTS ==== -xpmem_proc1: mypid = 4472 -xpmem_proc1: sharing 262144 bytes -xpmem_proc1: segid = 200001178 at 0x100000210000 - -xpmem_proc2: mypid = 4670 -xpmem_proc2: segid = 200001178 -xpmem_proc2: attached at 0x100000210000 -xpmem_proc2: attached at 0x100000250000 -xpmem_proc2: adding 1 to all elems using 0x100000210000 -xpmem_proc2: adding 1 to all elems using 0x100000250000 - -xpmem_proc1: verifying data...done -==== test_two_attach PASSED ==== - -==== test_two_shares STARTS ==== -xpmem_proc1: mypid = 4871 -xpmem_proc1: sharing 2 segments, 262144 bytes each -xpmem_proc1: segid[0] = 200001307 at 0x100000210000 -xpmem_proc1: segid[1] = 400001307 at 0x100000250000 - -xpmem_proc2: mypid = 5068 -xpmem_proc2: segid[0] = 200001307 -xpmem_proc2: segid[1] = 400001307 -xpmem_proc2: data[0] attached at 0x100000210000 -xpmem_proc2: data[1] attached at 0x100000250000 -xpmem_proc2: adding 1 to all elems using 0x100000210000 -xpmem_proc2: adding 1 to all elems using 0x100000250000 - -xpmem_proc1: verifying data...done -==== test_two_shares PASSED ==== - -==== test_fork STARTS ==== -xpmem_proc1: mypid = 5271 -xpmem_proc1: sharing 262144 bytes -xpmem_proc1: segid = 200001497 at 0x100000210000 - -xpmem_proc2: mypid = 5468 -xpmem_proc2: segid = 200001497 -xpmem_proc2: attached at 0x100000220000 -xpmem_proc2: reading to pin pages -xpmem_proc2: waiting for COW... - -xpmem_proc1: forking a child -xpmem_proc1: adding 1 to all elems to induce COW - -xpmem_child: hello from pid 5789 - -xpmem_proc1: give control back to xpmem_proc2 - -xpmem_proc2: adding 1 to all elems - -xpmem_proc1: verifying data...done -==== test_fork PASSED ==== - -*** XTP_001 start *** - [OK] xpmem_make - [OK] xpmem_get - [OK] xpmem_attach - [OK] xpmem_detach - [OK] xpmem_remove -*** XTP_001 PASSED - -*** XTP_002 start *** - [OK] xpmem_make in child - [OK] xpmem_get in child - [OK] xpmem_attach in child - [OK] xpmem_detach in child - [OK] xpmem_remove in child -*** XTP_002 PASSED - -*** XTP_003 start *** - [OK] xpmem_make - [OK] xpmem_get in child - [OK] xpmem_attach in child - [OK] xpmem_detach in child - [OK] validate TEST_VAL - [OK] xpmem_remove -*** XTP_003 PASSED - -*** XTP_004 start *** - [OK] xpmem_make - [OK] xpmem_get in child - [OK] xpmem_attach in child - [OK] xpmem_detach in child - [OK] validate TEST_VAL - [OK] xpmem_remove -*** XTP_004 PASSED - -*** XTP_005 start *** - [OK] xpmem_make - [OK] xpmem_get in child - [OK] xpmem_attach in child - [OK] validate TEST_VAL - [OK] xpmem_remove -*** XTP_005 PASSED - -*** XTP_006 start *** - [OK] xpmem_make - [OK] xpmem_get in child failed (parent process exited already -*** XTP_006 PASSED - -*** XTP_007 start *** - [OK] xpmem_make - [OK] xpmem_get in child - [OK] xpmem_attach in child - [OK] validate TEST_VAL - [OK] xpmem_remove -*** XTP_007 PASSED - -*** XTP_901 start *** - [OK] xpmem_make failed (invalid address) - [OK] xpmem_make succeed(do twice to same address) -*** XTP_901 PASSED - -*** XTP_902 start *** - [OK] xpmem_get in child failed (invalid segid) - [OK] xpmem_get in child (do twice to same segid -*** XTP_902 PASSED - -*** XTP_903 start *** - [OK] xpmem_attach in childi failed (invalid apid) - [OK] xpmem_attach in child succeed (do twice to same apid) -*** XTP_903 PASSED - -*** XTP_904 start *** - [OK] xpmem_detach in child succeed (invalid address) - [OK] xpmem_detach in child succeed (do twice to same address) -*** XTP_904 PASSED - -*** XTP_905 start *** - [OK] xpmem_remove failed (invalid segid) - [OK] xpmem_remove failed (do twice to same segid) -*** XTP_905 PASSED - diff --git a/test/issues/1330/x86_64_result.log b/test/issues/1330/x86_64_result.log deleted file mode 100644 index ac673461..00000000 --- a/test/issues/1330/x86_64_result.log +++ /dev/null @@ -1,151 +0,0 @@ -*** XPMEM_TESTSUITE start ******************************* -XPMEM version = 26003 - -==== test_base STARTS ==== -xpmem_proc1: mypid = 4598 -xpmem_proc1: sharing 16384 bytes -xpmem_proc1: segid = 2000011f6 at 0x2aaaaafee000 - -xpmem_proc2: mypid = 5018 -xpmem_proc2: segid = 2000011f6 -xpmem_proc2: attached at 0x2aaaaafee000 -xpmem_proc2: adding 1 to all elems - -xpmem_proc1: verifying data...done -==== test_base PASSED ==== - -==== test_two_attach STARTS ==== -xpmem_proc1: mypid = 5438 -xpmem_proc1: sharing 16384 bytes -xpmem_proc1: segid = 20000153e at 0x2aaaaafee000 - -xpmem_proc2: mypid = 5858 -xpmem_proc2: segid = 20000153e -xpmem_proc2: attached at 0x2aaaaafee000 -xpmem_proc2: attached at 0x2aaaaaff2000 -xpmem_proc2: adding 1 to all elems using 0x2aaaaafee000 -xpmem_proc2: adding 1 to all elems using 0x2aaaaaff2000 - -xpmem_proc1: verifying data...done -==== test_two_attach PASSED ==== - -==== test_two_shares STARTS ==== -xpmem_proc1: mypid = 6278 -xpmem_proc1: sharing 2 segments, 16384 bytes each -xpmem_proc1: segid[0] = 200001886 at 0x2aaaaafee000 -xpmem_proc1: segid[1] = 400001886 at 0x2aaaaaff2000 - -xpmem_proc2: mypid = 6698 -xpmem_proc2: segid[0] = 200001886 -xpmem_proc2: segid[1] = 400001886 -xpmem_proc2: data[0] attached at 0x2aaaaafee000 -xpmem_proc2: data[1] attached at 0x2aaaaaff2000 -xpmem_proc2: adding 1 to all elems using 0x2aaaaafee000 -xpmem_proc2: adding 1 to all elems using 0x2aaaaaff2000 - -xpmem_proc1: verifying data...done -==== test_two_shares PASSED ==== - -==== test_fork STARTS ==== -xpmem_proc1: mypid = 7118 -xpmem_proc1: sharing 16384 bytes -xpmem_proc1: segid = 200001bce at 0x2aaaaafee000 - -xpmem_proc2: mypid = 7538 -xpmem_proc2: segid = 200001bce -xpmem_proc2: attached at 0x2aaaaafef000 -xpmem_proc2: reading to pin pages -xpmem_proc2: waiting for COW... - -xpmem_proc1: forking a child -xpmem_proc1: adding 1 to all elems to induce COW - -xpmem_proc1: give control back to xpmem_proc2 - -xpmem_child: hello from pid 7958 - -xpmem_proc2: adding 1 to all elems - -xpmem_proc1: verifying data...done -==== test_fork PASSED ==== - -*** XTP_001 start *** - [OK] xpmem_make - [OK] xpmem_get - [OK] xpmem_attach - [OK] xpmem_detach - [OK] xpmem_remove -*** XTP_001 PASSED - -*** XTP_002 start *** - [OK] xpmem_make in child - [OK] xpmem_get in child - [OK] xpmem_attach in child - [OK] xpmem_detach in child - [OK] xpmem_remove in child -*** XTP_002 PASSED - -*** XTP_003 start *** - [OK] xpmem_make - [OK] xpmem_get in child - [OK] xpmem_attach in child - [OK] xpmem_detach in child - [OK] validate TEST_VAL - [OK] xpmem_remove -*** XTP_003 PASSED - -*** XTP_004 start *** - [OK] xpmem_make - [OK] xpmem_get in child - [OK] xpmem_attach in child - [OK] xpmem_detach in child - [OK] validate TEST_VAL - [OK] xpmem_remove -*** XTP_004 PASSED - -*** XTP_005 start *** - [OK] xpmem_make - [OK] xpmem_get in child - [OK] xpmem_attach in child - [OK] validate TEST_VAL - [OK] xpmem_remove -*** XTP_005 PASSED - -*** XTP_006 start *** - [OK] xpmem_make - [OK] xpmem_get in child failed (parent process exited already -*** XTP_006 PASSED - -*** XTP_007 start *** - [OK] xpmem_make - [OK] xpmem_get in child - [OK] xpmem_attach in child - [OK] validate TEST_VAL - [OK] xpmem_remove -*** XTP_007 PASSED - -*** XTP_901 start *** - [OK] xpmem_make failed (invalid address) - [OK] xpmem_make succeed(do twice to same address) -*** XTP_901 PASSED - -*** XTP_902 start *** - [OK] xpmem_get in child failed (invalid segid) - [OK] xpmem_get in child (do twice to same segid -*** XTP_902 PASSED - -*** XTP_903 start *** - [OK] xpmem_attach in childi failed (invalid apid) - [OK] xpmem_attach in child succeed (do twice to same apid) -*** XTP_903 PASSED - -*** XTP_904 start *** - [OK] xpmem_detach in child succeed (invalid address) - [OK] xpmem_detach in child succeed (do twice to same address) -*** XTP_904 PASSED - -*** XTP_905 start *** - [OK] xpmem_remove failed (invalid segid) - [OK] xpmem_remove failed (do twice to same segid) -*** XTP_905 PASSED - diff --git a/test/xpmem/README b/test/xpmem/README deleted file mode 100644 index 7beb8e53..00000000 --- a/test/xpmem/README +++ /dev/null @@ -1,71 +0,0 @@ -【XPMEMの基本操作確認】 -□ テスト内容 -XPMEM_TESTSUITE: - xpmemに付随するテストスイートをmckernelで実行 - -XTP_001: 単一プロセスでのXPMEM操作 - 1. 実行したプロセスがxpmem_make -> xpmem_get -> xpmem_attach -> xpmem_detach -> xpmem_remove - -XTP_002: 子プロセスでのXPMEM操作 - 1. 親プロセスがfork() - 2. 子プロセスがxpmem_make -> xpmem_get -> xpmem_attach -> xpmem_detach ->xpmem_remove - 3. 子プロセス終了後、親プロセスが終了 - -XTP_003: 親プロセスがmakeした共有領域への子プロセスによるXPMEM操作 - 1. 親プロセスがxpmem_make - 2. fork()で子プロセスを作成 - 3. 子プロセスで、xpmem_get -> xpmem_attach -> 値(TEST_VAL)の設定 -> xpmem_detach - 4. 子プロセスが終了 - 5. 親プロセスが、子プロセスによって設定された値(TEST_VAL)を確認 - 6. 親プロセスがxpmem_remove - -XTP_004: fork()後に親プロセスがmakeした共有領域への子プロセスによるXPMEM操作 - 1. fork()で子プロセスを作成 - 2. 親プロセスがxpmem_make - 3. 子プロセスで、xpmem_get -> xpmem_attach -> 値(TEST_VAL)の設定 -> xpmem_detach - 4. 子プロセスが終了 - 5. 親プロセスが、子プロセスによって設定された値(TEST_VAL)を確認 - 6. 親プロセスがxpmem_remove - -XTP_005: 子プロセスがxpmem_attach後、xpmem_detachをせずに終了 - 1. 親プロセスがxpmem_make - 2. fork()で子プロセスを作成 - 3. 子プロセスで、xpmem_get -> xpmem_attach - 4. 子プロセスが終了 - 5. 親プロセスがxpmem_remove - -XTP_006: 子プロセスがXPMEM操作を行う時点で、xpmem_makeをした親プロセスが終了している - 1. 親プロセスがxpmem_make - 2. fork()で子プロセスを作成 - 3. 親プロセスが終了 - 4. 子プロセスで、xpmem_get (失敗) - 5. 子プロセスが終了 - -XTP_007: 子プロセスがxpmem_attach後、xpmem_detachをせずに対象領域をunmapする - 1. 親プロセスがxpmem_make - 2. fork()で子プロセスを作成 - 3. 子プロセスで、xpmem_get -> xpmem_attach - 4. 子プロセスがattachした領域をunmap - 4. 子プロセスが終了 - 5. 親プロセスがxpmem_remove - -XTP_901: xpmem_make 呼び出しの異常系 - 1. xpmem_make の第1引数に不正なアドレスを指定する (失敗) - 2. 1度xpmem_make を実施したメモリ領域に対して、再度xpmem_make を行う (成功) - -XTP_902: xpmem_get 呼び出しの異常系 - 1. xpmem_get の第1引数に不正なsegidを指定する (失敗) - 2. 1度xpmem_get を実施したsegidで、再度xpmem_get を行う (成功) - -XTP_903: xpmem_attach 呼び出しの異常系 - 1. xpmem_attach の第1引数に不正なapidを指定する (失敗) - 2. 1度xpmem_attach を実施したapidで、再度xpmem_attach を行う (成功) - -XTP_904: xpmem_detach 呼び出しの異常系 - 1. xpmem_detach の第1引数に不正なアドレスを指定する (成功) - 2. 1度xpmem_detach を実施したメモリ領域に対して、再度xpmem_detach を行う (成功) - -XTP_905: xpmem_remove 呼び出しの異常系 - 1. xpmem_remove の第1引数に不正なsegidを指定する (失敗) - 2. 1度xpmem_remove を実施したsegidで、再度xpmem_remove を行う (失敗) - diff --git a/test/xpmem/XTP_001.c b/test/xpmem/XTP_001.c deleted file mode 100644 index cfdc40cf..00000000 --- a/test/xpmem/XTP_001.c +++ /dev/null @@ -1,60 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "util.h" - -int main(int argc, char **argv) -{ - void *mem, *attach; - int rc = 0; - int status; - xpmem_segid_t segid; - xpmem_apid_t apid; - struct xpmem_addr addr; - - printf("*** %s start ***\n", basename(argv[0])); - - mem = mmap(0, SZ_MEM, PROT_READ | PROT_WRITE, - MAP_ANONYMOUS | MAP_PRIVATE | - MAP_HUGETLB | (LARGE_PAGE_SHIFT << MAP_HUGE_SHIFT), -1, 0); - CHKANDJUMP(mem == NULL, "mmap"); - memset(mem, 0, SZ_MEM); - - rc = xpmem_init(); - CHKANDJUMP(rc != 0, "xpmem_init"); - - segid = xpmem_make(mem, SZ_MEM, XPMEM_PERMIT_MODE, (void *)0666); - OKNG(segid == -1, "xpmem_make"); - - apid = xpmem_get(segid, XPMEM_RDWR, XPMEM_PERMIT_MODE, NULL); - OKNG(apid == -1, "xpmem_get"); - - addr.apid = apid; - addr.offset = 0; - attach = xpmem_attach(addr, SZ_MEM, NULL); - OKNG(attach == (void *)-1, "xpmem_attach"); - - rc = xpmem_detach(attach); - OKNG(rc == -1, "xpmem_detach"); - - rc = xpmem_remove(segid); - OKNG(rc == -1, "xpmem_remove"); - - printf("*** %s PASSED\n\n", basename(argv[0])); - return 0; - -fn_fail: - printf("*** %s FAILED\n\n", basename(argv[0])); - - return -1; -} diff --git a/test/xpmem/XTP_002.c b/test/xpmem/XTP_002.c deleted file mode 100644 index 3f7810d7..00000000 --- a/test/xpmem/XTP_002.c +++ /dev/null @@ -1,76 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "util.h" - -int main(int argc, char **argv) -{ - void *mem, *attach; - int rc = 0; - int status; - pid_t pid; - xpmem_segid_t segid; - xpmem_apid_t apid; - struct xpmem_addr addr; - - printf("*** %s start ***\n", basename(argv[0])); - - mem = mmap(0, SZ_MEM, PROT_READ | PROT_WRITE, - MAP_ANONYMOUS | MAP_PRIVATE | - MAP_HUGETLB | (LARGE_PAGE_SHIFT << MAP_HUGE_SHIFT), -1, 0); - CHKANDJUMP(mem == NULL, "mmap"); - memset(mem, 0, SZ_MEM); - - fflush(0); - pid = fork(); - CHKANDJUMP(pid == -1, "fork failed\n"); - - if (pid == 0) { - /* Child process */ - rc = xpmem_init(); - CHKANDJUMP(rc != 0, "xpmem_init in child"); - - segid = xpmem_make(mem, SZ_MEM, XPMEM_PERMIT_MODE, - (void *)0666); - OKNG(segid == -1, "xpmem_make in child"); - - apid = xpmem_get(segid, XPMEM_RDWR, XPMEM_PERMIT_MODE, NULL); - OKNG(apid == -1, "xpmem_get in child"); - - addr.apid = apid; - addr.offset = 0; - attach = xpmem_attach(addr, SZ_MEM, NULL); - OKNG(attach == (void *)-1, "xpmem_attach in child"); - - rc = xpmem_detach(attach); - OKNG(rc == -1, "xpmem_detach in child"); - - rc = xpmem_remove(segid); - OKNG(rc == -1, "xpmem_remove in child"); - - fflush(0); - _exit(0); - } else { - /* Parent process */ - rc = waitpid(pid, &status, 0); - CHKANDJUMP(rc == -1, "waitpid failed\n"); - } - - printf("*** %s PASSED\n\n", basename(argv[0])); - return 0; - -fn_fail: - printf("*** %s FAILED\n\n", basename(argv[0])); - - return -1; -} diff --git a/test/xpmem/XTP_003.c b/test/xpmem/XTP_003.c deleted file mode 100644 index 55ca2c72..00000000 --- a/test/xpmem/XTP_003.c +++ /dev/null @@ -1,79 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "util.h" - -int main(int argc, char **argv) -{ - void *mem, *attach; - int rc = 0; - int status; - pid_t pid; - xpmem_segid_t segid; - xpmem_apid_t apid; - struct xpmem_addr addr; - - printf("*** %s start ***\n", basename(argv[0])); - - mem = mmap(0, SZ_MEM, PROT_READ | PROT_WRITE, - MAP_ANONYMOUS | MAP_PRIVATE | - MAP_HUGETLB | (LARGE_PAGE_SHIFT << MAP_HUGE_SHIFT), -1, 0); - CHKANDJUMP(mem == NULL, "mmap"); - memset(mem, 0, SZ_MEM); - - rc = xpmem_init(); - CHKANDJUMP(rc != 0, "xpmem_init"); - - segid = xpmem_make(mem, SZ_MEM, XPMEM_PERMIT_MODE, (void *)0666); - OKNG(segid == -1, "xpmem_make"); - - fflush(0); - pid = fork(); - CHKANDJUMP(pid == -1, "fork failed\n"); - - if (pid == 0) { - /* Child process */ - apid = xpmem_get(segid, XPMEM_RDWR, XPMEM_PERMIT_MODE, NULL); - OKNG(apid == -1, "xpmem_get in child"); - - addr.apid = apid; - addr.offset = 0; - attach = xpmem_attach(addr, SZ_MEM, NULL); - OKNG(attach == (void *)-1, "xpmem_attach in child"); - - *((unsigned long *)attach) = TEST_VAL; - - rc = xpmem_detach(attach); - OKNG(rc == -1, "xpmem_detach in child"); - - fflush(0); - _exit(0); - } else { - /* Parent process */ - rc = waitpid(pid, &status, 0); - CHKANDJUMP(rc == -1, "waitpid failed\n"); - - OKNG(*((unsigned long *)mem) != TEST_VAL, "validate TEST_VAL"); - - rc = xpmem_remove(segid); - OKNG(rc == -1, "xpmem_remove"); - } - - printf("*** %s PASSED\n\n", basename(argv[0])); - return 0; - -fn_fail: - printf("*** %s FAILED\n\n", basename(argv[0])); - - return -1; -} diff --git a/test/xpmem/XTP_004.c b/test/xpmem/XTP_004.c deleted file mode 100644 index 157f34db..00000000 --- a/test/xpmem/XTP_004.c +++ /dev/null @@ -1,112 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "util.h" - -#define BUFF_SIZE 1024 - -int main(int argc, char **argv) -{ - void *mem, *attach; - int rc = 0; - int status; - pid_t pid; - xpmem_segid_t segid; - xpmem_apid_t apid; - struct xpmem_addr addr; - key_t key = ftok(argv[0], 0); - int shmid; - - printf("*** %s start ***\n", basename(argv[0])); - - shmid = shmget(key, SZ_MEM, IPC_CREAT | 0660); - CHKANDJUMP(shmid == -1, "shmget"); - - mem = mmap(0, SZ_MEM, PROT_READ | PROT_WRITE, - MAP_ANONYMOUS | MAP_PRIVATE | - MAP_HUGETLB | (LARGE_PAGE_SHIFT << MAP_HUGE_SHIFT), -1, 0); - CHKANDJUMP(mem == NULL, "mmap"); - memset(mem, 0, SZ_MEM); - - fflush(0); - pid = fork(); - CHKANDJUMP(pid == -1, "fork failed\n"); - - if (pid == 0) { - /* Child process */ - void *shm = shmat(shmid, NULL, 0); - - CHKANDJUMP(shm == (void *)-1, "shmat in child"); - - while ((segid = *(xpmem_segid_t *)shm) == 0) { - }; - - rc = shmdt(shm); - CHKANDJUMP(rc == -1, "shmdt"); - - rc = xpmem_init(); - CHKANDJUMP(rc != 0, "xpmem_init in child"); - - apid = xpmem_get(segid, XPMEM_RDWR, XPMEM_PERMIT_MODE, NULL); - OKNG(apid == -1, "xpmem_get in child"); - - addr.apid = apid; - addr.offset = 0; - attach = xpmem_attach(addr, SZ_MEM, NULL); - OKNG(attach == (void *)-1, "xpmem_attach in child"); - - *((unsigned long *)attach) = TEST_VAL; - - rc = xpmem_detach(attach); - OKNG(rc == -1, "xpmem_detach in child"); - - fflush(0); - _exit(0); - } else { - /* Parent process */ - void *shm = shmat(shmid, NULL, 0); - struct shmid_ds buf; - - CHKANDJUMP(shm == (void *)-1, "shmat in parent"); - rc = xpmem_init(); - CHKANDJUMP(rc != 0, "xpmem_init"); - - segid = xpmem_make(mem, SZ_MEM, XPMEM_PERMIT_MODE, - (void *)0666); - OKNG(segid == -1, "xpmem_make"); - - *(xpmem_segid_t *)shm = segid; - - rc = waitpid(pid, &status, 0); - CHKANDJUMP(rc == -1, "waitpid failed\n"); - - OKNG(*((unsigned long *)mem) != TEST_VAL, "validate TEST_VAL"); - - rc = shmctl(shmid, IPC_RMID, &buf); - CHKANDJUMP(rc == -1, "shmctl"); - - rc = shmdt(shm); - CHKANDJUMP(rc == -1, "shmdt"); - - rc = xpmem_remove(segid); - OKNG(rc == -1, "xpmem_remove"); - } - - printf("*** %s PASSED\n\n", basename(argv[0])); - return 0; - -fn_fail: - printf("*** %s FAILED\n\n", basename(argv[0])); - - return -1; -} diff --git a/test/xpmem/XTP_005.c b/test/xpmem/XTP_005.c deleted file mode 100644 index 554e9b3f..00000000 --- a/test/xpmem/XTP_005.c +++ /dev/null @@ -1,76 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "util.h" - -int main(int argc, char **argv) -{ - void *mem, *attach; - int rc = 0; - int status; - pid_t pid; - xpmem_segid_t segid; - xpmem_apid_t apid; - struct xpmem_addr addr; - - printf("*** %s start ***\n", basename(argv[0])); - - mem = mmap(0, SZ_MEM, PROT_READ | PROT_WRITE, - MAP_ANONYMOUS | MAP_PRIVATE | - MAP_HUGETLB | (LARGE_PAGE_SHIFT << MAP_HUGE_SHIFT), -1, 0); - CHKANDJUMP(mem == NULL, "mmap"); - memset(mem, 0, SZ_MEM); - - rc = xpmem_init(); - CHKANDJUMP(rc != 0, "xpmem_init"); - - segid = xpmem_make(mem, SZ_MEM, XPMEM_PERMIT_MODE, (void *)0666); - OKNG(segid == -1, "xpmem_make"); - - fflush(0); - pid = fork(); - CHKANDJUMP(pid == -1, "fork failed\n"); - - if (pid == 0) { - /* Child process */ - apid = xpmem_get(segid, XPMEM_RDWR, XPMEM_PERMIT_MODE, NULL); - OKNG(apid == -1, "xpmem_get in child"); - - addr.apid = apid; - addr.offset = 0; - attach = xpmem_attach(addr, SZ_MEM, NULL); - OKNG(attach == (void *)-1, "xpmem_attach in child"); - - *((unsigned long *)attach) = TEST_VAL; - - fflush(0); - _exit(0); - } else { - /* Parent process */ - rc = waitpid(pid, &status, 0); - CHKANDJUMP(rc == -1, "waitpid failed\n"); - - OKNG(*((unsigned long *)mem) != TEST_VAL, "validate TEST_VAL"); - - rc = xpmem_remove(segid); - OKNG(rc == -1, "xpmem_remove"); - } - - printf("*** %s PASSED\n\n", basename(argv[0])); - return 0; - -fn_fail: - printf("*** %s FAILED\n\n", basename(argv[0])); - - return -1; -} diff --git a/test/xpmem/XTP_006.c b/test/xpmem/XTP_006.c deleted file mode 100644 index c5d52aad..00000000 --- a/test/xpmem/XTP_006.c +++ /dev/null @@ -1,64 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "util.h" - -int main(int argc, char **argv) -{ - void *mem, *attach; - int rc = 0; - int status; - pid_t pid; - xpmem_segid_t segid; - xpmem_apid_t apid; - struct xpmem_addr addr; - - printf("*** %s start ***\n", basename(argv[0])); - - mem = mmap(0, SZ_MEM, PROT_READ | PROT_WRITE, - MAP_ANONYMOUS | MAP_PRIVATE | - MAP_HUGETLB | (LARGE_PAGE_SHIFT << MAP_HUGE_SHIFT), -1, 0); - CHKANDJUMP(mem == NULL, "mmap"); - memset(mem, 0, SZ_MEM); - - rc = xpmem_init(); - CHKANDJUMP(rc != 0, "xpmem_init"); - - segid = xpmem_make(mem, SZ_MEM, XPMEM_PERMIT_MODE, (void *)0666); - OKNG(segid == -1, "xpmem_make"); - - fflush(0); - pid = fork(); - CHKANDJUMP(pid == -1, "fork failed\n"); - - if (pid == 0) { - /* Child process */ - sleep(1); /* wait for parent process exit */ - apid = xpmem_get(segid, XPMEM_RDWR, XPMEM_PERMIT_MODE, NULL); - OKNG(apid != -1, - "xpmem_get in child failed (parent process exited already"); - fflush(0); - - } else { - /* Parent process */ - _exit(0); - } - - printf("*** %s PASSED\n\n", basename(argv[0])); - return 0; - -fn_fail: - printf("*** %s FAILED\n\n", basename(argv[0])); - - return -1; -} diff --git a/test/xpmem/XTP_007.c b/test/xpmem/XTP_007.c deleted file mode 100644 index 95aa8ad5..00000000 --- a/test/xpmem/XTP_007.c +++ /dev/null @@ -1,78 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "util.h" - - -int main(int argc, char **argv) -{ - void *mem, *attach; - int rc = 0; - int status; - pid_t pid; - xpmem_segid_t segid; - xpmem_apid_t apid; - struct xpmem_addr addr; - - printf("*** %s start ***\n", basename(argv[0])); - - mem = mmap(0, SZ_MEM, PROT_READ | PROT_WRITE, - MAP_ANONYMOUS | MAP_PRIVATE | - MAP_HUGETLB | (LARGE_PAGE_SHIFT << MAP_HUGE_SHIFT), -1, 0); - CHKANDJUMP(mem == NULL, "mmap"); - memset(mem, 0, SZ_MEM); - - rc = xpmem_init(); - CHKANDJUMP(rc != 0, "xpmem_init"); - - segid = xpmem_make(mem, SZ_MEM, XPMEM_PERMIT_MODE, (void *)0666); - OKNG(segid == -1, "xpmem_make"); - - fflush(0); - pid = fork(); - CHKANDJUMP(pid == -1, "fork failed\n"); - - if (pid == 0) { - /* Child process */ - apid = xpmem_get(segid, XPMEM_RDWR, XPMEM_PERMIT_MODE, NULL); - OKNG(apid == -1, "xpmem_get in child"); - - addr.apid = apid; - addr.offset = 0; - attach = xpmem_attach(addr, SZ_MEM, NULL); - OKNG(attach == (void *)-1, "xpmem_attach in child"); - - *((unsigned long *)attach) = TEST_VAL; - - munmap(attach, SZ_MEM); - fflush(0); - _exit(0); - } else { - /* Parent process */ - rc = waitpid(pid, &status, 0); - CHKANDJUMP(rc == -1, "waitpid failed\n"); - - OKNG(*((unsigned long *)mem) != TEST_VAL, "validate TEST_VAL"); - - rc = xpmem_remove(segid); - OKNG(rc == -1, "xpmem_remove"); - } - - printf("*** %s PASSED\n\n", basename(argv[0])); - return 0; - -fn_fail: - printf("*** %s FAILED\n\n", basename(argv[0])); - - return -1; -} diff --git a/test/xpmem/XTP_901.c b/test/xpmem/XTP_901.c deleted file mode 100644 index dce5669e..00000000 --- a/test/xpmem/XTP_901.c +++ /dev/null @@ -1,89 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "util.h" - -#define BAD_ADDRESS ((void *)-1) - -int main(int argc, char **argv) -{ - void *mem, *attach; - int rc = 0; - int status; - pid_t pid; - xpmem_segid_t segid; - xpmem_apid_t apid; - struct xpmem_addr addr; - - printf("*** %s start ***\n", basename(argv[0])); - - mem = mmap(0, SZ_MEM, PROT_READ | PROT_WRITE, - MAP_ANONYMOUS | MAP_PRIVATE | - MAP_HUGETLB | (LARGE_PAGE_SHIFT << MAP_HUGE_SHIFT), -1, 0); - CHKANDJUMP(mem == NULL, "mmap"); - memset(mem, 0, SZ_MEM); - - rc = xpmem_init(); - CHKANDJUMP(rc != 0, "xpmem_init"); - - segid = xpmem_make(BAD_ADDRESS, SZ_MEM, XPMEM_PERMIT_MODE, - (void *)0666); - OKNG(segid != -1, "xpmem_make failed (invalid address)"); - - segid = xpmem_make(mem, SZ_MEM, XPMEM_PERMIT_MODE, (void *)0666); - CHKANDJUMP(segid == -1, "xpmem_make"); - - segid = xpmem_make(mem, SZ_MEM, XPMEM_PERMIT_MODE, (void *)0666); - OKNG(segid == -1, "xpmem_make succeed(do twice to same address)"); - - fflush(0); - pid = fork(); - CHKANDJUMP(pid == -1, "fork failed\n"); - - if (pid == 0) { - /* Child process */ - apid = xpmem_get(segid, XPMEM_RDWR, XPMEM_PERMIT_MODE, NULL); - CHKANDJUMP(apid == -1, "xpmem_get in child"); - - addr.apid = apid; - addr.offset = 0; - attach = xpmem_attach(addr, SZ_MEM, NULL); - CHKANDJUMP(attach == (void *)-1, "xpmem_attach in child"); - - *((unsigned long *)attach) = TEST_VAL; - - rc = xpmem_detach(attach); - CHKANDJUMP(rc == -1, "xpmem_detach in child"); - - fflush(0); - _exit(0); - } else { - /* Parent process */ - rc = waitpid(pid, &status, 0); - CHKANDJUMP(rc == -1, "waitpid failed\n"); - - CHKANDJUMP(*((unsigned long *)mem) != TEST_VAL, - "validate TEST_VAL"); - - rc = xpmem_remove(segid); - CHKANDJUMP(rc == -1, "xpmem_remove"); - } - - printf("*** %s PASSED\n\n", basename(argv[0])); - return 0; - -fn_fail: - printf("*** %s FAILED\n\n", basename(argv[0])); - - return -1; -} diff --git a/test/xpmem/XTP_902.c b/test/xpmem/XTP_902.c deleted file mode 100644 index 3423bb28..00000000 --- a/test/xpmem/XTP_902.c +++ /dev/null @@ -1,89 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "util.h" - -#define BAD_SEGID -1 - -int main(int argc, char **argv) -{ - void *mem, *attach; - int rc = 0; - int status; - pid_t pid; - xpmem_segid_t segid; - xpmem_apid_t apid; - struct xpmem_addr addr; - - printf("*** %s start ***\n", basename(argv[0])); - - mem = mmap(0, SZ_MEM, PROT_READ | PROT_WRITE, - MAP_ANONYMOUS | MAP_PRIVATE | - MAP_HUGETLB | (LARGE_PAGE_SHIFT << MAP_HUGE_SHIFT), -1, 0); - CHKANDJUMP(mem == NULL, "mmap"); - memset(mem, 0, SZ_MEM); - - rc = xpmem_init(); - CHKANDJUMP(rc != 0, "xpmem_init"); - - segid = xpmem_make(mem, SZ_MEM, XPMEM_PERMIT_MODE, (void *)0666); - CHKANDJUMP(segid == -1, "xpmem_make"); - - fflush(0); - pid = fork(); - CHKANDJUMP(pid == -1, "fork failed\n"); - - if (pid == 0) { - /* Child process */ - apid = xpmem_get(BAD_SEGID, XPMEM_RDWR, XPMEM_PERMIT_MODE, - NULL); - OKNG(apid != -1, "xpmem_get in child failed (invalid segid)"); - - apid = xpmem_get(segid, XPMEM_RDWR, XPMEM_PERMIT_MODE, NULL); - CHKANDJUMP(apid == -1, "xpmem_get in child"); - - apid = xpmem_get(segid, XPMEM_RDWR, XPMEM_PERMIT_MODE, NULL); - OKNG(apid == -1, "xpmem_get in child (do twice to same segid"); - - addr.apid = apid; - addr.offset = 0; - attach = xpmem_attach(addr, SZ_MEM, NULL); - CHKANDJUMP(attach == (void *)-1, "xpmem_attach in child"); - - *((unsigned long *)attach) = TEST_VAL; - - rc = xpmem_detach(attach); - CHKANDJUMP(rc == -1, "xpmem_detach in child"); - - fflush(0); - _exit(0); - } else { - /* Parent process */ - rc = waitpid(pid, &status, 0); - CHKANDJUMP(rc == -1, "waitpid failed\n"); - - CHKANDJUMP(*((unsigned long *)mem) != TEST_VAL, - "validate TEST_VAL"); - - rc = xpmem_remove(segid); - CHKANDJUMP(rc == -1, "xpmem_remove"); - } - - printf("*** %s PASSED\n\n", basename(argv[0])); - return 0; - -fn_fail: - printf("*** %s FAILED\n\n", basename(argv[0])); - - return -1; -} diff --git a/test/xpmem/XTP_903.c b/test/xpmem/XTP_903.c deleted file mode 100644 index b8d26b67..00000000 --- a/test/xpmem/XTP_903.c +++ /dev/null @@ -1,92 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "util.h" - -int main(int argc, char **argv) -{ - void *mem, *attach; - int rc = 0; - int status; - pid_t pid; - xpmem_segid_t segid; - xpmem_apid_t apid; - struct xpmem_addr addr; - - printf("*** %s start ***\n", basename(argv[0])); - - mem = mmap(0, SZ_MEM, PROT_READ | PROT_WRITE, - MAP_ANONYMOUS | MAP_PRIVATE | - MAP_HUGETLB | (LARGE_PAGE_SHIFT << MAP_HUGE_SHIFT), -1, 0); - CHKANDJUMP(mem == NULL, "mmap"); - memset(mem, 0, SZ_MEM); - - rc = xpmem_init(); - CHKANDJUMP(rc != 0, "xpmem_init"); - - segid = xpmem_make(mem, SZ_MEM, XPMEM_PERMIT_MODE, (void *)0666); - CHKANDJUMP(segid == -1, "xpmem_make"); - - fflush(0); - pid = fork(); - CHKANDJUMP(pid == -1, "fork failed\n"); - - if (pid == 0) { - /* Child process */ - apid = xpmem_get(segid, XPMEM_RDWR, XPMEM_PERMIT_MODE, NULL); - CHKANDJUMP(apid == -1, "xpmem_get in child"); - - addr.apid = -1; - addr.offset = 0; - attach = xpmem_attach(addr, SZ_MEM, NULL); - OKNG(attach != (void *)-1, - "xpmem_attach in childi failed (invalid apid)"); - - addr.apid = apid; - addr.offset = 0; - attach = xpmem_attach(addr, SZ_MEM, NULL); - CHKANDJUMP(attach == (void *)-1, "xpmem_attach in child"); - - addr.apid = apid; - addr.offset = 0; - attach = xpmem_attach(addr, SZ_MEM, NULL); - OKNG(attach == (void *)-1, - "xpmem_attach in child succeed (do twice to same apid)"); - - *((unsigned long *)attach) = TEST_VAL; - - rc = xpmem_detach(attach); - CHKANDJUMP(rc == -1, "xpmem_detach in child"); - - fflush(0); - _exit(0); - } else { - /* Parent process */ - rc = waitpid(pid, &status, 0); - CHKANDJUMP(rc == -1, "waitpid failed\n"); - - CHKANDJUMP(*((unsigned long *)mem) != TEST_VAL, - "validate TEST_VAL"); - - rc = xpmem_remove(segid); - CHKANDJUMP(rc == -1, "xpmem_remove"); - } - - printf("*** %s PASSED\n\n", basename(argv[0])); - return 0; - -fn_fail: - printf("*** %s FAILED\n\n", basename(argv[0])); - - return -1; -} diff --git a/test/xpmem/XTP_904.c b/test/xpmem/XTP_904.c deleted file mode 100644 index c923df44..00000000 --- a/test/xpmem/XTP_904.c +++ /dev/null @@ -1,90 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "util.h" - -#define BAD_ADDRESS ((void *) -1) - -int main(int argc, char **argv) -{ - void *mem, *attach; - int rc = 0; - int status; - pid_t pid; - xpmem_segid_t segid; - xpmem_apid_t apid; - struct xpmem_addr addr; - - printf("*** %s start ***\n", basename(argv[0])); - - mem = mmap(0, SZ_MEM, PROT_READ | PROT_WRITE, - MAP_ANONYMOUS | MAP_PRIVATE | - MAP_HUGETLB | (LARGE_PAGE_SHIFT << MAP_HUGE_SHIFT), -1, 0); - CHKANDJUMP(mem == NULL, "mmap"); - memset(mem, 0, SZ_MEM); - - rc = xpmem_init(); - CHKANDJUMP(rc != 0, "xpmem_init"); - - segid = xpmem_make(mem, SZ_MEM, XPMEM_PERMIT_MODE, (void *)0666); - CHKANDJUMP(segid == -1, "xpmem_make"); - - fflush(0); - pid = fork(); - CHKANDJUMP(pid == -1, "fork failed\n"); - - if (pid == 0) { - /* Child process */ - apid = xpmem_get(segid, XPMEM_RDWR, XPMEM_PERMIT_MODE, NULL); - CHKANDJUMP(apid == -1, "xpmem_get in child"); - - addr.apid = apid; - addr.offset = 0; - attach = xpmem_attach(addr, SZ_MEM, NULL); - CHKANDJUMP(attach == (void *)-1, "xpmem_attach in child"); - - *((unsigned long *)attach) = TEST_VAL; - - rc = xpmem_detach(BAD_ADDRESS); - OKNG(rc == -1, - "xpmem_detach in child succeed (invalid address)"); - - rc = xpmem_detach(attach); - CHKANDJUMP(rc == -1, "xpmem_detach in child"); - - rc = xpmem_detach(attach); - OKNG(rc == -1, - "xpmem_detach in child succeed (do twice to same address)"); - - fflush(0); - _exit(0); - } else { - /* Parent process */ - rc = waitpid(pid, &status, 0); - CHKANDJUMP(rc == -1, "waitpid failed\n"); - - CHKANDJUMP(*((unsigned long *)mem) != TEST_VAL, - "validate TEST_VAL"); - - rc = xpmem_remove(segid); - CHKANDJUMP(rc == -1, "xpmem_remove"); - } - - printf("*** %s PASSED\n\n", basename(argv[0])); - return 0; - -fn_fail: - printf("*** %s FAILED\n\n", basename(argv[0])); - - return -1; -} diff --git a/test/xpmem/XTP_905.c b/test/xpmem/XTP_905.c deleted file mode 100644 index 2897b897..00000000 --- a/test/xpmem/XTP_905.c +++ /dev/null @@ -1,88 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "util.h" - -#define BAD_SEGID -1 - -int main(int argc, char **argv) -{ - void *mem, *attach; - int rc = 0; - int status; - pid_t pid; - xpmem_segid_t segid; - xpmem_apid_t apid; - struct xpmem_addr addr; - - printf("*** %s start ***\n", basename(argv[0])); - - mem = mmap(0, SZ_MEM, PROT_READ | PROT_WRITE, - MAP_ANONYMOUS | MAP_PRIVATE | - MAP_HUGETLB | (LARGE_PAGE_SHIFT << MAP_HUGE_SHIFT), -1, 0); - CHKANDJUMP(mem == NULL, "mmap"); - memset(mem, 0, SZ_MEM); - - rc = xpmem_init(); - CHKANDJUMP(rc != 0, "xpmem_init"); - - segid = xpmem_make(mem, SZ_MEM, XPMEM_PERMIT_MODE, (void *)0666); - CHKANDJUMP(segid == -1, "xpmem_make"); - - fflush(0); - pid = fork(); - CHKANDJUMP(pid == -1, "fork failed\n"); - - if (pid == 0) { - /* Child process */ - apid = xpmem_get(segid, XPMEM_RDWR, XPMEM_PERMIT_MODE, NULL); - CHKANDJUMP(apid == -1, "xpmem_get in child"); - - addr.apid = apid; - addr.offset = 0; - attach = xpmem_attach(addr, SZ_MEM, NULL); - CHKANDJUMP(attach == (void *)-1, "xpmem_attach in child"); - - *((unsigned long *)attach) = TEST_VAL; - - rc = xpmem_detach(attach); - CHKANDJUMP(rc == -1, "xpmem_detach in child"); - - fflush(0); - _exit(0); - } else { - /* Parent process */ - rc = waitpid(pid, &status, 0); - CHKANDJUMP(rc == -1, "waitpid failed\n"); - - CHKANDJUMP(*((unsigned long *)mem) != TEST_VAL, - "validate TEST_VAL"); - - rc = xpmem_remove(BAD_SEGID); - OKNG(rc != -1, "xpmem_remove failed (invalid segid)"); - - rc = xpmem_remove(segid); - CHKANDJUMP(rc == -1, "xpmem_remove"); - - rc = xpmem_remove(segid); - OKNG(rc != -1, "xpmem_remove failed (do twice to same segid)"); - } - - printf("*** %s PASSED\n\n", basename(argv[0])); - return 0; - -fn_fail: - printf("*** %s FAILED\n\n", basename(argv[0])); - - return -1; -} diff --git a/test/xpmem/go_test.sh b/test/xpmem/go_test.sh deleted file mode 100755 index da0ac747..00000000 --- a/test/xpmem/go_test.sh +++ /dev/null @@ -1,36 +0,0 @@ -#!/usr/bin/bash - -USELTP=0 -USEOSTEST=0 - -XPMEM_DIR=$HOME/usr -XPMEM_BUILD_DIR=/home/satoken/xpmem - -. ../common.sh - -sudo insmod ${XPMEM_DIR}/lib/modules/`uname -r`/xpmem.ko -sudo chmod og+rw /dev/xpmem - -echo "*** XPMEM_TESTSUITE start *******************************" -cwd=`pwd` -cd ${XPMEM_BUILD_DIR}/test -${cwd}/mc_run.sh -cd ${cwd} - -# xpmem basic test -${MCEXEC} ./XTP_001 -${MCEXEC} ./XTP_002 -${MCEXEC} ./XTP_003 -${MCEXEC} ./XTP_004 -${MCEXEC} ./XTP_005 -${MCEXEC} ./XTP_006 -sleep 3 -${MCEXEC} ./XTP_007 - -${MCEXEC} ./XTP_901 -${MCEXEC} ./XTP_902 -${MCEXEC} ./XTP_903 -${MCEXEC} ./XTP_904 -${MCEXEC} ./XTP_905 - -sudo rmmod xpmem.ko diff --git a/test/xpmem/mc_run.sh b/test/xpmem/mc_run.sh deleted file mode 100755 index 07e9c954..00000000 --- a/test/xpmem/mc_run.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/usr/bin/env bash - -test -e /tmp/xpmem.share && rm -f /tmp/xpmem.share -test -e /tmp/xpmem.lock && rm -f /tmp/xpmem.lock - -# create TMP_SHARE_SIZE bytes defined in xpmem_test.h -for i in `seq 0 31` ; do - echo -n 0 >> /tmp/xpmem.share -done -echo 0 > /tmp/xpmem.lock - -# Run the main test app -mcexec $PWD/xpmem_master -exit 0 - diff --git a/test/xpmem/util.h b/test/xpmem/util.h deleted file mode 100644 index 3fe5b718..00000000 --- a/test/xpmem/util.h +++ /dev/null @@ -1,31 +0,0 @@ -#define CHKANDJUMP(cond, ...) do { \ - if (cond) { \ - fprintf(stderr, " [NG] "); \ - fprintf(stderr, __VA_ARGS__); \ - fprintf(stderr, " failed\n"); \ - goto fn_fail; \ - } \ -} while (0) - -#define OKNG(cond, ...) do { \ - if (cond) { \ - CHKANDJUMP(cond, __VA_ARGS__); \ - } else { \ - fprintf(stdout, " [OK] "); \ - fprintf(stdout, __VA_ARGS__); \ - fprintf(stdout, "\n"); \ - } \ -} while (0) - - -#ifdef __aarch64__ -#define LARGE_PAGE_SHIFT 21 -#elif defined(__x86_64__) -#define LARGE_PAGE_SHIFT 21 -#else -#error "Non-compliant architecture." -#endif - -#define MAP_HUGE_SHIFT 26 -#define SZ_MEM (2 * (1ULL << LARGE_PAGE_SHIFT)) -#define TEST_VAL 0x1129