Lines Matching +full:page +full:- +full:offset

1 /*-
50 #include <atf-c.h>
66 ATF_REQUIRE_MSG(mkstemp(path) != -1, in gen_a_test_path()
93 ATF_CHECK_MSG(fd == -1, "shm_open didn't fail"); in shm_open_should_fail()
106 ATF_CHECK_MSG(shm_unlink(path) == -1, "shm_unlink didn't fail"); in shm_unlink_should_fail()
114 * on success and -1 on failure.
119 char *page; in scribble_object() local
135 page = mmap(0, pagesize, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); in scribble_object()
136 if (page == MAP_FAILED) in scribble_object()
139 page[0] = value; in scribble_object()
140 ATF_REQUIRE_MSG(munmap(page, pagesize) == 0, "munmap failed; errno=%d", in scribble_object()
155 char *page; in verify_object() local
164 page = mmap(0, pagesize, PROT_READ, MAP_SHARED, fd, 0); in verify_object()
165 if (page == MAP_FAILED) in verify_object()
167 if (page[0] != expected_value) in verify_object()
170 page[0], page[0], isprint(page[0]) ? page[0] : ' ', in verify_object()
173 ATF_REQUIRE_MSG(munmap(page, pagesize) == 0, "munmap failed; errno=%d", in verify_object()
182 shm_fill(int fd, off_t offset, off_t len) in shm_fill() argument
197 if (pwrite(fd, buf, blen, offset) != (ssize_t)blen) { in shm_fill()
201 len -= blen; in shm_fill()
202 offset += blen; in shm_fill()
214 off_t offset, resid; in check_content_dealloc() local
228 hole_len = shm_sz - hole_start; in check_content_dealloc()
233 offset = hole_start; in check_content_dealloc()
237 if (pread(fd, buf, blen, offset) != (ssize_t)blen) { in check_content_dealloc()
245 resid -= blen; in check_content_dealloc()
246 offset += blen; in check_content_dealloc()
254 offset = 0; in check_content_dealloc()
258 if (pread(fd, buf, blen, offset) != (ssize_t)blen) { in check_content_dealloc()
266 resid -= blen; in check_content_dealloc()
267 offset += blen; in check_content_dealloc()
273 offset = hole_start + hole_len; in check_content_dealloc()
274 resid = shm_sz - offset; in check_content_dealloc()
277 if (pread(fd, buf, blen, offset) != (ssize_t)blen) { in check_content_dealloc()
285 resid -= blen; in check_content_dealloc()
286 offset += blen; in check_content_dealloc()
292 if (fstat(fd, &statbuf) == -1) in check_content_dealloc()
293 error = -1; in check_content_dealloc()
295 error = -1; in check_content_dealloc()
304 char *page; in ATF_TC_BODY() local
312 page = mmap(0, pagesize, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); in ATF_TC_BODY()
313 if (page == MAP_FAILED) in ATF_TC_BODY()
316 if (page[0] != '1') in ATF_TC_BODY()
317 atf_tc_fail("missing data ('%c' != '1')", page[0]); in ATF_TC_BODY()
320 ATF_REQUIRE_MSG(munmap(page, pagesize) == 0, "munmap failed; errno=%d", in ATF_TC_BODY()
323 ATF_REQUIRE_MSG(shm_unlink(test_path) != -1, in ATF_TC_BODY()
334 if (rc != -1) in ATF_TC_BODY()
348 if (rc != -1) in ATF_TC_BODY()
352 if (rc != -1) in ATF_TC_BODY()
364 if (rc != -1) in ATF_TC_BODY()
379 if (rc != -1) in ATF_TC_BODY()
431 ATF_REQUIRE_MSG((rc == -1) && (errno == EEXIST), in ATF_TC_BODY()
527 ATF_REQUIRE_MSG((rc == -1) && (errno == EINVAL), in ATF_TC_BODY()
535 char *page; in ATF_TC_BODY() local
548 page = mmap(0, pagesize, PROT_READ, MAP_SHARED, fd, 0); in ATF_TC_BODY()
549 if (page == MAP_FAILED) in ATF_TC_BODY()
552 if (page[0] != '1') in ATF_TC_BODY()
553 atf_tc_fail("missing data ('%c' != '1')", page[0]); in ATF_TC_BODY()
555 ATF_REQUIRE_MSG(munmap(page, pagesize) == 0, "munmap failed; errno=%d", in ATF_TC_BODY()
558 ATF_REQUIRE_MSG(shm_unlink(test_path) != -1, in ATF_TC_BODY()
565 char *page; in ATF_TC_BODY() local
576 page = mmap(0, pagesize, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); in ATF_TC_BODY()
577 if (page != MAP_FAILED) in ATF_TC_BODY()
585 ATF_REQUIRE_MSG(shm_unlink(test_path) != -1, in ATF_TC_BODY()
600 ATF_REQUIRE_MSG(shm_unlink(test_path) != -1, "shm_unlink failed: %d", in ATF_TC_BODY()
658 char *page; in ATF_TC_BODY() local
660 page = malloc(MAXPATHLEN + 1); in ATF_TC_BODY()
661 memset(page, 'a', MAXPATHLEN); in ATF_TC_BODY()
662 page[MAXPATHLEN] = '\0'; in ATF_TC_BODY()
663 shm_open_should_fail(page, O_RDONLY, 0777, ENAMETOOLONG); in ATF_TC_BODY()
664 free(page); in ATF_TC_BODY()
688 ATF_REQUIRE_MSG(shm_unlink(test_path) != -1, in ATF_TC_BODY()
703 ATF_REQUIRE_MSG(ftruncate(fd, 1024) != -1, in ATF_TC_BODY()
705 ATF_REQUIRE_MSG(fstat(fd, &sb) != -1, in ATF_TC_BODY()
713 ATF_REQUIRE_MSG(fstat(fd, &sb) != -1, in ATF_TC_BODY()
718 ATF_REQUIRE_MSG(shm_unlink(test_path) != -1, in ATF_TC_BODY()
732 char *page; in ATF_TC_BODY() local
734 page = malloc(MAXPATHLEN + 1); in ATF_TC_BODY()
735 memset(page, 'a', MAXPATHLEN); in ATF_TC_BODY()
736 page[MAXPATHLEN] = '\0'; in ATF_TC_BODY()
737 shm_unlink_should_fail(page, ENAMETOOLONG); in ATF_TC_BODY()
738 free(page); in ATF_TC_BODY()
746 char *page; in ATF_TC_BODY() local
751 /* Start off with a size of a single page. */ in ATF_TC_BODY()
767 page = mmap(0, pagesize, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0); in ATF_TC_BODY()
768 if (page == MAP_FAILED) in ATF_TC_BODY()
771 page[0] = '1'; in ATF_TC_BODY()
773 ATF_REQUIRE_MSG(munmap(page, pagesize) == 0, "munmap failed; errno=%d", in ATF_TC_BODY()
788 page = mmap(0, pagesize * 2, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0); in ATF_TC_BODY()
789 if (page == MAP_FAILED) in ATF_TC_BODY()
792 if (page[0] != '1') in ATF_TC_BODY()
793 atf_tc_fail("'%c' != '1'", page[0]); in ATF_TC_BODY()
795 /* Write a '2' at the start of the second page. */ in ATF_TC_BODY()
796 page[pagesize] = '2'; in ATF_TC_BODY()
798 /* Shrink the object back to 1 page. */ in ATF_TC_BODY()
810 * Fork a child process to make sure the second page is no in ATF_TC_BODY()
814 if (pid == -1) in ATF_TC_BODY()
831 c = page[pagesize]; in ATF_TC_BODY()
832 fprintf(stderr, "child: page 1: '%c'\n", c); in ATF_TC_BODY()
854 * Note that the mapping at 'page' for the second page is in ATF_TC_BODY()
856 * back up to 2 pages, there is now memory backing this page in ATF_TC_BODY()
860 * grown are zero-filled. in ATF_TC_BODY()
862 if (page[pagesize] != 0) in ATF_TC_BODY()
864 pagesize, (int)page[pagesize]); in ATF_TC_BODY()
891 (long)_POSIX_SHARED_MEMORY_OBJECTS - 0); in ATF_TC_BODY()
892 if (_POSIX_SHARED_MEMORY_OBJECTS - 0 == -1) in ATF_TC_BODY()
897 if (scval == -1 && errno != 0) { in ATF_TC_BODY()
903 if (scval == -1) in ATF_TC_BODY()
909 if (scval == -1 && errno != 0) { in ATF_TC_BODY()
926 ATF_REQUIRE_MSG(ftruncate(desc, (off_t)psize) != -1, in ATF_TC_BODY()
945 ATF_REQUIRE_MSG(rv != -1, "fork failed; errno=%d", errno); in ATF_TC_BODY()
954 if (lseek(desc, 0, SEEK_SET) == -1) in ATF_TC_BODY()
965 memset(region, '\151', psize - 2); in ATF_TC_BODY()
966 error = pwrite(desc, region, 2, psize - 2); in ATF_TC_BODY()
1057 * as needed in a race-free way. in ATF_TC_BODY()
1077 /* Grow it using an offset of sz and len of sz. */ in ATF_TC_BODY()
1090 off_t offset, length, shm_sz; in ATF_TC_BODY() local
1104 range.r_offset = offset = page_size; in ATF_TC_BODY()
1105 range.r_len = length = ((shm_max_pages - 1) * page_size) - in ATF_TC_BODY()
1109 ATF_CHECK_MSG(check_content_dealloc(fd, offset, length, shm_sz) == 0, in ATF_TC_BODY()
1114 range.r_offset = offset = page_size / 2; in ATF_TC_BODY()
1115 range.r_len = length = (shm_max_pages - 1) * page_size + in ATF_TC_BODY()
1116 (page_size / 2) - offset; in ATF_TC_BODY()
1119 ATF_CHECK_MSG(check_content_dealloc(fd, offset, length, shm_sz) == 0, in ATF_TC_BODY()
1124 range.r_offset = offset = page_size; in ATF_TC_BODY()
1125 range.r_len = length = OFF_MAX - offset; in ATF_TC_BODY()
1128 ATF_CHECK_MSG(check_content_dealloc(fd, offset, length, shm_sz) == 0, in ATF_TC_BODY()
1133 range.r_offset = offset = page_size / 2; in ATF_TC_BODY()
1134 range.r_len = length = OFF_MAX - offset; in ATF_TC_BODY()
1137 ATF_CHECK_MSG(check_content_dealloc(fd, offset, length, shm_sz) == 0, in ATF_TC_BODY()
1142 range.r_offset = offset = page_size; in ATF_TC_BODY()
1143 range.r_len = length = (shm_max_pages + 1) * page_size - offset; in ATF_TC_BODY()
1146 ATF_CHECK_MSG(check_content_dealloc(fd, offset, length, shm_sz) == 0, in ATF_TC_BODY()
1151 range.r_offset = offset = page_size / 2; in ATF_TC_BODY()
1152 range.r_len = length = (shm_max_pages + 1) * page_size - offset; in ATF_TC_BODY()
1155 ATF_CHECK_MSG(check_content_dealloc(fd, offset, length, shm_sz) == 0, in ATF_TC_BODY()
1183 range.r_len = len = (shm_max_pages - 1) * page_size - in ATF_TC_BODY()
1188 ATF_REQUIRE(st.st_blksize * st.st_blocks == (blkcnt_t)(shm_sz - len)); in ATF_TC_BODY()
1227 atf_tc_skip("no large page support"); in shm_open_large()
1236 atf_tc_skip("failed to allocate %zu-byte superpage", sz); in shm_open_large()
1248 ATF_REQUIRE_MSG(pscnt != -1, "getpagesizes failed; errno=%d", errno); in pagesizes()
1252 atf_tc_skip("no large page support"); in pagesizes()
1274 ATF_REQUIRE_MSG(((uintptr_t)addr & (ps[i] - 1)) == 0, in ATF_TC_BODY()
1278 /* Force a page fault. */ in ATF_TC_BODY()
1289 "page %zu is not mapped", p); in ATF_TC_BODY()
1292 "page %zu is not in a %zu-byte superpage", in ATF_TC_BODY()
1299 ps[0]) == 0, "page %zu miscompare", p); in ATF_TC_BODY()
1326 * Configure a large page policy for an object created without in ATF_TC_BODY()
1344 atf_tc_skip("no large page support"); in ATF_TC_BODY()
1360 ATF_REQUIRE(write(fd, buf, ps[0]) == -1); in ATF_TC_BODY()
1365 ATF_REQUIRE(write(fd, buf, ps[1]) == -1); in ATF_TC_BODY()
1393 addr = mmap(NULL, ps[i - 1], PROT_READ | PROT_WRITE, MAP_SHARED, in ATF_TC_BODY()
1396 "mmap(%zu bytes) succeeded", ps[i - 1]); in ATF_TC_BODY()
1398 "mmap(%zu bytes) failed; error=%d", ps[i - 1], errno); in ATF_TC_BODY()
1407 ATF_REQUIRE_MSG(((uintptr_t)addr & (ps[i] - 1)) == 0, in ATF_TC_BODY()
1411 /* Try mapping a small page with anonymous memory. */ in ATF_TC_BODY()
1412 addr1 = mmap(addr, ps[i - 1], PROT_READ | PROT_WRITE, in ATF_TC_BODY()
1413 MAP_PRIVATE | MAP_ANON | MAP_FIXED, -1, 0); in ATF_TC_BODY()
1415 "anon mmap(%zu bytes) succeeded", ps[i - 1]); in ATF_TC_BODY()
1438 MAP_ANON | MAP_PRIVATE | MAP_ALIGNED(ffsl(ps[i]) - 1), -1, in ATF_TC_BODY()
1453 "page %zu is not resident", p); in ATF_TC_BODY()
1456 "page %zu is not resident", p); in ATF_TC_BODY()
1460 * Copy-on-write mappings are not permitted. in ATF_TC_BODY()
1481 ps1 = ps[i - 1]; in ATF_TC_BODY()
1492 ATF_REQUIRE(munmap(addr, ps[i] - ps1)); in ATF_TC_BODY()
1600 if (ps[i] / ps[0] > max_wired - wired) { in ATF_TC_BODY()
1614 ATF_REQUIRE(mlock(addr, ps[i] - ps[0]) != 0); in ATF_TC_BODY()
1652 * "Sync" requests are no-ops for SHM objects, so small in ATF_TC_BODY()
1653 * PAGE_SIZE-sized requests succeed. in ATF_TC_BODY()
1707 MAP_ANON | MAP_ALIGNED(ffsl(ps[i]) - 1), -1, 0); in ATF_TC_BODY()
1719 * These should be no-ops from the pmap perspective since the in ATF_TC_BODY()
1720 * page is not yet entered into the pmap. in ATF_TC_BODY()
1750 largepage_protect(addr1 - ps[0], ps[0] * 2, in ATF_TC_BODY()
1783 ATF_REQUIRE_MSG(child != -1, "fork failed; error=%d", errno); in ATF_TC_BODY()
1804 ATF_REQUIRE_MSG(child != -1, "fork failed; error=%d", errno); in ATF_TC_BODY()
1819 /* Copy-on-write is not supported for static large pages. */ in ATF_TC_BODY()
1826 ATF_REQUIRE_MSG(child != -1, "fork failed; error=%d", errno); in ATF_TC_BODY()
1872 ATF_REQUIRE_MSG(child != -1, "fork() failed; error=%d", errno); in ATF_TC_BODY()
1878 for (resid = (size_t)ps[i]; resid > 0; resid -= len) { in ATF_TC_BODY()
1918 atf_tc_skip("no large page support"); in ATF_TC_BODY()
1940 "page not mapped into a %zu-byte superpage", ps[psind]); in ATF_TC_BODY()