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 "prop_area.h"
32fd44b9f8d89ce4f33ff39d7f340a5ed08029d21cTom Cherry#include "prop_info.h"
33fd44b9f8d89ce4f33ff39d7f340a5ed08029d21cTom Cherry
34fd44b9f8d89ce4f33ff39d7f340a5ed08029d21cTom Cherryclass Contexts {
35fd44b9f8d89ce4f33ff39d7f340a5ed08029d21cTom Cherry public:
36fd44b9f8d89ce4f33ff39d7f340a5ed08029d21cTom Cherry  virtual ~Contexts() {
37fd44b9f8d89ce4f33ff39d7f340a5ed08029d21cTom Cherry  }
38fd44b9f8d89ce4f33ff39d7f340a5ed08029d21cTom Cherry
39e275d6d72db1868056a204e8483a7346a28cb8d6Tom Cherry  virtual bool Initialize(bool writable, const char* filename, bool* fsetxattr_failed) = 0;
40fd44b9f8d89ce4f33ff39d7f340a5ed08029d21cTom Cherry  virtual prop_area* GetPropAreaForName(const char* name) = 0;
41f76bbf5384c0504b165168f51ccadfb605ccb2afTom Cherry  virtual prop_area* GetSerialPropArea() = 0;
42fd44b9f8d89ce4f33ff39d7f340a5ed08029d21cTom Cherry  virtual void ForEach(void (*propfn)(const prop_info* pi, void* cookie), void* cookie) = 0;
43fd44b9f8d89ce4f33ff39d7f340a5ed08029d21cTom Cherry  virtual void ResetAccess() = 0;
44fd44b9f8d89ce4f33ff39d7f340a5ed08029d21cTom Cherry  virtual void FreeAndUnmap() = 0;
45fd44b9f8d89ce4f33ff39d7f340a5ed08029d21cTom Cherry};
46