1fd44b9f8d89ce4f33ff39d7f340a5ed08029d21cTom Cherry/* 2fd44b9f8d89ce4f33ff39d7f340a5ed08029d21cTom Cherry * Copyright (C) 2008 The Android Open Source Project 3fd44b9f8d89ce4f33ff39d7f340a5ed08029d21cTom Cherry * All rights reserved. 4fd44b9f8d89ce4f33ff39d7f340a5ed08029d21cTom Cherry * 5fd44b9f8d89ce4f33ff39d7f340a5ed08029d21cTom Cherry * Redistribution and use in source and binary forms, with or without 6fd44b9f8d89ce4f33ff39d7f340a5ed08029d21cTom Cherry * modification, are permitted provided that the following conditions 7fd44b9f8d89ce4f33ff39d7f340a5ed08029d21cTom Cherry * are met: 8fd44b9f8d89ce4f33ff39d7f340a5ed08029d21cTom Cherry * * Redistributions of source code must retain the above copyright 9fd44b9f8d89ce4f33ff39d7f340a5ed08029d21cTom Cherry * notice, this list of conditions and the following disclaimer. 10fd44b9f8d89ce4f33ff39d7f340a5ed08029d21cTom Cherry * * Redistributions in binary form must reproduce the above copyright 11fd44b9f8d89ce4f33ff39d7f340a5ed08029d21cTom Cherry * notice, this list of conditions and the following disclaimer in 12fd44b9f8d89ce4f33ff39d7f340a5ed08029d21cTom Cherry * the documentation and/or other materials provided with the 13fd44b9f8d89ce4f33ff39d7f340a5ed08029d21cTom Cherry * distribution. 14fd44b9f8d89ce4f33ff39d7f340a5ed08029d21cTom Cherry * 15fd44b9f8d89ce4f33ff39d7f340a5ed08029d21cTom Cherry * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 16fd44b9f8d89ce4f33ff39d7f340a5ed08029d21cTom Cherry * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 17fd44b9f8d89ce4f33ff39d7f340a5ed08029d21cTom Cherry * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 18fd44b9f8d89ce4f33ff39d7f340a5ed08029d21cTom Cherry * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 19fd44b9f8d89ce4f33ff39d7f340a5ed08029d21cTom Cherry * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 20fd44b9f8d89ce4f33ff39d7f340a5ed08029d21cTom Cherry * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 21fd44b9f8d89ce4f33ff39d7f340a5ed08029d21cTom Cherry * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS 22fd44b9f8d89ce4f33ff39d7f340a5ed08029d21cTom Cherry * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 23fd44b9f8d89ce4f33ff39d7f340a5ed08029d21cTom Cherry * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 24fd44b9f8d89ce4f33ff39d7f340a5ed08029d21cTom Cherry * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT 25fd44b9f8d89ce4f33ff39d7f340a5ed08029d21cTom Cherry * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 26fd44b9f8d89ce4f33ff39d7f340a5ed08029d21cTom Cherry * SUCH DAMAGE. 27fd44b9f8d89ce4f33ff39d7f340a5ed08029d21cTom Cherry */ 28fd44b9f8d89ce4f33ff39d7f340a5ed08029d21cTom Cherry 29cbc80ba9d839675a0c4891e2ab33f39ba51b04b2Elliott Hughes#pragma once 30fd44b9f8d89ce4f33ff39d7f340a5ed08029d21cTom Cherry 31fd44b9f8d89ce4f33ff39d7f340a5ed08029d21cTom Cherry#include "contexts.h" 32fd44b9f8d89ce4f33ff39d7f340a5ed08029d21cTom Cherry#include "prop_area.h" 33fd44b9f8d89ce4f33ff39d7f340a5ed08029d21cTom Cherry#include "prop_info.h" 34fd44b9f8d89ce4f33ff39d7f340a5ed08029d21cTom Cherry 35fd44b9f8d89ce4f33ff39d7f340a5ed08029d21cTom Cherryclass ContextsPreSplit : public Contexts { 36fd44b9f8d89ce4f33ff39d7f340a5ed08029d21cTom Cherry public: 37fd44b9f8d89ce4f33ff39d7f340a5ed08029d21cTom Cherry virtual ~ContextsPreSplit() override { 38fd44b9f8d89ce4f33ff39d7f340a5ed08029d21cTom Cherry } 39fd44b9f8d89ce4f33ff39d7f340a5ed08029d21cTom Cherry 40fd44b9f8d89ce4f33ff39d7f340a5ed08029d21cTom Cherry // We'll never initialize this legacy option as writable, so don't even check the arg. 41e275d6d72db1868056a204e8483a7346a28cb8d6Tom Cherry virtual bool Initialize(bool, const char* filename, bool*) override { 42e275d6d72db1868056a204e8483a7346a28cb8d6Tom Cherry pre_split_prop_area_ = prop_area::map_prop_area(filename); 43f76bbf5384c0504b165168f51ccadfb605ccb2afTom Cherry return pre_split_prop_area_ != nullptr; 44fd44b9f8d89ce4f33ff39d7f340a5ed08029d21cTom Cherry } 45fd44b9f8d89ce4f33ff39d7f340a5ed08029d21cTom Cherry 46fd44b9f8d89ce4f33ff39d7f340a5ed08029d21cTom Cherry virtual prop_area* GetPropAreaForName(const char*) override { 47f76bbf5384c0504b165168f51ccadfb605ccb2afTom Cherry return pre_split_prop_area_; 48f76bbf5384c0504b165168f51ccadfb605ccb2afTom Cherry } 49f76bbf5384c0504b165168f51ccadfb605ccb2afTom Cherry 50f76bbf5384c0504b165168f51ccadfb605ccb2afTom Cherry virtual prop_area* GetSerialPropArea() override { 51f76bbf5384c0504b165168f51ccadfb605ccb2afTom Cherry return pre_split_prop_area_; 52fd44b9f8d89ce4f33ff39d7f340a5ed08029d21cTom Cherry } 53fd44b9f8d89ce4f33ff39d7f340a5ed08029d21cTom Cherry 54fd44b9f8d89ce4f33ff39d7f340a5ed08029d21cTom Cherry virtual void ForEach(void (*propfn)(const prop_info* pi, void* cookie), void* cookie) override { 55f76bbf5384c0504b165168f51ccadfb605ccb2afTom Cherry pre_split_prop_area_->foreach (propfn, cookie); 56fd44b9f8d89ce4f33ff39d7f340a5ed08029d21cTom Cherry } 57fd44b9f8d89ce4f33ff39d7f340a5ed08029d21cTom Cherry 58fd44b9f8d89ce4f33ff39d7f340a5ed08029d21cTom Cherry // This is a no-op for pre-split properties as there is only one property file and it is 59fd44b9f8d89ce4f33ff39d7f340a5ed08029d21cTom Cherry // accessible by all domains 60fd44b9f8d89ce4f33ff39d7f340a5ed08029d21cTom Cherry virtual void ResetAccess() override { 61fd44b9f8d89ce4f33ff39d7f340a5ed08029d21cTom Cherry } 62fd44b9f8d89ce4f33ff39d7f340a5ed08029d21cTom Cherry 63fd44b9f8d89ce4f33ff39d7f340a5ed08029d21cTom Cherry virtual void FreeAndUnmap() override { 64f76bbf5384c0504b165168f51ccadfb605ccb2afTom Cherry prop_area::unmap_prop_area(&pre_split_prop_area_); 65fd44b9f8d89ce4f33ff39d7f340a5ed08029d21cTom Cherry } 66f76bbf5384c0504b165168f51ccadfb605ccb2afTom Cherry 67f76bbf5384c0504b165168f51ccadfb605ccb2afTom Cherry private: 68f76bbf5384c0504b165168f51ccadfb605ccb2afTom Cherry prop_area* pre_split_prop_area_ = nullptr; 69fd44b9f8d89ce4f33ff39d7f340a5ed08029d21cTom Cherry}; 70