rename files

This commit is contained in:
Tomoki Shirasawa
2018-03-23 15:35:24 +09:00
parent 309da8fc53
commit 81d18e35dd
50 changed files with 255 additions and 244 deletions

View File

@ -57,17 +57,17 @@ main(int argc, char **argv)
pipe(fds);
rc = read(fds[0], &c, 1);
if (rc != -1) {
fprintf(stderr, "CT3001 NG BAD read rc=%d\n", rc);
fprintf(stderr, "CT2001 NG BAD read rc=%d\n", rc);
exit(1);
}
if (errno != EINTR) {
fprintf(stderr, "CT3001 NG BAD error errno=%d\n", errno);
fprintf(stderr, "CT2001 NG BAD error errno=%d\n", errno);
exit(1);
}
tv_sub(&tv2, &tv1);
if (tv2.tv_sec != 3)
fprintf(stderr, "CT3001 NG signal delayed (%d.%06d)\n", tv2.tv_sec, tv2.tv_usec);
fprintf(stderr, "CT2001 NG signal delayed (%d.%06d)\n", tv2.tv_sec, tv2.tv_usec);
else
fprintf(stderr, "CT3001 OK\n");
fprintf(stderr, "CT2001 OK\n");
exit(0);
}

View File

@ -1,3 +1,3 @@
#!/bin/sh
MCEXEC=mcexec
$MCEXEC ./CT3003
$MCEXEC ./CT2001

View File

@ -42,13 +42,13 @@ main(int argc, char **argv)
alarm(1);
rc = read(fd, buf, FILESIZE);
if (rc == -1) {
fprintf(stderr, "CT3002 NG BAD read rc=%ld errno=%d\n", rc, errno);
fprintf(stderr, "CT2002 NG BAD read rc=%ld errno=%d\n", rc, errno);
exit(1);
}
if (sigcalled == 0) {
fprintf(stderr, "CT3002 NG signal handler was not called\n");
fprintf(stderr, "CT2002 NG signal handler was not called\n");
exit(1);
}
fprintf(stderr, "CT3002 OK\n");
fprintf(stderr, "CT2002 OK\n");
exit(0);
}

View File

@ -3,5 +3,5 @@ MCEXEC=mcexec
dd if=/dev/zero of=testfile bs=$((1024 * 1024)) count=$((2 * 1024))
sync
sudo /sbin/sysctl vm.drop_caches=3
$MCEXEC ./CT3004
$MCEXEC ./CT2002
rm -f testfile

View File

@ -63,21 +63,21 @@ main(int argc, char **argv)
while ((rc = waitpid(pid, &st, 0)) == -1 && errno == EINTR);
fprintf(stderr, "%s child process terminated\n", gettime(buf, &tv2));
if (rc != pid) {
fprintf(stderr, "CT3003 NG BAD wait rc=%d errno=%d\n", rc, errno);
fprintf(stderr, "CT2003 NG BAD wait rc=%d errno=%d\n", rc, errno);
exit(1);
}
if (!WIFSIGNALED(st)) {
fprintf(stderr, "CT3003 NG no signaled st=%08x\n", st);
fprintf(stderr, "CT2003 NG no signaled st=%08x\n", st);
exit(1);
}
if (WTERMSIG(st) != SIGALRM) {
fprintf(stderr, "CT3003 NG BAD signal sig=%d\n", WTERMSIG(st));
fprintf(stderr, "CT2003 NG BAD signal sig=%d\n", WTERMSIG(st));
exit(1);
}
tv_sub(&tv2, &tv1);
if (tv2.tv_sec != 3)
fprintf(stderr, "CT3003 NG signal delayed (%d.%06d)\n", tv2.tv_sec, tv2.tv_usec);
fprintf(stderr, "CT2003 NG signal delayed (%d.%06d)\n", tv2.tv_sec, tv2.tv_usec);
else
fprintf(stderr, "CT3003 OK\n");
fprintf(stderr, "CT2003 OK\n");
exit(0);
}

View File

@ -1,3 +1,3 @@
#!/bin/sh
MCEXEC=mcexec
$MCEXEC ./CT3001
$MCEXEC ./CT2003

View File

@ -74,21 +74,21 @@ main(int argc, char **argv)
while ((rc = waitpid(pid, &st, 0)) == -1 && errno == EINTR);
fprintf(stderr, "%s child process terminated\n", gettime(buf, &tv2));
if (rc != pid) {
fprintf(stderr, "CT3004 NG BAD wait rc=%d errno=%d\n", rc, errno);
fprintf(stderr, "CT2004 NG BAD wait rc=%d errno=%d\n", rc, errno);
exit(1);
}
if (!WIFSIGNALED(st)) {
fprintf(stderr, "CT3004 NG no signaled st=%08x\n", st);
fprintf(stderr, "CT2004 NG no signaled st=%08x\n", st);
exit(1);
}
if (WTERMSIG(st) != SIGALRM) {
fprintf(stderr, "CT3004 NG BAD signal sig=%d\n", WTERMSIG(st));
fprintf(stderr, "CT2004 NG BAD signal sig=%d\n", WTERMSIG(st));
exit(1);
}
tv_sub(&tv2, &tv1);
if (tv2.tv_sec != 1)
fprintf(stderr, "CT3004 OK (%d.%06d)\n", tv2.tv_sec, tv2.tv_usec);
fprintf(stderr, "CT2004 OK (%d.%06d)\n", tv2.tv_sec, tv2.tv_usec);
else
fprintf(stderr, "CT3004 OK\n");
fprintf(stderr, "CT2004 OK\n");
exit(0);
}

View File

@ -3,5 +3,5 @@ MCEXEC=mcexec
dd if=/dev/zero of=testfile bs=$((1024 * 1024)) count=$((2 * 1024))
sync
sudo /sbin/sysctl vm.drop_caches=3
$MCEXEC ./CT3006
$MCEXEC ./CT2004
rm -f testfile

View File

@ -54,17 +54,17 @@ main(int argc, char **argv)
alarm(2);
while ((rc = waitpid(pid, &st, 0)) == -1 && errno == EINTR);
if (rc != pid) {
fprintf(stderr, "CT3005 NG BAD wait rc=%d errno=%d\n", rc, errno);
fprintf(stderr, "CT2005 NG BAD wait rc=%d errno=%d\n", rc, errno);
exit(1);
}
if (!WIFSIGNALED(st)) {
fprintf(stderr, "CT3005 NG no signaled st=%08x\n", st);
fprintf(stderr, "CT2005 NG no signaled st=%08x\n", st);
exit(1);
}
if (WTERMSIG(st) != SIGINT) {
fprintf(stderr, "CT3005 NG BAD signal sig=%d\n", WTERMSIG(st));
fprintf(stderr, "CT2005 NG BAD signal sig=%d\n", WTERMSIG(st));
exit(1);
}
fprintf(stderr, "CT3005 OK\n");
fprintf(stderr, "CT2005 OK\n");
exit(0);
}

View File

@ -1,3 +1,3 @@
#!/bin/sh
MCEXEC=mcexec
$MCEXEC ./CT3005
$MCEXEC ./CT2005

View File

@ -55,21 +55,21 @@ main(int argc, char **argv)
alarm(2);
while ((rc = waitpid(pid, &st, 0)) == -1 && errno == EINTR);
if (rc != pid) {
fprintf(stderr, "CT3006 NG BAD wait rc=%d errno=%d\n", rc, errno);
fprintf(stderr, "CT2006 NG BAD wait rc=%d errno=%d\n", rc, errno);
exit(1);
}
if (WIFSIGNALED(st)) {
fprintf(stderr, "CT3006 NG BAD signal st=%08x\n", st);
fprintf(stderr, "CT2006 NG BAD signal st=%08x\n", st);
exit(1);
}
if (!WIFEXITED(st)) {
fprintf(stderr, "CT3006 NG BAD terminated st=%08x\n", st);
fprintf(stderr, "CT2006 NG BAD terminated st=%08x\n", st);
exit(1);
}
if (WEXITSTATUS(st) != 99) {
fprintf(stderr, "CT3006 NG BAD exit status st=%08x\n", st);
fprintf(stderr, "CT2006 NG BAD exit status st=%08x\n", st);
exit(1);
}
fprintf(stderr, "CT3006 OK\n");
fprintf(stderr, "CT2006 OK\n");
exit(0);
}

View File

@ -3,5 +3,5 @@ MCEXEC=mcexec
dd if=/dev/zero of=testfile bs=$((1024 * 1024)) count=$((2 * 1024))
sync
sudo /sbin/sysctl vm.drop_caches=3
$MCEXEC ./CT3008
$MCEXEC ./CT2006
rm -f testfile

View File

@ -55,17 +55,17 @@ main(int argc, char **argv)
alarm(2);
while ((rc = waitpid(pid, &st, 0)) == -1 && errno == EINTR);
if (rc != pid) {
fprintf(stderr, "CT3007 NG BAD wait rc=%d errno=%d\n", rc, errno);
fprintf(stderr, "CT2007 NG BAD wait rc=%d errno=%d\n", rc, errno);
exit(1);
}
if (!WIFSIGNALED(st)) {
fprintf(stderr, "CT3007 NG no signaled st=%08x\n", st);
fprintf(stderr, "CT2007 NG no signaled st=%08x\n", st);
exit(1);
}
if (WTERMSIG(st) != SIGINT) {
fprintf(stderr, "CT3007 NG BAD signal sig=%d\n", WTERMSIG(st));
fprintf(stderr, "CT2007 NG BAD signal sig=%d\n", WTERMSIG(st));
exit(1);
}
fprintf(stderr, "CT3007 OK\n");
fprintf(stderr, "CT2007 OK\n");
exit(0);
}

View File

@ -1,3 +1,3 @@
#!/bin/sh
MCEXEC=mcexec
$MCEXEC ./CT3007
$MCEXEC ./CT2007

View File

@ -56,21 +56,21 @@ main(int argc, char **argv)
alarm(2);
while ((rc = waitpid(pid, &st, 0)) == -1 && errno == EINTR);
if (rc != pid) {
fprintf(stderr, "CT3008 NG BAD wait rc=%d errno=%d\n", rc, errno);
fprintf(stderr, "CT2008 NG BAD wait rc=%d errno=%d\n", rc, errno);
exit(1);
}
if (WIFSIGNALED(st)) {
fprintf(stderr, "CT3008 NG BAD signal st=%08x\n", st);
fprintf(stderr, "CT2008 NG BAD signal st=%08x\n", st);
exit(1);
}
if (!WIFEXITED(st)) {
fprintf(stderr, "CT3008 NG BAD terminated st=%08x\n", st);
fprintf(stderr, "CT2008 NG BAD terminated st=%08x\n", st);
exit(1);
}
if (WEXITSTATUS(st) != 99) {
fprintf(stderr, "CT3008 NG BAD exit status st=%08x\n", st);
fprintf(stderr, "CT2008 NG BAD exit status st=%08x\n", st);
exit(1);
}
fprintf(stderr, "CT3008 OK\n");
fprintf(stderr, "CT2008 OK\n");
exit(0);
}

View File

@ -3,5 +3,5 @@ MCEXEC=mcexec
dd if=/dev/zero of=testfile bs=$((1024 * 1024)) count=$((2 * 1024))
sync
sudo /sbin/sysctl vm.drop_caches=3
$MCEXEC ./CT3002
$MCEXEC ./CT2008
rm -f testfile

View File

@ -2,11 +2,11 @@
MCKERNEL_DIR=/home/shirasawa/wallaby11-smp-x86/development/mic
export PATH=$MCKERNEL_DIR/bin:$PATH
./CT3001.sh
./CT3002.sh
./CT3003.sh
./CT3004.sh
./CT3005.sh
./CT3006.sh
./CT3007.sh
./CT3008.sh
./CT2001.sh
./CT2002.sh
./CT2003.sh
./CT2004.sh
./CT2005.sh
./CT2006.sh
./CT2007.sh
./CT2008.sh

View File

@ -1,43 +1,43 @@
スクリプトは Fri Mar 23 14:44:56 2018
に開始しました[?1034hbash-4.2$ make test
./CT300x.sh
./CT200x.sh
14:44:59.479215 test start, kill after 3 seconds
14:45:02.479661 signal hanlder is called
CT3001 OK
CT2001 OK
2048+0 レコード入力
2048+0 レコード出力
2147483648 バイト (2.1 GB) コピーされました、 19.5222 秒、 110 MB/秒
vm.drop_caches = 3
signal hanlder is called
CT3002 OK
CT2002 OK
14:45:46.852481 test start, kill after 3 seconds
14:45:49.866473 child process terminated
CT3003 OK
CT2003 OK
2048+0 レコード入力
2048+0 レコード出力
2147483648 バイト (2.1 GB) コピーされました、 19.513 秒、 110 MB/秒
vm.drop_caches = 3
14:46:09.750053 test start, kill after 1 seconds
14:46:11.100485 child process terminated
CT3004 OK
CT2004 OK
kill SIGURG
kill SIGINT
CT3005 OK
CT2005 OK
2048+0 レコード入力
2048+0 レコード出力
2147483648 バイト (2.1 GB) コピーされました、 19.5075 秒、 110 MB/秒
vm.drop_caches = 3
kill SIGURG
CT3006 OK
CT2006 OK
kill SIGTERM (ignored)
kill SIGINT
CT3007 OK
CT2007 OK
2048+0 レコード入力
2048+0 レコード出力
2147483648 バイト (2.1 GB) コピーされました、 19.5217 秒、 110 MB/秒
vm.drop_caches = 3
kill SIGTERM (ignored)
CT3008 OK
CT2008 OK
bash-4.2$ exit
exit

View File

@ -1,3 +0,0 @@
#!/bin/sh
MCEXEC=mcexec
./CT4000 ./CT4001

View File

@ -1,7 +0,0 @@
#!/bin/sh
MCEXEC=mcexec
dd if=/dev/zero of=testfile bs=$((1024 * 1024)) count=$((2 * 1024))
sync
sudo /sbin/sysctl vm.drop_caches=3
./CT4000 ./CT4002
rm -f testfile

View File

@ -1,3 +0,0 @@
#!/bin/sh
MCEXEC=mcexec
./CT4000 ./CT4003

View File

@ -1,7 +0,0 @@
#!/bin/sh
MCEXEC=mcexec
dd if=/dev/zero of=testfile bs=$((1024 * 1024)) count=$((2 * 1024))
sync
sudo /sbin/sysctl vm.drop_caches=3
./CT4000 ./CT4004
rm -f testfile

View File

@ -1,3 +0,0 @@
#!/bin/sh
MCEXEC=mcexec
./CT4000 ./CT4005

View File

@ -1,7 +0,0 @@
#!/bin/sh
MCEXEC=mcexec
dd if=/dev/zero of=testfile bs=$((1024 * 1024)) count=$((2 * 1024))
sync
sudo /sbin/sysctl vm.drop_caches=3
./CT4000 ./CT4006
rm -f testfile

View File

@ -1,3 +0,0 @@
#!/bin/sh
MCEXEC=mcexec
./CT4000 ./CT4007

View File

@ -1,7 +0,0 @@
#!/bin/sh
MCEXEC=mcexec
dd if=/dev/zero of=testfile bs=$((1024 * 1024)) count=$((2 * 1024))
sync
sudo /sbin/sysctl vm.drop_caches=3
./CT4000 ./CT4008
rm -f testfile

View File

@ -1,64 +1,33 @@
CC=gcc
TARGET=CT3001 CT3002 CT3003 CT3004 CT3005 CT3006 CT3007 CT3008 \
CT4001 CT4002 CT4003 CT4004 CT4005 CT4006 CT4007 CT4008 CT4000
TARGET=CT2001 CT2002 CT2003 CT2004 CT2005 CT2006 CT2007 CT2008
all:: $(TARGET)
CT3001: CT3001.c
$(CC) -o CT3001 $<
CT2001: CT2001.c
$(CC) -o CT2001 $<
CT3002: CT3002.c
$(CC) -o CT3002 $<
CT2002: CT2002.c
$(CC) -o CT2002 $<
CT3003: CT3003.c
$(CC) -o CT3003 $<
CT2003: CT2003.c
$(CC) -o CT2003 $<
CT3004: CT3004.c
$(CC) -o CT3004 $<
CT2004: CT2004.c
$(CC) -o CT2004 $<
CT3005: CT3005.c
$(CC) -o CT3005 $<
CT2005: CT2005.c
$(CC) -o CT2005 $<
CT3006: CT3006.c
$(CC) -o CT3006 $<
CT2006: CT2006.c
$(CC) -o CT2006 $<
CT3007: CT3007.c
$(CC) -o CT3007 $<
CT2007: CT2007.c
$(CC) -o CT2007 $<
CT3008: CT3008.c
$(CC) -o CT3008 $<
CT4000: CT4000.c
$(CC) -o CT4000 $<
CT4001: CT4001.c
$(CC) -o CT4001 $<
CT4002: CT4002.c
$(CC) -o CT4002 $<
CT4003: CT4003.c
$(CC) -o CT4003 $<
CT4004: CT4004.c
$(CC) -o CT4004 $<
CT4005: CT4005.c
$(CC) -o CT4005 $<
CT4006: CT4006.c
$(CC) -o CT4006 $<
CT4007: CT4007.c
$(CC) -o CT4007 $<
CT4008: CT4008.c
$(CC) -o CT4008 $<
CT2008: CT2008.c
$(CC) -o CT2008 $<
test:: $(TARGET)
./CT300x.sh
test2:: $(TARGET)
./CT400x.sh
./CT200x.sh
clean::
rm -f $(TARGET)

View File

@ -1,66 +1,36 @@
【Issue#863 動作確認】
1. Issue#863および、同件のIssue#870で指摘されたテストプログラムを用いて
現象が解消されていることを確認した。(2件)
1. Issue#863で指摘されたテストプログラムを用いて現象が解消されていることを
確認した。(2件)
Issue#863の実行方法は、stress_test のディレクトリで以下のコマンドを実行する。
/path/to/mcexec/mcexec ./signalonread-multi
Issue#870の実行方法は、stress_test のディレクトリで以下のコマンドを実行する。
./mck-mcexec.sh ./killit -t 4000 - ./signalonread -nt 4 -nosignal
実行結果(エビデンス)は以下の通り。
CT1001.txt Issue#863の指摘で使用されたテストプログラムの実行結果(OK 1件、NG 0件)
CT2001.txt Issue#870の指摘で使用されたテストプログラムの実行結果(OK 1件、NG 0件)
2. Issue#863の変更が、McKernelプロセス間のシグナルに対する既存処理に
影響しないことを確認した。
確認内容は以下の通り。
CT3001 遅いI/Oシステムコール実行中にシグナルを受け、即座にシグナル
CT2001 遅いI/Oシステムコール実行中にシグナルを受け、即座にシグナル
ハンドラが呼び出され、システムコールがEINTRを返却することを
確認する。
CT3002 遅くないI/Oシステムコール実行中にシグナルを受け、システム
CT2002 遅くないI/Oシステムコール実行中にシグナルを受け、システム
コール完了後にシグナルハンドラが呼び出され、システムコール
が正常に終了することを確認する。
CT3003 遅いI/Oシステムコール実行中にプログラムを終了するシグナルを
CT2003 遅いI/Oシステムコール実行中にプログラムを終了するシグナルを
受けとると、即座にプログラムが終了することを確認する。
CT3004 遅くないI/Oシステムコール実行中にプログラムを終了するシグナル
CT2004 遅くないI/Oシステムコール実行中にプログラムを終了するシグナル
を受けとると、即座にプログラムを終了することを確認する。
CT3005 遅いI/Oシステムコール実行中にプログラムを終了しないシグナル(SIGURG)
CT2005 遅いI/Oシステムコール実行中にプログラムを終了しないシグナル(SIGURG)
を受けとっても、プログラムの実行に影響しないことを確認する。
CT3006 遅くないI/Oシステムコール実行中にプログラムを終了しないシグナル
CT2006 遅くないI/Oシステムコール実行中にプログラムを終了しないシグナル
(SIGURG)を受けとっても、プログラムの実行に影響しないことを確認する。
CT3007 遅いI/Oシステムコール実行中に無視(SIG_IGN)するシグナルを
CT2007 遅いI/Oシステムコール実行中に無視(SIG_IGN)するシグナルを
受けとっても、プログラムの実行に影響しないことを確認する。
CT3008 遅くないI/Oシステムコール実行中に無視(SIG_IGN)するシグナルを
CT2008 遅くないI/Oシステムコール実行中に無視(SIG_IGN)するシグナルを
受けとっても、プログラムの実行に影響しないことを確認する。
CT300x の実行は、make test で行う。
エビデンスは CT300x.txt に示す。(OK 8件、NG 0件)
3. Issue#863の変更が、Linuxからmcexec経由でMcKernelプロセスに届くシグナルの
既存処理に影響しないことを確認した (Issue#870対応の確認)。
確認内容は以下の通り。
CT4001 遅いI/Oシステムコール実行中にシグナルを受け、即座にシグナル
ハンドラが呼び出され、システムコールがEINTRを返却することを
確認する。
CT4002 遅くないI/Oシステムコール実行中にシグナルを受け、システム
コール完了後にシグナルハンドラが呼び出され、システムコール
が正常に終了することを確認する。
CT4003 遅いI/Oシステムコール実行中にプログラムを終了するシグナルを
受けとると、即座にプログラムが終了することを確認する。
CT4004 遅くないI/Oシステムコール実行中にプログラムを終了するシグナル
を受けとると、即座にプログラムを終了することを確認する。
CT4005 遅いI/Oシステムコール実行中にプログラムを終了しないシグナル(SIGURG)
を受けとっても、プログラムの実行に影響しないことを確認する。
CT4006 遅くないI/Oシステムコール実行中にプログラムを終了しないシグナル
(SIGURG)を受けとっても、プログラムの実行に影響しないことを確認する。
CT4007 遅いI/Oシステムコール実行中に無視(SIG_IGN)するシグナルを
受けとっても、プログラムの実行に影響しないことを確認する。
CT4008 遅くないI/Oシステムコール実行中に無視(SIG_IGN)するシグナルを
受けとっても、プログラムの実行に影響しないことを確認する。
CT400x の実行は、make test2 で行う。
エビデンスは CT400x.txt に示す。(OK 8件、NG 0件)
CT200x の実行は、make test で行う。
エビデンスは CT200x.txt に示す。(OK 8件、NG 0件)

View File

@ -25,7 +25,7 @@ readline(int fd, char *buf)
exit(1);
}
if (!rc) {
fprintf(stderr, "CT400x read: BAD EOF\n");
fprintf(stderr, "CT200x read: BAD EOF\n");
exit(1);
}
*buf = '\0';

View File

@ -61,17 +61,17 @@ main(int argc, char **argv)
pipe(fds);
rc = read(fds[0], &c, 1);
if (rc != -1) {
fprintf(stderr, "CT4001 NG BAD read rc=%d\n", rc);
fprintf(stderr, "CT2001 NG BAD read rc=%d\n", rc);
exit(1);
}
if (errno != EINTR) {
fprintf(stderr, "CT4001 NG BAD error errno=%d\n", errno);
fprintf(stderr, "CT2001 NG BAD error errno=%d\n", errno);
exit(1);
}
tv_sub(&tv2, &tv1);
if (tv2.tv_sec != 3)
fprintf(stderr, "CT4001 NG signal delayed (%d.%06d)\n", tv2.tv_sec, tv2.tv_usec);
fprintf(stderr, "CT2001 NG signal delayed (%d.%06d)\n", tv2.tv_sec, tv2.tv_usec);
else
fprintf(stderr, "CT4001 OK\n");
fprintf(stderr, "CT2001 OK\n");
exit(0);
}

View File

@ -0,0 +1,3 @@
#!/bin/sh
MCEXEC=mcexec
./CT2000 ./CT2001

View File

@ -46,13 +46,13 @@ main(int argc, char **argv)
write(fd, line, strlen(line));
rc = read(ofd, buf, FILESIZE);
if (rc == -1) {
fprintf(stderr, "CT4002 NG BAD read rc=%ld errno=%d\n", rc, errno);
fprintf(stderr, "CT2002 NG BAD read rc=%ld errno=%d\n", rc, errno);
exit(1);
}
if (sigcalled == 0) {
fprintf(stderr, "CT4002 NG signal handler was not called\n");
fprintf(stderr, "CT2002 NG signal handler was not called\n");
exit(1);
}
fprintf(stderr, "CT4002 OK\n");
fprintf(stderr, "CT2002 OK\n");
exit(0);
}

View File

@ -0,0 +1,7 @@
#!/bin/sh
MCEXEC=mcexec
dd if=/dev/zero of=testfile bs=$((1024 * 1024)) count=$((2 * 1024))
sync
sudo /sbin/sysctl vm.drop_caches=3
./CT2000 ./CT2002
rm -f testfile

View File

@ -67,21 +67,21 @@ main(int argc, char **argv)
while ((rc = waitpid(pid, &st, 0)) == -1 && errno == EINTR);
fprintf(stderr, "%s child process terminated\n", gettime(buf, &tv2));
if (rc != pid) {
fprintf(stderr, "CT4003 NG BAD wait rc=%d errno=%d\n", rc, errno);
fprintf(stderr, "CT2003 NG BAD wait rc=%d errno=%d\n", rc, errno);
exit(1);
}
if (!WIFSIGNALED(st)) {
fprintf(stderr, "CT4003 NG no signaled st=%08x\n", st);
fprintf(stderr, "CT2003 NG no signaled st=%08x\n", st);
exit(1);
}
if (WTERMSIG(st) != SIGALRM) {
fprintf(stderr, "CT4003 NG BAD signal sig=%d\n", WTERMSIG(st));
fprintf(stderr, "CT2003 NG BAD signal sig=%d\n", WTERMSIG(st));
exit(1);
}
tv_sub(&tv2, &tv1);
if (tv2.tv_sec != 3)
fprintf(stderr, "CT4003 NG signal delayed (%d.%06d)\n", tv2.tv_sec, tv2.tv_usec);
fprintf(stderr, "CT2003 NG signal delayed (%d.%06d)\n", tv2.tv_sec, tv2.tv_usec);
else
fprintf(stderr, "CT4003 OK\n");
fprintf(stderr, "CT2003 OK\n");
exit(0);
}

View File

@ -0,0 +1,3 @@
#!/bin/sh
MCEXEC=mcexec
./CT2000 ./CT2003

View File

@ -78,21 +78,21 @@ main(int argc, char **argv)
while ((rc = waitpid(pid, &st, 0)) == -1 && errno == EINTR);
fprintf(stderr, "%s child process terminated\n", gettime(buf, &tv2));
if (rc != pid) {
fprintf(stderr, "CT4004 NG BAD wait rc=%d errno=%d\n", rc, errno);
fprintf(stderr, "CT2004 NG BAD wait rc=%d errno=%d\n", rc, errno);
exit(1);
}
if (!WIFSIGNALED(st)) {
fprintf(stderr, "CT4004 NG no signaled st=%08x\n", st);
fprintf(stderr, "CT2004 NG no signaled st=%08x\n", st);
exit(1);
}
if (WTERMSIG(st) != SIGALRM) {
fprintf(stderr, "CT4004 NG BAD signal sig=%d\n", WTERMSIG(st));
fprintf(stderr, "CT2004 NG BAD signal sig=%d\n", WTERMSIG(st));
exit(1);
}
tv_sub(&tv2, &tv1);
if (tv2.tv_sec != 1)
fprintf(stderr, "CT4004 OK (%d.%06d)\n", tv2.tv_sec, tv2.tv_usec);
fprintf(stderr, "CT2004 OK (%d.%06d)\n", tv2.tv_sec, tv2.tv_usec);
else
fprintf(stderr, "CT4004 OK\n");
fprintf(stderr, "CT2004 OK\n");
exit(0);
}

View File

@ -0,0 +1,7 @@
#!/bin/sh
MCEXEC=mcexec
dd if=/dev/zero of=testfile bs=$((1024 * 1024)) count=$((2 * 1024))
sync
sudo /sbin/sysctl vm.drop_caches=3
./CT2000 ./CT2004
rm -f testfile

View File

@ -58,17 +58,17 @@ main(int argc, char **argv)
alarm(2);
while ((rc = waitpid(pid, &st, 0)) == -1 && errno == EINTR);
if (rc != pid) {
fprintf(stderr, "CT4005 NG BAD wait rc=%d errno=%d\n", rc, errno);
fprintf(stderr, "CT2005 NG BAD wait rc=%d errno=%d\n", rc, errno);
exit(1);
}
if (!WIFSIGNALED(st)) {
fprintf(stderr, "CT4005 NG no signaled st=%08x\n", st);
fprintf(stderr, "CT2005 NG no signaled st=%08x\n", st);
exit(1);
}
if (WTERMSIG(st) != SIGINT) {
fprintf(stderr, "CT4005 NG BAD signal sig=%d\n", WTERMSIG(st));
fprintf(stderr, "CT2005 NG BAD signal sig=%d\n", WTERMSIG(st));
exit(1);
}
fprintf(stderr, "CT4005 OK\n");
fprintf(stderr, "CT2005 OK\n");
exit(0);
}

View File

@ -0,0 +1,3 @@
#!/bin/sh
MCEXEC=mcexec
./CT2000 ./CT2005

View File

@ -60,21 +60,21 @@ main(int argc, char **argv)
alarm(2);
while ((rc = waitpid(pid, &st, 0)) == -1 && errno == EINTR);
if (rc != pid) {
fprintf(stderr, "CT4006 NG BAD wait rc=%d errno=%d\n", rc, errno);
fprintf(stderr, "CT2006 NG BAD wait rc=%d errno=%d\n", rc, errno);
exit(1);
}
if (WIFSIGNALED(st)) {
fprintf(stderr, "CT4006 NG BAD signal st=%08x\n", st);
fprintf(stderr, "CT2006 NG BAD signal st=%08x\n", st);
exit(1);
}
if (!WIFEXITED(st)) {
fprintf(stderr, "CT4006 NG BAD terminated st=%08x\n", st);
fprintf(stderr, "CT2006 NG BAD terminated st=%08x\n", st);
exit(1);
}
if (WEXITSTATUS(st) != 99) {
fprintf(stderr, "CT4006 NG BAD exit status st=%08x\n", st);
fprintf(stderr, "CT2006 NG BAD exit status st=%08x\n", st);
exit(1);
}
fprintf(stderr, "CT4006 OK\n");
fprintf(stderr, "CT2006 OK\n");
exit(0);
}

View File

@ -0,0 +1,7 @@
#!/bin/sh
MCEXEC=mcexec
dd if=/dev/zero of=testfile bs=$((1024 * 1024)) count=$((2 * 1024))
sync
sudo /sbin/sysctl vm.drop_caches=3
./CT2000 ./CT2006
rm -f testfile

View File

@ -60,17 +60,17 @@ main(int argc, char **argv)
alarm(2);
while ((rc = waitpid(pid, &st, 0)) == -1 && errno == EINTR);
if (rc != pid) {
fprintf(stderr, "CT4007 NG BAD wait rc=%d errno=%d\n", rc, errno);
fprintf(stderr, "CT2007 NG BAD wait rc=%d errno=%d\n", rc, errno);
exit(1);
}
if (!WIFSIGNALED(st)) {
fprintf(stderr, "CT4007 NG no signaled st=%08x\n", st);
fprintf(stderr, "CT2007 NG no signaled st=%08x\n", st);
exit(1);
}
if (WTERMSIG(st) != SIGINT) {
fprintf(stderr, "CT4007 NG BAD signal sig=%d\n", WTERMSIG(st));
fprintf(stderr, "CT2007 NG BAD signal sig=%d\n", WTERMSIG(st));
exit(1);
}
fprintf(stderr, "CT4007 OK\n");
fprintf(stderr, "CT2007 OK\n");
exit(0);
}

View File

@ -0,0 +1,3 @@
#!/bin/sh
MCEXEC=mcexec
./CT2000 ./CT2007

View File

@ -60,21 +60,21 @@ main(int argc, char **argv)
alarm(2);
while ((rc = waitpid(pid, &st, 0)) == -1 && errno == EINTR);
if (rc != pid) {
fprintf(stderr, "CT4008 NG BAD wait rc=%d errno=%d\n", rc, errno);
fprintf(stderr, "CT2008 NG BAD wait rc=%d errno=%d\n", rc, errno);
exit(1);
}
if (WIFSIGNALED(st)) {
fprintf(stderr, "CT4008 NG BAD signal st=%08x\n", st);
fprintf(stderr, "CT2008 NG BAD signal st=%08x\n", st);
exit(1);
}
if (!WIFEXITED(st)) {
fprintf(stderr, "CT4008 NG BAD terminated st=%08x\n", st);
fprintf(stderr, "CT2008 NG BAD terminated st=%08x\n", st);
exit(1);
}
if (WEXITSTATUS(st) != 99) {
fprintf(stderr, "CT4008 NG BAD exit status st=%08x\n", st);
fprintf(stderr, "CT2008 NG BAD exit status st=%08x\n", st);
exit(1);
}
fprintf(stderr, "CT4008 OK\n");
fprintf(stderr, "CT2008 OK\n");
exit(0);
}

View File

@ -0,0 +1,7 @@
#!/bin/sh
MCEXEC=mcexec
dd if=/dev/zero of=testfile bs=$((1024 * 1024)) count=$((2 * 1024))
sync
sudo /sbin/sysctl vm.drop_caches=3
./CT2000 ./CT2008
rm -f testfile

View File

@ -2,11 +2,11 @@
MCKERNEL_DIR=/home/shirasawa/wallaby11-smp-x86/development/mic
export PATH=$MCKERNEL_DIR/bin:$PATH
./CT4001.sh
./CT4002.sh
./CT4003.sh
./CT4004.sh
./CT4005.sh
./CT4006.sh
./CT4007.sh
./CT4008.sh
./CT2001.sh
./CT2002.sh
./CT2003.sh
./CT2004.sh
./CT2005.sh
./CT2006.sh
./CT2007.sh
./CT2008.sh

View File

@ -1,43 +1,43 @@
スクリプトは Fri Mar 23 14:34:24 2018
に開始しました[?1034hbash-4.2$ make test2
./CT400x.sh
./CT200x.sh
14:34:27.063487 test start, kill after 3 seconds
14:34:30.063982 signal hanlder is called
CT4001 OK
CT2001 OK
2048+0 レコード入力
2048+0 レコード出力
2147483648 バイト (2.1 GB) コピーされました、 19.4964 秒、 110 MB/秒
vm.drop_caches = 3
signal hanlder is called
CT4002 OK
CT2002 OK
14:35:14.331110 test start, kill after 3 seconds
14:35:17.343787 child process terminated
CT4003 OK
CT2003 OK
2048+0 レコード入力
2048+0 レコード出力
2147483648 バイト (2.1 GB) コピーされました、 19.527 秒、 110 MB/秒
vm.drop_caches = 3
14:35:37.609699 test start, kill after 1 seconds
14:35:38.967493 child process terminated
CT4004 OK
CT2004 OK
kill SIGURG
kill SIGINT
CT4005 OK
CT2005 OK
2048+0 レコード入力
2048+0 レコード出力
2147483648 バイト (2.1 GB) コピーされました、 19.5092 秒、 110 MB/秒
vm.drop_caches = 3
kill SIGURG
CT4006 OK
CT2006 OK
kill SIGTERM (ignored)
kill SIGINT
CT4007 OK
CT2007 OK
2048+0 レコード入力
2048+0 レコード出力
2147483648 バイト (2.1 GB) コピーされました、 19.508 秒、 110 MB/秒
vm.drop_caches = 3
kill SIGTERM (ignored)
CT4008 OK
CT2008 OK
bash-4.2$ exit
exit

View File

@ -0,0 +1,36 @@
CC=gcc
TARGET= CT2001 CT2002 CT2003 CT2004 CT2005 CT2006 CT2007 CT2008 CT2000
all:: $(TARGET)
CT2000: CT2000.c
$(CC) -o CT2000 $<
CT2001: CT2001.c
$(CC) -o CT2001 $<
CT2002: CT2002.c
$(CC) -o CT2002 $<
CT2003: CT2003.c
$(CC) -o CT2003 $<
CT2004: CT2004.c
$(CC) -o CT2004 $<
CT2005: CT2005.c
$(CC) -o CT2005 $<
CT2006: CT2006.c
$(CC) -o CT2006 $<
CT2007: CT2007.c
$(CC) -o CT2007 $<
CT2008: CT2008.c
$(CC) -o CT2008 $<
test:: $(TARGET)
./CT200x.sh
clean::
rm -f $(TARGET)

View File

@ -0,0 +1,36 @@
【Issue#870 動作確認】
1. Issue#870で指摘されたテストプログラムを用いて現象が解消されていることを
確認した。(1件)
Issue#870の実行方法は、stress_test のディレクトリで以下のコマンドを実行する。
./mck-mcexec.sh ./killit -t 4000 - ./signalonread -nt 4 -nosignal
実行結果(エビデンス)は以下の通り。
CT1001.txt Issue#870の指摘で使用されたテストプログラムの実行結果(OK 1件、NG 0件)
2. Issue#863の変更が、Linuxからmcexec経由でMcKernelプロセスに届くシグナルの
既存処理に影響しないことを確認した。
確認内容は以下の通り。
CT2001 遅いI/Oシステムコール実行中にシグナルを受け、即座にシグナル
ハンドラが呼び出され、システムコールがEINTRを返却することを
確認する。
CT2002 遅くないI/Oシステムコール実行中にシグナルを受け、システム
コール完了後にシグナルハンドラが呼び出され、システムコール
が正常に終了することを確認する。
CT2003 遅いI/Oシステムコール実行中にプログラムを終了するシグナルを
受けとると、即座にプログラムが終了することを確認する。
CT2004 遅くないI/Oシステムコール実行中にプログラムを終了するシグナル
を受けとると、即座にプログラムを終了することを確認する。
CT2005 遅いI/Oシステムコール実行中にプログラムを終了しないシグナル(SIGURG)
を受けとっても、プログラムの実行に影響しないことを確認する。
CT2006 遅くないI/Oシステムコール実行中にプログラムを終了しないシグナル
(SIGURG)を受けとっても、プログラムの実行に影響しないことを確認する。
CT2007 遅いI/Oシステムコール実行中に無視(SIG_IGN)するシグナルを
受けとっても、プログラムの実行に影響しないことを確認する。
CT2008 遅くないI/Oシステムコール実行中に無視(SIG_IGN)するシグナルを
受けとっても、プログラムの実行に影響しないことを確認する。
CT200x の実行は、make test2 で行う。
エビデンスは CT200x.txt に示す。(OK 8件、NG 0件)