| 97 | } |
| 98 | |
| 99 | static void test_two_pages(CPLVirtualMem *ctxt) |
| 100 | { |
| 101 | volatile char *addr; |
| 102 | CPLJoinableThread *hThread; |
| 103 | |
| 104 | printf("test_two_pages()\n"); |
| 105 | |
| 106 | addr = (char *)CPLVirtualMemGetAddr(ctxt); |
| 107 | ASSERT_EQ(CPLVirtualMemGetPageSize(ctxt), MINIMUM_PAGE_SIZE); |
| 108 | ASSERT_TRUE(CPLVirtualMemIsAccessThreadSafe(ctxt)); |
| 109 | /*fprintfstderr("main thread is %X, addr=%p\n", pthread_self(), addr);*/ |
| 110 | hThread = CPLCreateJoinableThread(test_two_pages_thread, ctxt); |
| 111 | CPLVirtualMemDeclareThread(ctxt); |
| 112 | { |
| 113 | int i = 0; |
| 114 | for (i = 0; i < 50 * 1000; i++) |
| 115 | { |
| 116 | char val = addr[MINIMUM_PAGE_SIZE * (i % 3)]; |
| 117 | /*fprintfstderr("T1: val[%d] = %d\n", MINIMUM_PAGE_SIZE * (i % 2), |
| 118 | * val);*/ |
| 119 | ASSERT_EQ(val, (((i % 3) == 0) ? 0x3F |
| 120 | : ((i % 3) == 1) ? 0x5F |
| 121 | : 0x7F)); |
| 122 | } |
| 123 | } |
| 124 | CPLVirtualMemUnDeclareThread(ctxt); |
| 125 | CPLJoinThread(hThread); |
| 126 | CPLVirtualMemFree(ctxt); |
| 127 | } |
| 128 | |
| 129 | static void test_raw_auto(const char *pszFormat, int bFileMapping) |
| 130 | { |
no test coverage detected