mirror of
https://github.com/checkpoint-restore/criu
synced 2025-08-31 14:25:49 +00:00
zdtm: pty00 -- Count for SIGHUP
Just to make sure we're not loosing signals after restore. Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org> Acked-by: Andrey Vagin <avagin@openvz.org> Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
This commit is contained in:
committed by
Pavel Emelyanov
parent
37cf27d33e
commit
e90d0f1214
@@ -12,6 +12,13 @@
|
||||
const char *test_doc = "Check, that pseudoterminals are restored";
|
||||
const char *test_author = "Andrey Vagin <avagin@openvz.org>";
|
||||
|
||||
static unsigned int nr_sighups;
|
||||
|
||||
static void signal_handler_sighup(int signum)
|
||||
{
|
||||
nr_sighups++;
|
||||
}
|
||||
|
||||
int main(int argc, char ** argv)
|
||||
{
|
||||
int fdm, fds, ret;
|
||||
@@ -19,8 +26,22 @@ int main(int argc, char ** argv)
|
||||
char buf[10];
|
||||
const char teststr[] = "hello\n";
|
||||
|
||||
struct sigaction sa = {
|
||||
.sa_handler = signal_handler_sighup,
|
||||
.sa_flags = 0,
|
||||
};
|
||||
|
||||
test_init(argc, argv);
|
||||
|
||||
/*
|
||||
* On closing control terminal we're expecting to
|
||||
* receive SIGHUP, so make sure it's delivered.
|
||||
*/
|
||||
if (sigaction(SIGHUP, &sa, 0)) {
|
||||
fail("sigaction failed\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
fdm = open("/dev/ptmx", O_RDWR);
|
||||
if (fdm == -1) {
|
||||
err("open(%s) failed", "/dev/ptmx");
|
||||
@@ -54,8 +75,6 @@ int main(int argc, char ** argv)
|
||||
|
||||
test_waitsig();
|
||||
|
||||
signal(SIGHUP, SIG_IGN);
|
||||
|
||||
/* Check connectivity */
|
||||
ret = write(fdm, teststr, sizeof(teststr) - 1);
|
||||
if (ret != sizeof(teststr) - 1) {
|
||||
@@ -74,10 +93,19 @@ int main(int argc, char ** argv)
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (nr_sighups != 0) {
|
||||
fail("Expected 0 SIGHUP before closing control terminal but got %d", nr_sighups);
|
||||
return 1;
|
||||
}
|
||||
|
||||
close(fdm);
|
||||
close(fds);
|
||||
|
||||
pass();
|
||||
if (nr_sighups != 1) {
|
||||
fail("Expected 1 SIGHUP after closing control terminal but got %d", nr_sighups);
|
||||
return 1;
|
||||
} else
|
||||
pass();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
Reference in New Issue
Block a user