summaryrefslogtreecommitdiff
path: root/memory_replay/Alloc.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'memory_replay/Alloc.cpp')
-rw-r--r--memory_replay/Alloc.cpp178
1 files changed, 0 insertions, 178 deletions
diff --git a/memory_replay/Alloc.cpp b/memory_replay/Alloc.cpp
deleted file mode 100644
index af94ee5d..00000000
--- a/memory_replay/Alloc.cpp
+++ /dev/null
@@ -1,178 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <err.h>
-#include <inttypes.h>
-#include <stdint.h>
-#include <stdio.h>
-#include <unistd.h>
-
-#include <string>
-
-#include "Alloc.h"
-#include "Pointers.h"
-#include "Utils.h"
-
-void AllocGetData(const std::string& line, AllocEntry* entry) {
- int line_pos = 0;
- char name[128];
- // All lines have this format:
- // TID: ALLOCATION_TYPE POINTER
- // where
- // TID is the thread id of the thread doing the operation.
- // ALLOCATION_TYPE is one of malloc, calloc, memalign, realloc, free, thread_done
- // POINTER is the hex value of the actual pointer
- if (sscanf(line.c_str(), "%d: %127s %" SCNx64 " %n", &entry->tid, name, &entry->ptr, &line_pos) !=
- 3) {
- errx(1, "File Error: Failed to process %s", line.c_str());
- }
- const char* line_end = &line[line_pos];
- std::string type(name);
- if (type == "malloc") {
- // Format:
- // TID: malloc POINTER SIZE_OF_ALLOCATION
- if (sscanf(line_end, "%zu", &entry->size) != 1) {
- errx(1, "File Error: Failed to read malloc data %s", line.c_str());
- }
- entry->type = MALLOC;
- } else if (type == "free") {
- // Format:
- // TID: free POINTER
- entry->type = FREE;
- } else if (type == "calloc") {
- // Format:
- // TID: calloc POINTER ITEM_COUNT ITEM_SIZE
- if (sscanf(line_end, "%" SCNd64 " %zu", &entry->u.n_elements, &entry->size) != 2) {
- errx(1, "File Error: Failed to read calloc data %s", line.c_str());
- }
- entry->type = CALLOC;
- } else if (type == "realloc") {
- // Format:
- // TID: calloc POINTER NEW_SIZE OLD_POINTER
- if (sscanf(line_end, "%" SCNx64 " %zu", &entry->u.old_ptr, &entry->size) != 2) {
- errx(1, "File Error: Failed to read realloc data %s", line.c_str());
- }
- entry->type = REALLOC;
- } else if (type == "memalign") {
- // Format:
- // TID: memalign POINTER ALIGNMENT SIZE
- if (sscanf(line_end, "%" SCNd64 " %zu", &entry->u.align, &entry->size) != 2) {
- errx(1, "File Error: Failed to read memalign data %s", line.c_str());
- }
- entry->type = MEMALIGN;
- } else if (type == "thread_done") {
- entry->type = THREAD_DONE;
- } else {
- errx(1, "File Error: Unknown type %s", type.c_str());
- }
-}
-
-bool AllocDoesFree(const AllocEntry& entry) {
- switch (entry.type) {
- case MALLOC:
- case CALLOC:
- case MEMALIGN:
- case THREAD_DONE:
- return false;
-
- case FREE:
- return entry.ptr != 0;
-
- case REALLOC:
- return entry.u.old_ptr != 0;
- }
-}
-
-static uint64_t MallocExecute(const AllocEntry& entry, Pointers* pointers) {
- int pagesize = getpagesize();
- uint64_t time_nsecs = Nanotime();
- void* memory = malloc(entry.size);
- MakeAllocationResident(memory, entry.size, pagesize);
- time_nsecs = Nanotime() - time_nsecs;
-
- pointers->Add(entry.ptr, memory);
-
- return time_nsecs;
-}
-
-static uint64_t CallocExecute(const AllocEntry& entry, Pointers* pointers) {
- int pagesize = getpagesize();
- uint64_t time_nsecs = Nanotime();
- void* memory = calloc(entry.u.n_elements, entry.size);
- MakeAllocationResident(memory, entry.u.n_elements * entry.size, pagesize);
- time_nsecs = Nanotime() - time_nsecs;
-
- pointers->Add(entry.ptr, memory);
-
- return time_nsecs;
-}
-
-static uint64_t ReallocExecute(const AllocEntry& entry, Pointers* pointers) {
- void* old_memory = nullptr;
- if (entry.u.old_ptr != 0) {
- old_memory = pointers->Remove(entry.u.old_ptr);
- }
-
- int pagesize = getpagesize();
- uint64_t time_nsecs = Nanotime();
- void* memory = realloc(old_memory, entry.size);
- MakeAllocationResident(memory, entry.size, pagesize);
- time_nsecs = Nanotime() - time_nsecs;
-
- pointers->Add(entry.ptr, memory);
-
- return time_nsecs;
-}
-
-static uint64_t MemalignExecute(const AllocEntry& entry, Pointers* pointers) {
- int pagesize = getpagesize();
- uint64_t time_nsecs = Nanotime();
- void* memory = memalign(entry.u.align, entry.size);
- MakeAllocationResident(memory, entry.size, pagesize);
- time_nsecs = Nanotime() - time_nsecs;
-
- pointers->Add(entry.ptr, memory);
-
- return time_nsecs;
-}
-
-static uint64_t FreeExecute(const AllocEntry& entry, Pointers* pointers) {
- if (entry.ptr == 0) {
- return 0;
- }
-
- void* memory = pointers->Remove(entry.ptr);
- uint64_t time_nsecs = Nanotime();
- free(memory);
- return Nanotime() - time_nsecs;
-}
-
-uint64_t AllocExecute(const AllocEntry& entry, Pointers* pointers) {
- switch (entry.type) {
- case MALLOC:
- return MallocExecute(entry, pointers);
- case CALLOC:
- return CallocExecute(entry, pointers);
- case REALLOC:
- return ReallocExecute(entry, pointers);
- case MEMALIGN:
- return MemalignExecute(entry, pointers);
- case FREE:
- return FreeExecute(entry, pointers);
- default:
- return 0;
- }
-}