----- Original Message ----- > From: [email protected] > To: "Jan Stancek" <[email protected]> > Cc: [email protected] > Sent: Monday, 24 June, 2013 3:54:47 PM > Subject: Re: [LTP] [PATCH v2] new testcase: kmsg01 > > Hi! > > > > +static void test_seek(void) > > > > +{ > > > > + int k, j = NUM_READ_RETRY, fd; > > > > + char msg[MAX_MSGSIZE]; > > > > + unsigned long seqno[2]; > > > > + > > > > + /* 1. read() after SEEK_SET 0 returns same (first) message */ > > > > + tst_resm(TINFO, "TEST: seek SEEK_SET 0"); > > > > + > > > > + fd = open("/dev/kmsg", O_RDONLY | O_NONBLOCK); > > > > + if (fd < 0) > > > > + tst_brkm(TBROK|TERRNO, cleanup, "failed to open > > > > /dev/kmsg"); > > > > + > > > > + while (j) { > > > > + for (k = 0; k < 2; k++) { > > > > + TEST(read(fd, msg, sizeof(msg))); > > > > + if (TEST_RETURN == -1) { > > > > + if (errno == EPIPE) > > > > + break; > > > > + else > > > > + tst_brkm(TBROK|TTERRNO, cleanup, > > > > + "failed to read > > > > /dev/kmsg"); > > > > + } > > > > + if (get_msg_fields(msg, NULL, &seqno[k]) != 0) > > > > + tst_resm(TFAIL, "failed to parse seqid: > > > > %s", > > > > + msg); > > > > + if (k == 0) > > > > + if (lseek(fd, 0, SEEK_SET) == -1) > > > > + tst_resm(TFAIL|TERRNO, > > > > + "SEEK_SET 0 failed"); > > > > + } > > > > + > > > > + if (TEST_RETURN != -1) > > > > + break; > > > > + > > > > + /* give a second to whoever overwrote first message to > > > > finish */ > > > > + sleep(1); > > > > + j--; > > > > + > > > > + /* read returned EPIPE, reopen fd and try again */ > > > > + SAFE_CLOSE(cleanup, fd); > > > > + fd = open("/dev/kmsg", O_RDONLY | O_NONBLOCK); > > > > + if (fd < 0) > > > > + tst_brkm(TBROK|TERRNO, cleanup, > > > > + "failed to open /dev/kmsg"); > > > > > > I guess that the comment says something different than the code, there > > > is no read involved here. > > > > Read mentioned here is the one at the beginning of for loop. This line can > > only > > be reached if that read returned EPIPE. Other failures will end with TBROK. > > If read succeeded this line is never reached, "if (TEST_RETURN != -1)" > > above > > will break the while loop. > > Ah it could be read as imperative sentence too, which confused me > slightly. > > I guess that "read has returned EPIPE" would be clearer...
Pushed with changes to SAFE_CLOSE in child process and to the comment above, with yours and Mike's ACK. Regards, Jan ------------------------------------------------------------------------------ This SF.net email is sponsored by Windows: Build for Windows Store. http://p.sf.net/sfu/windows-dev2dev _______________________________________________ Ltp-list mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/ltp-list
