| // Copyright (c) 2012 The Chromium OS Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "nvram.h" |
| |
| namespace tpmd { |
| |
| class VolatileNvram : public Nvram { |
| public: |
| VolatileNvram(); |
| virtual ~VolatileNvram(); |
| virtual bool Allocate(uint32_t slot, size_t len, uint32_t flags); |
| virtual bool Free(uint32_t slot); |
| virtual bool Write(uint32_t slot, const Bytes& bytes); |
| virtual bool Read(uint32_t slot, Bytes* bytes); |
| virtual bool is_defined(uint32_t slot); |
| virtual bool is_locked(uint32_t slot); |
| virtual size_t size(uint32_t slot); |
| virtual size_t num_slots(); |
| |
| private: |
| static const unsigned int MAX_SLOTS = 16; |
| static const unsigned int NVRAM_BASE = 0x20000000; |
| |
| struct BackingSlot { |
| bool lockonce_; |
| bool locked_; |
| bool defined_; |
| Bytes bytes_; |
| }; |
| |
| struct BackingSlot slots_[MAX_SLOTS]; |
| }; |
| |
| } // namespace tpmd |