1. try to use as large page as possible on attach 2. pre-map resident remote pages on attach Change-Id: I5580682a4199e94085a9bad9ce3958a0f14cdcea
105 lines
4.7 KiB
Plaintext
105 lines
4.7 KiB
Plaintext
【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していることを確認。
|