From: Chandru <ch...@in...> - 2009-09-24 06:59:50
|
The ppoll01 testcase has a signal handler in it but this signal handler is not registered with the kernel through the signal() syscal. The testcase fails when it sends a SIGINT to itself as part of one of the case of the test run. The following patch 1. Adds a signal() syscall to register the signal handler 2. Corrects the expected 'revents' for the case where ppoll() is called on a file which is only opened in read/write mode, i.e case00. 3. Takes away printing the type of error ( i.e strerror(errno) ) since it only prints the last error seen and does not report the failures seen in the cases before the last failed one. The reporting of NG or OK shoudl take care of letting the user know the cases that have passed and cases that have failed. Signed-off-by: Chandru S <ch...@li...> --- --- ppoll01.c.orig 2009-09-22 19:22:39.371235396 +0530 +++ ppoll01.c 2009-09-24 01:24:38.706487228 +0530 @@ -106,6 +106,8 @@ extern void cleanup() { tst_exit(); } +void sighandler(int sig); /* signals handler function for the test */ + /* Local Functions */ /******************************************************************************/ /* */ @@ -125,7 +127,8 @@ extern void cleanup() { /* */ /******************************************************************************/ void setup() { - /* Capture signals if any */ + /* Capture signals*/ + signal(SIGINT, &sighandler); /* Create temporary directories */ TEST_PAUSE; tst_tmpdir(); @@ -191,7 +194,7 @@ struct test_case { static struct test_case tcase[] = { { // case00 .ttype = NORMAL, - .expect_revents = POLLOUT, + .expect_revents = POLLOUT | POLLIN, .ret = 0, .err = 0, }, @@ -463,7 +466,7 @@ int main(int ac, char **av) { break; default: - tst_resm(TFAIL, "%s failed - errno = %d : %s", TCID, TEST_ERRNO, strerror(TEST_ERRNO)); + tst_resm(TFAIL, "%s failed", TCID); RPRINTF("NG"); cleanup(); tst_exit(); |