1f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 2f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// found in the LICENSE file. 4f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 5f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "crazy_linker_ashmem.h" 6f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 7f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include <sys/mman.h> 8f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 9f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include <minitest/minitest.h> 10f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 11f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)namespace crazy { 12f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 13f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)TEST(AshmemRegion, Construction) { 14f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) AshmemRegion region; 15f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_EQ(-1, region.fd()); 16f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)} 17f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 18f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)TEST(AshmemRegion, Allocate) { 19f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) AshmemRegion region; 20f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) const size_t kSize = 4096 * 10; 21f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_TRUE(region.Allocate(kSize, __FUNCTION__)); 22f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) void* map = ::mmap(NULL, 23f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) kSize, 24f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) PROT_READ | PROT_WRITE, 25f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) MAP_ANONYMOUS | MAP_SHARED, 26f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) region.fd(), 27f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 0); 28f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_NE(MAP_FAILED, map); 29f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 30f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) for (size_t n = 0; n < kSize; ++n) { 31f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) TEST_TEXT << "Checking region[" << n << "]"; 32f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_EQ(0, ((char*)map)[n]); 33f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) } 34f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 35f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) EXPECT_EQ(0, ::munmap(map, kSize)); 36f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)} 37f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 38f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)} // namespace crazy 39