From: Cyril H. <ch...@su...> - 2012-02-02 15:05:37
|
Hi! > + > + for (lc = 0; TEST_LOOPING(lc); lc++) { > + Tst_count = 0; > + > + fd = open(TESTFILE, O_RDWR); > + if (fd == -1) > + tst_brkm(TBROK|TCONF, NULL, "open %s", TESTFILE); I know that we don't have a clear definition for these particular bitflags (which I would like to fix), however TCONF|TBROK seems strange to me. As TCONF is "testcase not appropriate for your system" and TBROK "testcase broken". I think that only TRBOK is better result here. Other than that it's ready for commit. > + pgoff = ULONG_MAX - 1; > + map = mmap2(NULL, pgsz, PROT_READ|PROT_WRITE, MAP_PRIVATE, > + fd, pgoff); > + if (map == MAP_FAILED) > + tst_brkm(TBROK|TERRNO, cleanup, "mmap2"); > + > + remap = mremap(map, pgsz, 2 * pgsz, 0); > + if (remap == MAP_FAILED) { > + if (errno == EINVAL) > + tst_resm(TPASS, "mremap failed as expected."); > + else > + tst_resm(TFAIL|TERRNO, "mremap"); > + } else { > + tst_resm(TFAIL, "mremap succeeded unexpectedly."); > + } > + > + close(fd); > + } > + > + cleanup(); > + tst_exit(); > +} > + > +static void *mmap2(void *addr, size_t length, int prot, > + int flags, int fd, off_t pgoffset) > +{ > + return (void *)syscall(SYS_mmap2, addr, length, prot, > + flags, fd, pgoffset); > +} > + > +static void setup(void) > +{ > + tst_sig(FORK, DEF_HANDLER, cleanup); > + > + tst_tmpdir(); > + > + fd = creat(TESTFILE, 0644); > + if (fd == -1) > + tst_brkm(TBROK|TCONF, NULL, "creat %s", TESTFILE); Here as well. > + close(fd); > + > + TEST_PAUSE; > +} > + > +static void cleanup(void) > +{ > + TEST_CLEANUP; > + > + tst_rmdir(); > +} > +#else /* __NR_mmap2 */ > +int main(int argc, char *argv[]) > +{ > + tst_brkm(TCONF, NULL, "__NR_mmap2 is not defined on your system"); > +} > +#endif -- Cyril Hrubis ch...@su... |