Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2001-10-08 16:18:38 +0400
committerCorinna Vinschen <corinna@vinschen.de>2001-10-08 16:18:38 +0400
commitd7f6398556ca9eb0caa72f3d57560fef4214f2b8 (patch)
tree7a30228d5d7756600ed464c1d216a4cd9670dbc6 /winsup/testsuite
parent97405ef5b07997c805ebd2a6c3ecbe4440c92346 (diff)
* winsup.api/mmaptest01.c: Add several tests on mmaps. Use libltp.
* winsup.api/winsup.exp: Link all tests agains libltp.
Diffstat (limited to 'winsup/testsuite')
-rw-r--r--winsup/testsuite/ChangeLog5
-rw-r--r--winsup/testsuite/winsup.api/mmaptest01.c91
-rw-r--r--winsup/testsuite/winsup.api/winsup.exp10
3 files changed, 87 insertions, 19 deletions
diff --git a/winsup/testsuite/ChangeLog b/winsup/testsuite/ChangeLog
index 1d39325c4..8dae33417 100644
--- a/winsup/testsuite/ChangeLog
+++ b/winsup/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+Mon Oct 8 14:15:00 2001 Corinna Vinschen <corinna@vinschen.de>
+
+ * winsup.api/mmaptest01.c: Add several tests on mmaps. Use libltp.
+ * winsup.api/winsup.exp: Link all tests agains libltp.
+
Fri Oct 5 11:15:55 2001 Christopher Faylor <cgf@cygnus.com>
* winsup.api/nullgetcwd.c: New file. Check that NULL first argument to
diff --git a/winsup/testsuite/winsup.api/mmaptest01.c b/winsup/testsuite/winsup.api/mmaptest01.c
index 5a14461e6..a48110eb7 100644
--- a/winsup/testsuite/winsup.api/mmaptest01.c
+++ b/winsup/testsuite/winsup.api/mmaptest01.c
@@ -1,6 +1,9 @@
/*
Copyright 2001 Free Software Foundation, Inc.
Written by Michael Chastain, <chastain@redhat.com>
+ Changes by Corinna Vinschen, <corinna@vinschen.de>:
+ - Using mkstemp to generate filenames.
+ - Adding tests
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -50,6 +53,13 @@
#include <stdio.h>
#include <stdlib.h>
+#include "test.h"
+#include "usctest.h"
+
+char *TCID = "mmaptest01"; /* Test program identifier. */
+int TST_TOTAL = 7; /* Total number of test cases. */
+extern int Tst_count; /* Test Case counter for tst_* routines */
+
/* some systems have O_BINARY and some do not */
#ifndef O_BINARY
#define O_BINARY 0
@@ -67,43 +77,100 @@ char const line2 [] = "y2 y2 y2 y2 y2 y2 y2 y2 y2 y2 y2 y2 y2 y2 y2 y2 y2\n";
int main ()
{
+ int ret = 0;
+
+ char fnam1[32];
+ char fnam2[32];
+
int fd1;
char * buf1;
int fd2;
char * buf2;
+ char buf3[20];
+
int i;
+ strcpy (fnam1, "mmaptest01.1.XXXXXX");
+ strcpy (fnam2, "mmaptest01.2.XXXXXX");
+
/* create file 1 */
- fd1 = open ("y1.txt", O_WRONLY|O_CREAT|O_TRUNC|O_BINARY, 0644);
+ //fd1 = open (fnam1, O_WRONLY|O_CREAT|O_TRUNC|O_BINARY, 0644);
+ fd1 = mkstemp (fnam1);
for (i = 0; i < count1; i++)
write (fd1, line1, size1);
close (fd1);
/* create file 2 */
- fd2 = open ("y2.txt", O_WRONLY|O_CREAT|O_TRUNC|O_BINARY, 0644);
+ //fd2 = open (fnam2, O_WRONLY|O_CREAT|O_TRUNC|O_BINARY, 0644);
+ fd2 = mkstemp (fnam2);
for (i = 0; i < count2; i++)
write (fd2, line2, size2);
close (fd2);
/* mmap file 1 */
- fd1 = open ("y1.txt", O_RDONLY | O_BINARY, 0644);
- buf1 = mmap (0, 4096, PROT_READ, MAP_PRIVATE, fd1, 0);
+ fd1 = open (fnam1, O_RDONLY | O_BINARY, 0644);
+ buf1 = mmap (0, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE, fd1, 0);
close (fd1);
/* mmap file 2 */
- fd2 = open ("y2.txt", O_RDONLY | O_BINARY, 0644);
- buf2 = mmap (0, 4096, PROT_READ, MAP_PRIVATE, fd2, 0);
+ fd2 = open (fnam2, O_RDONLY | O_BINARY, 0644);
+ buf2 = mmap (0, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE, fd2, 0);
close (fd2);
/* the buffers have to be different */
- if (buf1 == buf2 || !memcmp (buf1, buf2, 20))
- {
- printf ("buffers are not different!\n");
- return 1;
- }
+ Tst_count = 0;
+ tst_resm (buf1 == buf2 || !memcmp (buf1, buf2, 20) ? TFAIL : TPASS,
+ "mmap uses unique buffers when mapping different already closed files");
+ munmap (buf2, 4096);
+
+ /* mmap file 1 twice with MAP_PRIVATE */
+ fd2 = open (fnam1, O_RDONLY | O_BINARY, 0644);
+ buf2 = mmap (0, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE, fd2, 0);
+ close (fd2);
+
+ tst_resm (buf1 == buf2 ? TFAIL : TPASS,
+ "mmap uses different buffers on MAP_PRIVATE mapping");
+
+ tst_resm (memcmp (buf1, buf2, 20) ? TFAIL : TPASS,
+ "two private buffers of the same file are identical");
+
+ buf1[0] = 0x7f;
+ tst_resm (!memcmp (buf1, buf2, 20) ? TFAIL : TPASS,
+ "changes are private in MAP_PRIVATE mappings");
+
+ munmap (buf1, 4096);
+ munmap (buf2, 4096);
+
+ /* mmap file 1 twice with MAP_SHARED */
+ fd1 = open (fnam1, O_RDWR | O_BINARY, 0644);
+ buf1 = mmap (0, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, fd1, 0);
+ close (fd1);
+
+ fd2 = open (fnam1, O_RDWR | O_BINARY, 0644);
+ buf2 = mmap (0, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, fd2, 0);
+ close (fd2);
+
+ tst_resm (memcmp (buf1, buf2, 20) ? TFAIL : TPASS,
+ "two shared buffers of the same file are identical");
+
+ buf1[0] = 0x7f;
+ tst_resm (memcmp (buf1, buf2, 20) ? TFAIL : TPASS,
+ "changes are shared between MAP_SHARED mappings of the same file");
+ munmap (buf2, 4096);
+
+ fd2 = open (fnam1, O_RDWR | O_BINARY, 0644);
+ memset (buf3, 0, 20);
+ read (fd2, buf3, 20);
+ close (fd2);
+
+ tst_resm (memcmp (buf1, buf3, 20) ? TFAIL : TPASS,
+ "changes are propagated to the mapped file on MAP_SHARED mapping");
- return 0;
+ munmap (buf1, 4096);
+ unlink (fnam1);
+ unlink (fnam2);
+ tst_exit ();
}
diff --git a/winsup/testsuite/winsup.api/winsup.exp b/winsup/testsuite/winsup.api/winsup.exp
index 6fb566335..1d45c9527 100644
--- a/winsup/testsuite/winsup.api/winsup.exp
+++ b/winsup/testsuite/winsup.api/winsup.exp
@@ -7,12 +7,13 @@ if { ! [isnative] } {
}
set rv ""
-set add_includes ""
-set add_libs ""
set ltp_includes "-I$ltp_includes"
set ltp_libs "$rootme/libltp.a"
+set add_includes $ltp_includes
+set add_libs $ltp_libs
+
set test_filter ""
if { [info exists env(CYGWIN_TESTSUITE_TESTS)] } {
@@ -47,11 +48,6 @@ foreach src [glob -nocomplain $srcdir/$subdir/*.c $srcdir/$subdir/*/*.c] {
clear_xfail
}
- if { [regexp "^ltp/" $testcase ] } {
- set add_includes $ltp_includes
- set add_libs $ltp_libs
- }
-
ws_spawn "$CC -g3 $CFLAGS $src $add_includes $add_libs $runtime_root/binmode.o $runtime_root/new-libcygwin.a -o $base.exe"
if { $rv != "" } {
verbose -log "$rv"