【Issue#1259 動作確認】 □ テスト内容 1. Large pageでマップされたメモリ領域でのxpmemの動作確認 C1259T01: Large pageでマップされたメモリ領域に対してxpmem_attachを行った場合、 attach先の領域がxpmem_makeでページインされることを確認する また、xpmemでもLarge pageが利用されることを確認する C1259T02: Large pageでかつ、最後のページがLarge pageサイズでアラインされていない メモリ領域に対してxpmem_attachを行った場合、 xpmemでもLarge pageが利用されることを確認する C1259T03: Small pageでマップされたメモリ領域に対してxpmem_attachを行った場合、 xpmemでもSmall pageが利用されることを確認する C1259T04: small - large - small のように、異なるページサイズの複数のvm_rangeから 構成されるメモリ領域に対してxpmem_attach を行った場合、 xpmemでも同じ構成でLarge pageが利用されることを確認する 2. xpmemのテストスイートによる動作確認 xpmemに付属するテストスイートをMcKernelで実行し、PASSすることを確認する 3. xpmemの基本操作の確認 xpmemで操作するメモリ領域は、Large pageでマップする 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_make 呼び出しの異常系 1. xpmem_make の第1引数に不正なアドレスを指定する (失敗) 2. 1度xpmem_make を実施したメモリ領域に対して、再度xpmem_make を行う (成功) XTP_008: xpmem_get 呼び出しの異常系 1. xpmem_get の第1引数に不正なsegidを指定する (失敗) 2. 1度xpmem_get を実施したsegidで、再度xpmem_get を行う (成功) XTP_009: xpmem_attach 呼び出しの異常系 1. xpmem_attach の第1引数に不正なapidを指定する (失敗) 2. 1度xpmem_attach を実施したapidで、再度xpmem_attach を行う (成功) XTP_010: xpmem_detach 呼び出しの異常系 1. xpmem_detach の第1引数に不正なアドレスを指定する (成功) 2. 1度xpmem_detach を実施したメモリ領域に対して、再度xpmem_detach を行う (成功) XTP_011: xpmem_remove 呼び出しの異常系 1. xpmem_remove の第1引数に不正なsegidを指定する (失敗) 2. 1度xpmem_remove を実施したsegidで、再度xpmem_remove を行う (失敗) □ 実行手順 1. xpmemのインストールディレクトリをMakefileとC1259.sh中のXPMEM_DIRに記載する 2. xpmemのビルドディレクトリをC1259.sh中のXPMEM_BUILD_DIRに記載する 3. 下記の手順でテストを実行する $ cd <mckernel> $ patch -p0 < test/issues/1259/large_page.patch (build mckernel) $ cd test/issues/1259 $ 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していることを確認。