Add a new test to mmap/munmap /dev/zero.

Signed-off-by: CAI Qian <[email protected]>

--- /dev/null
+++ b/testcases/kernel/syscalls/mmap/mmap10.c
@@ -0,0 +1,131 @@
+/*
+ * mmap/munmap /dev/zero
+ *
+ * Copyright (C) 2010  Red Hat, Inc.
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it would be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * Further, this software is distributed without any warranty that it
+ * is free of the rightful claim of any third person regarding
+ * infringement or the like.  Any license provided herein, whether
+ * implied or otherwise, applies only to this software file.  Patent
+ * licenses, if any, provided herein do not apply to combinations of
+ * this program with other software, or any other product whatsoever.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301, USA.
+ */
+
+#include "test.h"
+#include "usctest.h"
+#include <errno.h>
+#include <sys/mman.h>
+#include <unistd.h>
+#include <stdlib.h>
+#include <sys/wait.h>
+#include <stdio.h>
+
+#define SIZE (5*1024*1024)
+
+char *TCID = "mmap10";
+int TST_TOTAL = 1;
+extern int Tst_count;
+
+/* main setup function of test */
+void setup();
+/* cleanup function for the test */
+void cleanup();
+int mmapzero();
+
+
+int main(int ac, char **av)
+{
+       /* loop counter */
+       int lc;
+       /* message returned from parse_opts */
+       char *msg;
+
+       msg = parse_opts(ac, av, (option_t *) NULL, NULL);
+       if (msg != (char *)NULL) {
+               tst_brkm(TBROK, NULL, "OPTION PARSING ERROR - %s", msg);
+               tst_exit();
+       }
+
+       /* Perform global setup for test */
+       setup();
+
+       /* Check looping state if -i option given */
+       for (lc = 0; TEST_LOOPING(lc); lc++) {
+               /* Reset Tst_count in case we are looping. */
+               Tst_count = 0;
+
+               TEST(mmapzero());
+
+               if(TEST_RETURN != 0)
+                       tst_resm(TFAIL, "mmapzero() failed with %ld.",
+                               TEST_RETURN);
+               else
+                       tst_resm(TPASS, "mmapzero() completed successfully.");
+        }
+
+        cleanup();
+        return 0;
+ }
+
+ int mmapzero()
+ {
+        char *x;
+
+        x = mmap("/dev/zero", SIZE+SIZE-4096, PROT_READ|PROT_WRITE,
+                MAP_PRIVATE|MAP_ANONYMOUS, -1, 0);
+        if (x == MAP_FAILED) {
+                perror("error");
+                return 1;
+        }
+        x[SIZE] = 0;
+        if (!fork()) {
+                munmap(x + SIZE+4096, SIZE-4096*2);
+                _exit(0);
+        }
+        if (!fork()) {
+                if (!fork()) {
+                        munmap(x + SIZE+4096, SIZE-4096*2);
+                        _exit(0);
+                }
+                munmap(x + SIZE+4096, SIZE-4096*2);
+                _exit(0);
+        }
+        munmap(x, SIZE+SIZE-4096);
+        while (waitpid(-1, NULL, WNOHANG) > 0);
+        return 0;
+ }
+
+ void cleanup()
+ {
+        /*
+         * remove the tmp directory and exit
+         */
+        TEST_CLEANUP;
+        tst_rmdir();
+        tst_exit();
+
+ }
+
+
+void setup()
+{
+       /*
+        * setup a default signal hander and a
+        * temporary working directory.
+        */
+       tst_sig(FORK, DEF_HANDLER, cleanup);
+       TEST_PAUSE;
+       tst_tmpdir();
+}

------------------------------------------------------------------------------
Beautiful is writing same markup. Internet Explorer 9 supports
standards for HTML5, CSS3, SVG 1.1,  ECMAScript5, and DOM L2 & L3.
Spend less time writing and  rewriting code and more time creating great
experiences on the web. Be a part of the beta today.
http://p.sf.net/sfu/beautyoftheweb
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list

Reply via email to