1cf1cbbe43293b05e564b9d044147efbcfbcc993eDmitriy Ivanov/* 2cf1cbbe43293b05e564b9d044147efbcfbcc993eDmitriy Ivanov * Copyright (C) 2015 The Android Open Source Project 3cf1cbbe43293b05e564b9d044147efbcfbcc993eDmitriy Ivanov * 4cf1cbbe43293b05e564b9d044147efbcfbcc993eDmitriy Ivanov * Licensed under the Apache License, Version 2.0 (the "License"); 5cf1cbbe43293b05e564b9d044147efbcfbcc993eDmitriy Ivanov * you may not use this file except in compliance with the License. 6cf1cbbe43293b05e564b9d044147efbcfbcc993eDmitriy Ivanov * You may obtain a copy of the License at 7cf1cbbe43293b05e564b9d044147efbcfbcc993eDmitriy Ivanov * 8cf1cbbe43293b05e564b9d044147efbcfbcc993eDmitriy Ivanov * http://www.apache.org/licenses/LICENSE-2.0 9cf1cbbe43293b05e564b9d044147efbcfbcc993eDmitriy Ivanov * 10cf1cbbe43293b05e564b9d044147efbcfbcc993eDmitriy Ivanov * Unless required by applicable law or agreed to in writing, software 11cf1cbbe43293b05e564b9d044147efbcfbcc993eDmitriy Ivanov * distributed under the License is distributed on an "AS IS" BASIS, 12cf1cbbe43293b05e564b9d044147efbcfbcc993eDmitriy Ivanov * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13cf1cbbe43293b05e564b9d044147efbcfbcc993eDmitriy Ivanov * See the License for the specific language governing permissions and 14cf1cbbe43293b05e564b9d044147efbcfbcc993eDmitriy Ivanov * limitations under the License. 15cf1cbbe43293b05e564b9d044147efbcfbcc993eDmitriy Ivanov */ 16cf1cbbe43293b05e564b9d044147efbcfbcc993eDmitriy Ivanov#ifndef LINKER_MAPPED_FILE_FRAGMENT_H 17cf1cbbe43293b05e564b9d044147efbcfbcc993eDmitriy Ivanov#define LINKER_MAPPED_FILE_FRAGMENT_H 18cf1cbbe43293b05e564b9d044147efbcfbcc993eDmitriy Ivanov 19cf1cbbe43293b05e564b9d044147efbcfbcc993eDmitriy Ivanov#include <unistd.h> 20cf1cbbe43293b05e564b9d044147efbcfbcc993eDmitriy Ivanov 21cf1cbbe43293b05e564b9d044147efbcfbcc993eDmitriy Ivanov#include "private/bionic_macros.h" 22cf1cbbe43293b05e564b9d044147efbcfbcc993eDmitriy Ivanov 23cf1cbbe43293b05e564b9d044147efbcfbcc993eDmitriy Ivanovclass MappedFileFragment { 24cf1cbbe43293b05e564b9d044147efbcfbcc993eDmitriy Ivanov public: 25cf1cbbe43293b05e564b9d044147efbcfbcc993eDmitriy Ivanov MappedFileFragment(); 26cf1cbbe43293b05e564b9d044147efbcfbcc993eDmitriy Ivanov ~MappedFileFragment(); 27cf1cbbe43293b05e564b9d044147efbcfbcc993eDmitriy Ivanov 28cf1cbbe43293b05e564b9d044147efbcfbcc993eDmitriy Ivanov bool Map(int fd, off64_t base_offset, size_t elf_offset, size_t size); 29cf1cbbe43293b05e564b9d044147efbcfbcc993eDmitriy Ivanov 30cf1cbbe43293b05e564b9d044147efbcfbcc993eDmitriy Ivanov void* data() const { return data_; } 31cf1cbbe43293b05e564b9d044147efbcfbcc993eDmitriy Ivanov size_t size() const { return size_; } 32cf1cbbe43293b05e564b9d044147efbcfbcc993eDmitriy Ivanov private: 33cf1cbbe43293b05e564b9d044147efbcfbcc993eDmitriy Ivanov void* map_start_; 34cf1cbbe43293b05e564b9d044147efbcfbcc993eDmitriy Ivanov size_t map_size_; 35cf1cbbe43293b05e564b9d044147efbcfbcc993eDmitriy Ivanov void* data_; 36cf1cbbe43293b05e564b9d044147efbcfbcc993eDmitriy Ivanov size_t size_; 37cf1cbbe43293b05e564b9d044147efbcfbcc993eDmitriy Ivanov 38cf1cbbe43293b05e564b9d044147efbcfbcc993eDmitriy Ivanov DISALLOW_COPY_AND_ASSIGN(MappedFileFragment); 39cf1cbbe43293b05e564b9d044147efbcfbcc993eDmitriy Ivanov}; 40cf1cbbe43293b05e564b9d044147efbcfbcc993eDmitriy Ivanov 41cf1cbbe43293b05e564b9d044147efbcfbcc993eDmitriy Ivanov#endif /* LINKER_MAPPED_FILE_FRAGMENT_H */ 42