- rbuf = mmap(0, len, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANON, 0, 0);
- if (rbuf == MAP_FAILED) {
- printf("No memory %s\n", strerror(errno));
- return 1;
- }
-
- memset(wbuf, 0xba, len);
- rc = write(fd, wbuf, len);
- if (rc != len) {
- printf("Write error %s (rc = %d)\n", strerror(errno), rc);
- return 1;
- }
-
- if (lseek64(fd, seek, SEEK_SET) < 0) {
- printf("Cannot seek %s\n", strerror(errno));
- return 1;
- }
-
- rc = read(fd, rbuf, len);
- if (rc != len) {
- printf("Read error: %s (rc = %d)\n", strerror(errno), rc);
- return 1;
- }
-
- verify(rbuf, wbuf, len);
- if (memcmp(wbuf, rbuf, len)) {
- printf("Data mismatch on line %d\n", __LINE__);
- return 1;
- }
-
- /* try 512-byte buffers, and make sure that the other parts of the
- * page aren't modified. */
- if (st.st_blksize < 4096) {
- printf("512-byte block size tests skipped (because blocksize "
- "passed is < 4k)\n");
- printf("PASS\n");
- return 0;
- }
-
-
-
- /* write test */
- if (lseek64(fd, 512, SEEK_SET) < 0) {
- printf("Cannot seek %s\n", strerror(errno));
- return 1;
- }
-
- memset(wbuf, 0x44, len);
- memset(wbuf + 2048, 0x69, 512);
- rc = write(fd, wbuf + 2048, 512);
- if (rc != 512) {
- printf("Write error %s (rc = %d)\n", strerror(errno), rc);
- return 1;
- }
-
- memset(rbuf, 0x44, len);
- memset(rbuf + 2048, 0x69, 512);
- if (memcmp(wbuf, rbuf, len)) {
- printf("Data mismatch on line %d\n", __LINE__);
- return 1;
- }