Files
mckernel/test/issues/1259
Masamichi Takagi 29d27b7c8d Revert "xpmem: Use correct process_vm in xpmem functions"
This reverts commit 0c63a2a3cd.

Change-Id: I7a67def6c45a67396b15cc55e96ffb5fc5898f28
2020-06-16 13:25:51 +09:00
..
2019-12-06 09:30:51 +09:00
2019-12-06 09:30:51 +09:00
2019-12-06 09:30:51 +09:00
2019-12-06 09:30:51 +09:00
2019-12-06 09:30:51 +09:00
2019-12-06 09:30:51 +09:00
2019-12-06 09:30:51 +09:00
2019-12-06 09:30:51 +09:00
2019-12-06 09:30:51 +09:00
2019-12-06 09:30:51 +09:00
2019-12-06 09:30:51 +09:00
2019-12-06 09:30:51 +09:00
2019-12-06 09:30:51 +09:00
2019-12-06 09:30:51 +09:00
2019-12-06 09:30:51 +09:00

【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していることを確認。