Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(149)

Side by Side Diff: src/trusted/service_runtime/mmap_unittest.cc

Issue 298443002: Remove unused support for SysV shared memory (Closed) Base URL: svn://svn.chromium.org/native_client/trunk/src/native_client
Patch Set: Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2012 The Native Client Authors. All rights reserved. 2 * Copyright (c) 2012 The Native Client Authors. All rights reserved.
3 * Use of this source code is governed by a BSD-style license that can be 3 * Use of this source code is governed by a BSD-style license that can be
4 * found in the LICENSE file. 4 * found in the LICENSE file.
5 */ 5 */
6 6
7 #include <stdio.h> 7 #include <stdio.h>
8 #include <stdlib.h> 8 #include <stdlib.h>
9 9
10 #if NACL_LINUX 10 #if NACL_LINUX
11 # include <sys/mman.h> 11 # include <sys/mman.h>
12 #elif NACL_OSX 12 #elif NACL_OSX
13 # include <mach/mach.h> 13 # include <mach/mach.h>
14 #endif 14 #endif
15 15
16 #include "gtest/gtest.h" 16 #include "gtest/gtest.h"
17 17
18 #include "native_client/src/include/portability_io.h" 18 #include "native_client/src/include/portability_io.h"
19 #include "native_client/src/trusted/desc/linux/nacl_desc_sysv_shm.h"
20 #include "native_client/src/trusted/desc/nacl_desc_imc_shm.h" 19 #include "native_client/src/trusted/desc/nacl_desc_imc_shm.h"
21 #include "native_client/src/trusted/desc/nacl_desc_io.h" 20 #include "native_client/src/trusted/desc/nacl_desc_io.h"
22 #include "native_client/src/trusted/desc/nrd_all_modules.h" 21 #include "native_client/src/trusted/desc/nrd_all_modules.h"
23 #include "native_client/src/trusted/service_runtime/include/bits/mman.h" 22 #include "native_client/src/trusted/service_runtime/include/bits/mman.h"
24 #include "native_client/src/trusted/service_runtime/include/sys/fcntl.h" 23 #include "native_client/src/trusted/service_runtime/include/sys/fcntl.h"
25 #include "native_client/src/trusted/service_runtime/mmap_test_check.h" 24 #include "native_client/src/trusted/service_runtime/mmap_test_check.h"
26 #include "native_client/src/trusted/service_runtime/nacl_app_thread.h" 25 #include "native_client/src/trusted/service_runtime/nacl_app_thread.h"
27 #include "native_client/src/trusted/service_runtime/sel_addrspace.h" 26 #include "native_client/src/trusted/service_runtime/sel_addrspace.h"
28 #include "native_client/src/trusted/service_runtime/sel_ldr.h" 27 #include "native_client/src/trusted/service_runtime/sel_ldr.h"
29 #include "native_client/src/trusted/service_runtime/sys_memory.h" 28 #include "native_client/src/trusted/service_runtime/sys_memory.h"
(...skipping 361 matching lines...) Expand 10 before | Expand all | Expand 10 after
391 CheckMapping(sysaddr, size, PROT_NONE, MAP_PRIVATE); 390 CheckMapping(sysaddr, size, PROT_NONE, MAP_PRIVATE);
392 #elif NACL_OSX 391 #elif NACL_OSX
393 CheckMapping(sysaddr, size, VM_PROT_NONE, SM_EMPTY); 392 CheckMapping(sysaddr, size, VM_PROT_NONE, SM_EMPTY);
394 #else 393 #else
395 # error Unsupported platform 394 # error Unsupported platform
396 #endif 395 #endif
397 396
398 NaClAddrSpaceFree(&app); 397 NaClAddrSpaceFree(&app);
399 } 398 }
400 399
401 // NaCl uses SysV shared memory only on Linux, because X Windows
402 // depends on it.
403 #if NACL_LINUX
404 TEST_F(MmapTest, TestSysvShmMapping) {
405 struct NaClApp app;
406 ASSERT_EQ(NaClAppCtor(&app), 1);
407 ASSERT_EQ(NaClAllocAddrSpace(&app), LOAD_OK);
408
409 size_t shm_size = 0x12000;
410 size_t rounded_size = NaClRoundAllocPage(shm_size);
411 ASSERT_EQ(rounded_size, (size_t) 0x20000);
412
413 struct NaClDescSysvShm *shm_desc =
414 (struct NaClDescSysvShm *) malloc(sizeof(*shm_desc));
415 ASSERT_TRUE(NaClDescSysvShmCtor(shm_desc, shm_size));
416 struct NaClDesc *desc = &shm_desc->base;
417 int fd = NaClAppSetDescAvail(&app, desc);
418
419 uintptr_t mapping_addr = 0x200000;
420
421 // First, map something with PROT_READ, so that we can later check
422 // that this is correctly overwritten by PROT_READ|PROT_WRITE and
423 // PROT_NONE mappings.
424 uintptr_t result_addr = (uint32_t) NaClSysMmapIntern(
425 &app, (void *) mapping_addr, shm_size,
426 NACL_ABI_PROT_READ,
427 NACL_ABI_MAP_FIXED | NACL_ABI_MAP_PRIVATE | NACL_ABI_MAP_ANONYMOUS,
428 -1, 0);
429 ASSERT_EQ(result_addr, mapping_addr);
430
431 result_addr = (uint32_t) NaClSysMmapIntern(
432 &app, (void *) mapping_addr, shm_size,
433 NACL_ABI_PROT_READ | NACL_ABI_PROT_WRITE,
434 NACL_ABI_MAP_FIXED | NACL_ABI_MAP_SHARED, fd, 0);
435 ASSERT_EQ(result_addr, mapping_addr);
436 uintptr_t sysaddr = NaClUserToSys(&app, mapping_addr);
437 // We should see two mappings. The first is the SysV shared memory
438 // segment. The second is padding upto the 64k page size.
439 CheckMapping(sysaddr, shm_size, PROT_READ | PROT_WRITE, MAP_SHARED);
440 CheckMapping(sysaddr + shm_size, rounded_size - shm_size,
441 PROT_NONE, MAP_PRIVATE);
442
443 NaClDescUnref(desc);
444 NaClAddrSpaceFree(&app);
445 }
446 #endif
447
448 #endif /* NACL_ARCH(NACL_BUILD_ARCH) != NACL_arm */ 400 #endif /* NACL_ARCH(NACL_BUILD_ARCH) != NACL_arm */
OLDNEW
« no previous file with comments | « src/trusted/service_runtime/include/bits/stat.h ('k') | src/trusted/service_runtime/sys_memory.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698