summaryrefslogtreecommitdiffstats
path: root/linker
diff options
context:
space:
mode:
authorDmitriy Ivanov <dimitry@google.com>2015-03-10 15:43:50 -0700
committerDmitriy Ivanov <dimitry@google.com>2015-03-10 15:43:50 -0700
commit600bc3cb9342fbb1dc16ea25f5b676ce072e3e1b (patch)
tree5892626ab8bfc8648476ba15f71d20e03e90da11 /linker
parentc9ce70d7838b6aae074fc3615cdf04e5c9ac612a (diff)
downloadbionic-600bc3cb9342fbb1dc16ea25f5b676ce072e3e1b.zip
bionic-600bc3cb9342fbb1dc16ea25f5b676ce072e3e1b.tar.gz
bionic-600bc3cb9342fbb1dc16ea25f5b676ce072e3e1b.tar.bz2
Rename LinkerAllocator and LinkerAllocatorPage
Change-Id: I87d80fbcd4ec26c0ee4f601b9c4c64f600418dd9
Diffstat (limited to 'linker')
-rw-r--r--linker/linker.cpp4
-rw-r--r--linker/linker_block_allocator.cpp21
-rw-r--r--linker/linker_block_allocator.h13
-rw-r--r--linker/tests/linker_block_allocator_test.cpp8
4 files changed, 24 insertions, 22 deletions
diff --git a/linker/linker.cpp b/linker/linker.cpp
index 493b035..ea7d637 100644
--- a/linker/linker.cpp
+++ b/linker/linker.cpp
@@ -92,8 +92,8 @@ static const char* get_base_name(const char* name) {
static ElfW(Addr) get_elf_exec_load_bias(const ElfW(Ehdr)* elf);
-static LinkerAllocator<soinfo> g_soinfo_allocator;
-static LinkerAllocator<LinkedListEntry<soinfo>> g_soinfo_links_allocator;
+static LinkerTypeAllocator<soinfo> g_soinfo_allocator;
+static LinkerTypeAllocator<LinkedListEntry<soinfo>> g_soinfo_links_allocator;
static soinfo* solist;
static soinfo* sonext;
diff --git a/linker/linker_block_allocator.cpp b/linker/linker_block_allocator.cpp
index 4545c4a..fc9a75b 100644
--- a/linker/linker_block_allocator.cpp
+++ b/linker/linker_block_allocator.cpp
@@ -22,9 +22,9 @@
#include "private/bionic_prctl.h"
-struct LinkerAllocatorPage {
- LinkerAllocatorPage* next;
- uint8_t bytes[PAGE_SIZE-sizeof(LinkerAllocatorPage*)];
+struct LinkerBlockAllocatorPage {
+ LinkerBlockAllocatorPage* next;
+ uint8_t bytes[PAGE_SIZE-sizeof(LinkerBlockAllocatorPage*)];
};
struct FreeBlockInfo {
@@ -64,7 +64,7 @@ void LinkerBlockAllocator::free(void* block) {
return;
}
- LinkerAllocatorPage* page = find_page(block);
+ LinkerBlockAllocatorPage* page = find_page(block);
if (page == nullptr) {
abort();
@@ -87,7 +87,7 @@ void LinkerBlockAllocator::free(void* block) {
}
void LinkerBlockAllocator::protect_all(int prot) {
- for (LinkerAllocatorPage* page = page_list_; page != nullptr; page = page->next) {
+ for (LinkerBlockAllocatorPage* page = page_list_; page != nullptr; page = page->next) {
if (mprotect(page, PAGE_SIZE, prot) == -1) {
abort();
}
@@ -95,8 +95,9 @@ void LinkerBlockAllocator::protect_all(int prot) {
}
void LinkerBlockAllocator::create_new_page() {
- LinkerAllocatorPage* page = reinterpret_cast<LinkerAllocatorPage*>(mmap(nullptr, PAGE_SIZE,
- PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, 0, 0));
+ LinkerBlockAllocatorPage* page = reinterpret_cast<LinkerBlockAllocatorPage*>(
+ mmap(nullptr, PAGE_SIZE, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, 0, 0));
+
if (page == MAP_FAILED) {
abort(); // oom
}
@@ -107,7 +108,7 @@ void LinkerBlockAllocator::create_new_page() {
FreeBlockInfo* first_block = reinterpret_cast<FreeBlockInfo*>(page->bytes);
first_block->next_block = free_block_list_;
- first_block->num_free_blocks = (PAGE_SIZE - sizeof(LinkerAllocatorPage*))/block_size_;
+ first_block->num_free_blocks = (PAGE_SIZE - sizeof(LinkerBlockAllocatorPage*))/block_size_;
free_block_list_ = first_block;
@@ -115,12 +116,12 @@ void LinkerBlockAllocator::create_new_page() {
page_list_ = page;
}
-LinkerAllocatorPage* LinkerBlockAllocator::find_page(void* block) {
+LinkerBlockAllocatorPage* LinkerBlockAllocator::find_page(void* block) {
if (block == nullptr) {
abort();
}
- LinkerAllocatorPage* page = page_list_;
+ LinkerBlockAllocatorPage* page = page_list_;
while (page != nullptr) {
const uint8_t* page_ptr = reinterpret_cast<const uint8_t*>(page);
if (block >= (page_ptr + sizeof(page->next)) && block < (page_ptr + PAGE_SIZE)) {
diff --git a/linker/linker_block_allocator.h b/linker/linker_block_allocator.h
index 5d3563f..1d41806 100644
--- a/linker/linker_block_allocator.h
+++ b/linker/linker_block_allocator.h
@@ -21,7 +21,7 @@
#include <limits.h>
#include "private/bionic_macros.h"
-struct LinkerAllocatorPage;
+struct LinkerBlockAllocatorPage;
/*
* This class is a non-template version of the LinkerAllocator
@@ -40,10 +40,10 @@ class LinkerBlockAllocator {
private:
void create_new_page();
- LinkerAllocatorPage* find_page(void* block);
+ LinkerBlockAllocatorPage* find_page(void* block);
size_t block_size_;
- LinkerAllocatorPage* page_list_;
+ LinkerBlockAllocatorPage* page_list_;
void* free_block_list_;
DISALLOW_COPY_AND_ASSIGN(LinkerBlockAllocator);
@@ -57,14 +57,15 @@ class LinkerBlockAllocator {
* anonymous mmaps.
*/
template<typename T>
-class LinkerAllocator {
+class LinkerTypeAllocator {
public:
- LinkerAllocator() : block_allocator_(sizeof(T)) {}
+ LinkerTypeAllocator() : block_allocator_(sizeof(T)) {}
T* alloc() { return reinterpret_cast<T*>(block_allocator_.alloc()); }
void free(T* t) { block_allocator_.free(t); }
void protect_all(int prot) { block_allocator_.protect_all(prot); }
private:
LinkerBlockAllocator block_allocator_;
- DISALLOW_COPY_AND_ASSIGN(LinkerAllocator);
+ DISALLOW_COPY_AND_ASSIGN(LinkerTypeAllocator);
};
+
#endif // __LINKER_ALLOCATOR_H
diff --git a/linker/tests/linker_block_allocator_test.cpp b/linker/tests/linker_block_allocator_test.cpp
index 6674881..3ef0f36 100644
--- a/linker/tests/linker_block_allocator_test.cpp
+++ b/linker/tests/linker_block_allocator_test.cpp
@@ -49,7 +49,7 @@ static size_t kPageSize = sysconf(_SC_PAGE_SIZE);
};
TEST(linker_allocator, test_nominal) {
- LinkerAllocator<test_struct_nominal> allocator;
+ LinkerTypeAllocator<test_struct_nominal> allocator;
test_struct_nominal* ptr1 = allocator.alloc();
ASSERT_TRUE(ptr1 != nullptr);
@@ -65,7 +65,7 @@ TEST(linker_allocator, test_nominal) {
}
TEST(linker_allocator, test_small) {
- LinkerAllocator<test_struct_small> allocator;
+ LinkerTypeAllocator<test_struct_small> allocator;
char* ptr1 = reinterpret_cast<char*>(allocator.alloc());
char* ptr2 = reinterpret_cast<char*>(allocator.alloc());
@@ -76,7 +76,7 @@ TEST(linker_allocator, test_small) {
}
TEST(linker_allocator, test_larger) {
- LinkerAllocator<test_struct_larger> allocator;
+ LinkerTypeAllocator<test_struct_larger> allocator;
test_struct_larger* ptr1 = allocator.alloc();
test_struct_larger* ptr2 = allocator.alloc();
@@ -99,7 +99,7 @@ TEST(linker_allocator, test_larger) {
}
static void protect_all() {
- LinkerAllocator<test_struct_larger> allocator;
+ LinkerTypeAllocator<test_struct_larger> allocator;
// number of allocs to reach the end of first page
size_t n = kPageSize/sizeof(test_struct_larger) - 1;