rename files
This commit is contained in:
@@ -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);
|
||||
}
|
||||
2
test/mng_mod/issues/863/CT3003.sh → test/mng_mod/issues/863/CT2001.sh
Executable file → Normal file
2
test/mng_mod/issues/863/CT3003.sh → test/mng_mod/issues/863/CT2001.sh
Executable file → Normal file
@@ -1,3 +1,3 @@
|
||||
#!/bin/sh
|
||||
MCEXEC=mcexec
|
||||
$MCEXEC ./CT3003
|
||||
$MCEXEC ./CT2001
|
||||
@@ -1,21 +0,0 @@
|
||||
スクリプトは Wed Jan 24 20:56:37 2018
|
||||
に開始しました[?1034hbash-4.2$ pwd
|
||||
/home/shirasawa/dangertest/bin
|
||||
bash-4.2$ ./mck-mcexec.sh ./killit -t 4000 - ./signalonread -nt 4 -nosignal
|
||||
SUCCESS kmsg
|
||||
SUCCESS clear_kmsg
|
||||
SUCCESS mcexec
|
||||
SUCCESS ./killit -t 4000 mcexec ./signalonread -nt 4 -nosignal
|
||||
SUCCESS kmsg
|
||||
SUCCESS kmsg 1 lines
|
||||
SUCCESS ioctl 40000000 1
|
||||
SUCCESS kmsg
|
||||
SUCCESS 0 processes found
|
||||
SUCCESS ioctl 40000000 2
|
||||
SUCCESS kmsg
|
||||
SUCCESS 0 threads found
|
||||
bash-4.2$ シェルから脱出するには "exit" を使用してください。
|
||||
bash-4.2$ exit
|
||||
|
||||
スクリプトは Wed Jan 24 20:57:07 2018
|
||||
に終了しました
|
||||
@@ -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);
|
||||
}
|
||||
2
test/mng_mod/issues/863/CT3002.sh → test/mng_mod/issues/863/CT2002.sh
Executable file → Normal file
2
test/mng_mod/issues/863/CT3002.sh → test/mng_mod/issues/863/CT2002.sh
Executable file → Normal 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 ./CT2002
|
||||
rm -f testfile
|
||||
@@ -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);
|
||||
}
|
||||
2
test/mng_mod/issues/863/CT3005.sh → test/mng_mod/issues/863/CT2003.sh
Executable file → Normal file
2
test/mng_mod/issues/863/CT3005.sh → test/mng_mod/issues/863/CT2003.sh
Executable file → Normal file
@@ -1,3 +1,3 @@
|
||||
#!/bin/sh
|
||||
MCEXEC=mcexec
|
||||
$MCEXEC ./CT3005
|
||||
$MCEXEC ./CT2003
|
||||
@@ -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);
|
||||
}
|
||||
2
test/mng_mod/issues/863/CT3004.sh → test/mng_mod/issues/863/CT2004.sh
Executable file → Normal file
2
test/mng_mod/issues/863/CT3004.sh → test/mng_mod/issues/863/CT2004.sh
Executable file → Normal 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 ./CT2004
|
||||
rm -f testfile
|
||||
@@ -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);
|
||||
}
|
||||
2
test/mng_mod/issues/863/CT3001.sh → test/mng_mod/issues/863/CT2005.sh
Executable file → Normal file
2
test/mng_mod/issues/863/CT3001.sh → test/mng_mod/issues/863/CT2005.sh
Executable file → Normal file
@@ -1,3 +1,3 @@
|
||||
#!/bin/sh
|
||||
MCEXEC=mcexec
|
||||
$MCEXEC ./CT3001
|
||||
$MCEXEC ./CT2005
|
||||
@@ -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);
|
||||
}
|
||||
2
test/mng_mod/issues/863/CT3006.sh → test/mng_mod/issues/863/CT2006.sh
Executable file → Normal file
2
test/mng_mod/issues/863/CT3006.sh → test/mng_mod/issues/863/CT2006.sh
Executable file → Normal 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 ./CT2006
|
||||
rm -f testfile
|
||||
@@ -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);
|
||||
}
|
||||
2
test/mng_mod/issues/863/CT3007.sh → test/mng_mod/issues/863/CT2007.sh
Executable file → Normal file
2
test/mng_mod/issues/863/CT3007.sh → test/mng_mod/issues/863/CT2007.sh
Executable file → Normal file
@@ -1,3 +1,3 @@
|
||||
#!/bin/sh
|
||||
MCEXEC=mcexec
|
||||
$MCEXEC ./CT3007
|
||||
$MCEXEC ./CT2007
|
||||
@@ -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);
|
||||
}
|
||||
2
test/mng_mod/issues/863/CT3008.sh → test/mng_mod/issues/863/CT2008.sh
Executable file → Normal file
2
test/mng_mod/issues/863/CT3008.sh → test/mng_mod/issues/863/CT2008.sh
Executable file → Normal 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 ./CT2008
|
||||
rm -f testfile
|
||||
16
test/mng_mod/issues/863/CT300x.sh → test/mng_mod/issues/863/CT200x.sh
Executable file → Normal file
16
test/mng_mod/issues/863/CT300x.sh → test/mng_mod/issues/863/CT200x.sh
Executable file → Normal 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
|
||||
@@ -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
|
||||
|
||||
@@ -1,97 +0,0 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
#include <sys/syscall.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/socket.h>
|
||||
#include <sys/stat.h>
|
||||
#include <errno.h>
|
||||
|
||||
int
|
||||
readline(int fd, char *buf)
|
||||
{
|
||||
int r;
|
||||
int rc = 0;
|
||||
|
||||
while ((r = read(fd, buf, 1)) == 1) {
|
||||
rc++;
|
||||
if (*buf == '\n')
|
||||
break;
|
||||
buf++;
|
||||
}
|
||||
if (r == -1) {
|
||||
perror("read");
|
||||
exit(1);
|
||||
}
|
||||
if (!rc) {
|
||||
fprintf(stderr, "CT400x read: BAD EOF\n");
|
||||
exit(1);
|
||||
}
|
||||
*buf = '\0';
|
||||
return rc;
|
||||
}
|
||||
|
||||
int
|
||||
main(int argc, char **argv)
|
||||
{
|
||||
int fds[2];
|
||||
pid_t mcexec;
|
||||
struct stat sb;
|
||||
char line[80];
|
||||
char *m;
|
||||
int rc;
|
||||
int t;
|
||||
int p;
|
||||
int s;
|
||||
int st;
|
||||
|
||||
if (syscall(732) != -1) {
|
||||
fprintf(stderr, "run under Linux!\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
if (stat(argv[1], &sb) == -1) {
|
||||
fprintf(stderr, "no %s found\n", argv[1]);
|
||||
exit(1);
|
||||
}
|
||||
if (pipe(fds) == -1) {
|
||||
perror("pipe");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
if ((mcexec = fork()) == 0) {
|
||||
char param[10];
|
||||
char *args[4];
|
||||
|
||||
close(fds[0]);
|
||||
args[0] = "mcexec";
|
||||
args[1] = argv[1];
|
||||
sprintf(param, "%d", fds[1]);
|
||||
args[2] = param;
|
||||
args[3] = NULL;
|
||||
if (stat("mcexec", &sb) == -1) {
|
||||
execvp("mcexec", args);
|
||||
}
|
||||
else {
|
||||
execv("./mcexec", args);
|
||||
}
|
||||
perror("execvp");
|
||||
exit(1);
|
||||
}
|
||||
if (mcexec == -1) {
|
||||
perror("fork");
|
||||
exit(1);
|
||||
}
|
||||
close(fds[1]);
|
||||
|
||||
readline(fds[0], line);
|
||||
sscanf(line, "%d %d %d", &t, &p, &s);
|
||||
|
||||
sleep(t);
|
||||
kill(p, s);
|
||||
|
||||
while(waitpid(mcexec, &st, 0) == -1 && errno == EINTR);
|
||||
|
||||
exit(0);
|
||||
}
|
||||
@@ -1,77 +0,0 @@
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
#include <signal.h>
|
||||
#include <errno.h>
|
||||
#include <time.h>
|
||||
#include <sys/time.h>
|
||||
|
||||
char *
|
||||
gettime(char *buf, struct timeval *tv)
|
||||
{
|
||||
struct tm *tm;
|
||||
|
||||
gettimeofday(tv, NULL);
|
||||
tm = localtime(&tv->tv_sec);
|
||||
sprintf(buf, "%02d:%02d:%02d.%06d", tm->tm_hour, tm->tm_min, tm->tm_sec, tv->tv_usec);
|
||||
return buf;
|
||||
}
|
||||
|
||||
void
|
||||
tv_sub(struct timeval *tv1, const struct timeval *tv2)
|
||||
{
|
||||
tv1->tv_sec -= tv2->tv_sec;
|
||||
tv1->tv_usec -= tv2->tv_usec;
|
||||
if (tv1->tv_usec < 0) {
|
||||
tv1->tv_sec--;
|
||||
tv1->tv_usec += 1000000;
|
||||
}
|
||||
}
|
||||
|
||||
struct timeval tv1;
|
||||
struct timeval tv2;
|
||||
int fd;
|
||||
|
||||
void
|
||||
sig(int s)
|
||||
{
|
||||
char buf[16];
|
||||
|
||||
fprintf(stderr, "%s signal hanlder is called\n", gettime(buf, &tv2));
|
||||
}
|
||||
|
||||
int
|
||||
main(int argc, char **argv)
|
||||
{
|
||||
struct sigaction act;
|
||||
int fds[2];
|
||||
char c;
|
||||
int rc;
|
||||
char buf[16];
|
||||
char line[80];
|
||||
|
||||
fd = atoi(argv[1]);
|
||||
memset(&act, '\0', sizeof act);
|
||||
act.sa_handler = sig;
|
||||
sigaction(SIGALRM, &act, NULL);
|
||||
fprintf(stderr, "%s test start, kill after 3 seconds\n", gettime(buf, &tv1));
|
||||
sprintf(line, "%d %d %d\n", 3, getpid(), SIGALRM);
|
||||
write(fd, line, strlen(line));
|
||||
pipe(fds);
|
||||
rc = read(fds[0], &c, 1);
|
||||
if (rc != -1) {
|
||||
fprintf(stderr, "CT4001 NG BAD read rc=%d\n", rc);
|
||||
exit(1);
|
||||
}
|
||||
if (errno != EINTR) {
|
||||
fprintf(stderr, "CT4001 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);
|
||||
else
|
||||
fprintf(stderr, "CT4001 OK\n");
|
||||
exit(0);
|
||||
}
|
||||
@@ -1,3 +0,0 @@
|
||||
#!/bin/sh
|
||||
MCEXEC=mcexec
|
||||
./CT4000 ./CT4001
|
||||
@@ -1,58 +0,0 @@
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
#include <signal.h>
|
||||
#include <errno.h>
|
||||
#include <fcntl.h>
|
||||
#include <time.h>
|
||||
#include <sys/time.h>
|
||||
|
||||
#define FILESIZE (2L * 1024 * 1024 * 1024)
|
||||
int sigcalled = 0;
|
||||
|
||||
void
|
||||
sig(int s)
|
||||
{
|
||||
sigcalled = 1;
|
||||
fprintf(stderr, "signal hanlder is called\n");
|
||||
}
|
||||
|
||||
int
|
||||
main(int argc, char **argv)
|
||||
{
|
||||
struct sigaction act;
|
||||
char *buf;
|
||||
long rc;
|
||||
long l;
|
||||
long r;
|
||||
int fd;
|
||||
int ofd;
|
||||
char line[80];
|
||||
|
||||
fd = atoi(argv[1]);
|
||||
buf = malloc(FILESIZE);
|
||||
ofd = open("testfile", O_RDONLY);
|
||||
if (ofd == -1) {
|
||||
fprintf(stderr, "Could not open file\n");
|
||||
unlink("testfile");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
memset(&act, '\0', sizeof act);
|
||||
act.sa_handler = sig;
|
||||
sigaction(SIGALRM, &act, NULL);
|
||||
sprintf(line, "%d %d %d\n", 1, getpid(), SIGALRM);
|
||||
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);
|
||||
exit(1);
|
||||
}
|
||||
if (sigcalled == 0) {
|
||||
fprintf(stderr, "CT4002 NG signal handler was not called\n");
|
||||
exit(1);
|
||||
}
|
||||
fprintf(stderr, "CT4002 OK\n");
|
||||
exit(0);
|
||||
}
|
||||
@@ -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
|
||||
@@ -1,87 +0,0 @@
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
#include <signal.h>
|
||||
#include <errno.h>
|
||||
#include <time.h>
|
||||
#include <sys/time.h>
|
||||
#include <sys/wait.h>
|
||||
|
||||
char *
|
||||
gettime(char *buf, struct timeval *tv)
|
||||
{
|
||||
struct tm *tm;
|
||||
|
||||
gettimeofday(tv, NULL);
|
||||
tm = localtime(&tv->tv_sec);
|
||||
sprintf(buf, "%02d:%02d:%02d.%06d", tm->tm_hour, tm->tm_min, tm->tm_sec, tv->tv_usec);
|
||||
return buf;
|
||||
}
|
||||
|
||||
void
|
||||
tv_sub(struct timeval *tv1, const struct timeval *tv2)
|
||||
{
|
||||
tv1->tv_sec -= tv2->tv_sec;
|
||||
tv1->tv_usec -= tv2->tv_usec;
|
||||
if (tv1->tv_usec < 0) {
|
||||
tv1->tv_sec--;
|
||||
tv1->tv_usec += 1000000;
|
||||
}
|
||||
}
|
||||
|
||||
struct timeval tv1;
|
||||
struct timeval tv2;
|
||||
int fd;
|
||||
|
||||
void
|
||||
child()
|
||||
{
|
||||
struct sigaction act;
|
||||
int fds[2];
|
||||
char c;
|
||||
int rc;
|
||||
char line[80];
|
||||
|
||||
sprintf(line, "%d %d %d\n", 3, getpid(), SIGALRM);
|
||||
write(fd, line, strlen(line));
|
||||
pipe(fds);
|
||||
rc = read(fds[0], &c, 1);
|
||||
}
|
||||
|
||||
int
|
||||
main(int argc, char **argv)
|
||||
{
|
||||
pid_t pid;
|
||||
int st;
|
||||
int rc;
|
||||
char buf[16];
|
||||
|
||||
fd = atoi(argv[1]);
|
||||
fprintf(stderr, "%s test start, kill after 3 seconds\n", gettime(buf, &tv1));
|
||||
pid = fork();
|
||||
if (pid == 0) {
|
||||
child();
|
||||
exit(1);
|
||||
}
|
||||
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);
|
||||
exit(1);
|
||||
}
|
||||
if (!WIFSIGNALED(st)) {
|
||||
fprintf(stderr, "CT4003 NG no signaled st=%08x\n", st);
|
||||
exit(1);
|
||||
}
|
||||
if (WTERMSIG(st) != SIGALRM) {
|
||||
fprintf(stderr, "CT4003 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);
|
||||
else
|
||||
fprintf(stderr, "CT4003 OK\n");
|
||||
exit(0);
|
||||
}
|
||||
@@ -1,3 +0,0 @@
|
||||
#!/bin/sh
|
||||
MCEXEC=mcexec
|
||||
./CT4000 ./CT4003
|
||||
@@ -1,98 +0,0 @@
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
#include <signal.h>
|
||||
#include <errno.h>
|
||||
#include <fcntl.h>
|
||||
#include <time.h>
|
||||
#include <sys/time.h>
|
||||
#include <sys/wait.h>
|
||||
|
||||
#define FILESIZE (2L * 1024 * 1024 * 1024)
|
||||
|
||||
char *
|
||||
gettime(char *buf, struct timeval *tv)
|
||||
{
|
||||
struct tm *tm;
|
||||
|
||||
gettimeofday(tv, NULL);
|
||||
tm = localtime(&tv->tv_sec);
|
||||
sprintf(buf, "%02d:%02d:%02d.%06d", tm->tm_hour, tm->tm_min, tm->tm_sec, tv->tv_usec);
|
||||
return buf;
|
||||
}
|
||||
|
||||
void
|
||||
tv_sub(struct timeval *tv1, const struct timeval *tv2)
|
||||
{
|
||||
tv1->tv_sec -= tv2->tv_sec;
|
||||
tv1->tv_usec -= tv2->tv_usec;
|
||||
if (tv1->tv_usec < 0) {
|
||||
tv1->tv_sec--;
|
||||
tv1->tv_usec += 1000000;
|
||||
}
|
||||
}
|
||||
|
||||
struct timeval tv1;
|
||||
struct timeval tv2;
|
||||
int fd;
|
||||
|
||||
void
|
||||
child()
|
||||
{
|
||||
char *buf;
|
||||
long rc;
|
||||
long l;
|
||||
long r;
|
||||
int ofd;
|
||||
char line[80];
|
||||
|
||||
buf = malloc(FILESIZE);
|
||||
ofd = open("testfile", O_RDONLY);
|
||||
if (ofd == -1) {
|
||||
fprintf(stderr, "Could not open file\n");
|
||||
unlink("testfile");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
sprintf(line, "%d %d %d\n", 1, getpid(), SIGALRM);
|
||||
write(fd, line, strlen(line));
|
||||
rc = read(ofd, buf, FILESIZE);
|
||||
}
|
||||
|
||||
int
|
||||
main(int argc, char **argv)
|
||||
{
|
||||
pid_t pid;
|
||||
int st;
|
||||
int rc;
|
||||
char buf[16];
|
||||
|
||||
fd = atoi(argv[1]);
|
||||
fprintf(stderr, "%s test start, kill after 1 seconds\n", gettime(buf, &tv1));
|
||||
pid = fork();
|
||||
if (pid == 0) {
|
||||
child();
|
||||
exit(1);
|
||||
}
|
||||
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);
|
||||
exit(1);
|
||||
}
|
||||
if (!WIFSIGNALED(st)) {
|
||||
fprintf(stderr, "CT4004 NG no signaled st=%08x\n", st);
|
||||
exit(1);
|
||||
}
|
||||
if (WTERMSIG(st) != SIGALRM) {
|
||||
fprintf(stderr, "CT4004 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);
|
||||
else
|
||||
fprintf(stderr, "CT4004 OK\n");
|
||||
exit(0);
|
||||
}
|
||||
@@ -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
|
||||
@@ -1,74 +0,0 @@
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
#include <signal.h>
|
||||
#include <errno.h>
|
||||
#include <time.h>
|
||||
#include <sys/time.h>
|
||||
#include <sys/wait.h>
|
||||
|
||||
pid_t pid;
|
||||
int fd;
|
||||
|
||||
void
|
||||
sig(int s)
|
||||
{
|
||||
static int cnt = 0;
|
||||
char line[80];
|
||||
|
||||
cnt++;
|
||||
if (cnt == 1) {
|
||||
fprintf(stderr, "kill SIGURG\n");
|
||||
sprintf(line, "%d %d %d\n", 0, pid, SIGURG);
|
||||
write(fd, line, strlen(line));
|
||||
}
|
||||
else if (cnt == 2) {
|
||||
fprintf(stderr, "kill SIGINT\n");
|
||||
kill(pid, SIGINT);
|
||||
}
|
||||
alarm(2);
|
||||
}
|
||||
|
||||
void
|
||||
child()
|
||||
{
|
||||
struct sigaction act;
|
||||
int fds[2];
|
||||
char c;
|
||||
int rc;
|
||||
|
||||
pipe(fds);
|
||||
rc = read(fds[0], &c, 1);
|
||||
}
|
||||
|
||||
int
|
||||
main(int argc, char **argv)
|
||||
{
|
||||
int st;
|
||||
int rc;
|
||||
|
||||
fd = atoi(argv[1]);
|
||||
pid = fork();
|
||||
if (pid == 0) {
|
||||
child();
|
||||
exit(1);
|
||||
}
|
||||
signal(SIGALRM, sig);
|
||||
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);
|
||||
exit(1);
|
||||
}
|
||||
if (!WIFSIGNALED(st)) {
|
||||
fprintf(stderr, "CT4005 NG no signaled st=%08x\n", st);
|
||||
exit(1);
|
||||
}
|
||||
if (WTERMSIG(st) != SIGINT) {
|
||||
fprintf(stderr, "CT4005 NG BAD signal sig=%d\n", WTERMSIG(st));
|
||||
exit(1);
|
||||
}
|
||||
fprintf(stderr, "CT4005 OK\n");
|
||||
exit(0);
|
||||
}
|
||||
@@ -1,3 +0,0 @@
|
||||
#!/bin/sh
|
||||
MCEXEC=mcexec
|
||||
./CT4000 ./CT4005
|
||||
@@ -1,80 +0,0 @@
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
#include <signal.h>
|
||||
#include <errno.h>
|
||||
#include <fcntl.h>
|
||||
#include <time.h>
|
||||
#include <sys/time.h>
|
||||
#include <sys/wait.h>
|
||||
|
||||
#define FILESIZE (2L * 1024 * 1024 * 1024)
|
||||
|
||||
pid_t pid;
|
||||
int fd;
|
||||
|
||||
void
|
||||
sig(int s)
|
||||
{
|
||||
char line[80];
|
||||
|
||||
fprintf(stderr, "kill SIGURG\n");
|
||||
sprintf(line, "%d %d %d\n", 0, pid, SIGURG);
|
||||
write(fd, line, strlen(line));
|
||||
}
|
||||
|
||||
void
|
||||
child()
|
||||
{
|
||||
char *buf;
|
||||
long rc;
|
||||
long l;
|
||||
long r;
|
||||
int fd;
|
||||
|
||||
buf = malloc(FILESIZE);
|
||||
fd = open("testfile", O_RDONLY);
|
||||
if (fd == -1) {
|
||||
fprintf(stderr, "Could not open file\n");
|
||||
unlink("testfile");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
rc = read(fd, buf, FILESIZE);
|
||||
}
|
||||
|
||||
int
|
||||
main(int argc, char **argv)
|
||||
{
|
||||
int st;
|
||||
int rc;
|
||||
|
||||
fd = atoi(argv[1]);
|
||||
pid = fork();
|
||||
if (pid == 0) {
|
||||
child();
|
||||
exit(99);
|
||||
}
|
||||
signal(SIGALRM, sig);
|
||||
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);
|
||||
exit(1);
|
||||
}
|
||||
if (WIFSIGNALED(st)) {
|
||||
fprintf(stderr, "CT4006 NG BAD signal st=%08x\n", st);
|
||||
exit(1);
|
||||
}
|
||||
if (!WIFEXITED(st)) {
|
||||
fprintf(stderr, "CT4006 NG BAD terminated st=%08x\n", st);
|
||||
exit(1);
|
||||
}
|
||||
if (WEXITSTATUS(st) != 99) {
|
||||
fprintf(stderr, "CT4006 NG BAD exit status st=%08x\n", st);
|
||||
exit(1);
|
||||
}
|
||||
fprintf(stderr, "CT4006 OK\n");
|
||||
exit(0);
|
||||
}
|
||||
@@ -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
|
||||
@@ -1,76 +0,0 @@
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
#include <signal.h>
|
||||
#include <errno.h>
|
||||
#include <time.h>
|
||||
#include <sys/time.h>
|
||||
#include <sys/wait.h>
|
||||
|
||||
pid_t pid;
|
||||
int fd;
|
||||
|
||||
void
|
||||
sig(int s)
|
||||
{
|
||||
static int cnt = 0;
|
||||
|
||||
cnt++;
|
||||
if (cnt == 1) {
|
||||
char line[80];
|
||||
|
||||
fprintf(stderr, "kill SIGTERM (ignored)\n");
|
||||
sprintf(line, "%d %d %d\n", 0, pid, SIGTERM);
|
||||
write(fd, line, strlen(line));
|
||||
}
|
||||
else if (cnt == 2) {
|
||||
fprintf(stderr, "kill SIGINT\n");
|
||||
kill(pid, SIGINT);
|
||||
}
|
||||
alarm(2);
|
||||
}
|
||||
|
||||
void
|
||||
child()
|
||||
{
|
||||
struct sigaction act;
|
||||
int fds[2];
|
||||
char c;
|
||||
int rc;
|
||||
|
||||
pipe(fds);
|
||||
rc = read(fds[0], &c, 1);
|
||||
}
|
||||
|
||||
int
|
||||
main(int argc, char **argv)
|
||||
{
|
||||
int st;
|
||||
int rc;
|
||||
|
||||
fd = atoi(argv[1]);
|
||||
pid = fork();
|
||||
if (pid == 0) {
|
||||
signal(SIGTERM, SIG_IGN);
|
||||
child();
|
||||
exit(1);
|
||||
}
|
||||
signal(SIGALRM, sig);
|
||||
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);
|
||||
exit(1);
|
||||
}
|
||||
if (!WIFSIGNALED(st)) {
|
||||
fprintf(stderr, "CT4007 NG no signaled st=%08x\n", st);
|
||||
exit(1);
|
||||
}
|
||||
if (WTERMSIG(st) != SIGINT) {
|
||||
fprintf(stderr, "CT4007 NG BAD signal sig=%d\n", WTERMSIG(st));
|
||||
exit(1);
|
||||
}
|
||||
fprintf(stderr, "CT4007 OK\n");
|
||||
exit(0);
|
||||
}
|
||||
@@ -1,3 +0,0 @@
|
||||
#!/bin/sh
|
||||
MCEXEC=mcexec
|
||||
./CT4000 ./CT4007
|
||||
@@ -1,80 +0,0 @@
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
#include <signal.h>
|
||||
#include <errno.h>
|
||||
#include <fcntl.h>
|
||||
#include <time.h>
|
||||
#include <sys/time.h>
|
||||
#include <sys/wait.h>
|
||||
|
||||
#define FILESIZE (2L * 1024 * 1024 * 1024)
|
||||
|
||||
pid_t pid;
|
||||
int fd;
|
||||
|
||||
void
|
||||
sig(int s)
|
||||
{
|
||||
char line[80];
|
||||
fprintf(stderr, "kill SIGTERM (ignored)\n");
|
||||
sprintf(line, "%d %d %d\n", 0, pid, SIGTERM);
|
||||
write(fd, line, strlen(line));
|
||||
}
|
||||
|
||||
void
|
||||
child()
|
||||
{
|
||||
char *buf;
|
||||
long rc;
|
||||
long l;
|
||||
long r;
|
||||
int fd;
|
||||
|
||||
buf = malloc(FILESIZE);
|
||||
fd = open("testfile", O_RDONLY);
|
||||
if (fd == -1) {
|
||||
fprintf(stderr, "Could not open file\n");
|
||||
unlink("testfile");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
rc = read(fd, buf, FILESIZE);
|
||||
}
|
||||
|
||||
int
|
||||
main(int argc, char **argv)
|
||||
{
|
||||
int st;
|
||||
int rc;
|
||||
|
||||
fd = atoi(argv[1]);
|
||||
pid = fork();
|
||||
if (pid == 0) {
|
||||
signal(SIGTERM, SIG_IGN);
|
||||
child();
|
||||
exit(99);
|
||||
}
|
||||
signal(SIGALRM, sig);
|
||||
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);
|
||||
exit(1);
|
||||
}
|
||||
if (WIFSIGNALED(st)) {
|
||||
fprintf(stderr, "CT4008 NG BAD signal st=%08x\n", st);
|
||||
exit(1);
|
||||
}
|
||||
if (!WIFEXITED(st)) {
|
||||
fprintf(stderr, "CT4008 NG BAD terminated st=%08x\n", st);
|
||||
exit(1);
|
||||
}
|
||||
if (WEXITSTATUS(st) != 99) {
|
||||
fprintf(stderr, "CT4008 NG BAD exit status st=%08x\n", st);
|
||||
exit(1);
|
||||
}
|
||||
fprintf(stderr, "CT4008 OK\n");
|
||||
exit(0);
|
||||
}
|
||||
@@ -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
|
||||
@@ -1,12 +0,0 @@
|
||||
#!/bin/sh
|
||||
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
|
||||
@@ -1,45 +0,0 @@
|
||||
スクリプトは Fri Mar 23 14:34:24 2018
|
||||
に開始しました[?1034hbash-4.2$ make test2
|
||||
./CT400x.sh
|
||||
14:34:27.063487 test start, kill after 3 seconds
|
||||
14:34:30.063982 signal hanlder is called
|
||||
CT4001 OK
|
||||
2048+0 レコード入力
|
||||
2048+0 レコード出力
|
||||
2147483648 バイト (2.1 GB) コピーされました、 19.4964 秒、 110 MB/秒
|
||||
vm.drop_caches = 3
|
||||
signal hanlder is called
|
||||
CT4002 OK
|
||||
14:35:14.331110 test start, kill after 3 seconds
|
||||
14:35:17.343787 child process terminated
|
||||
CT4003 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
|
||||
kill SIGURG
|
||||
kill SIGINT
|
||||
CT4005 OK
|
||||
2048+0 レコード入力
|
||||
2048+0 レコード出力
|
||||
2147483648 バイト (2.1 GB) コピーされました、 19.5092 秒、 110 MB/秒
|
||||
vm.drop_caches = 3
|
||||
kill SIGURG
|
||||
CT4006 OK
|
||||
kill SIGTERM (ignored)
|
||||
kill SIGINT
|
||||
CT4007 OK
|
||||
2048+0 レコード入力
|
||||
2048+0 レコード出力
|
||||
2147483648 バイト (2.1 GB) コピーされました、 19.508 秒、 110 MB/秒
|
||||
vm.drop_caches = 3
|
||||
kill SIGTERM (ignored)
|
||||
CT4008 OK
|
||||
bash-4.2$ exit
|
||||
exit
|
||||
|
||||
スクリプトは Fri Mar 23 14:37:18 2018
|
||||
に終了しました
|
||||
@@ -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)
|
||||
|
||||
@@ -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件)
|
||||
|
||||
Reference in New Issue
Block a user