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