cachepc-qemu

Fork of AMDESE/qemu with changes for cachepc side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-qemu
Log | Files | Refs | Submodules | LICENSE | sfeed.txt

timings.py (1519B)


      1#
      2# Migration test timing records
      3#
      4# Copyright (c) 2016 Red Hat, Inc.
      5#
      6# This library is free software; you can redistribute it and/or
      7# modify it under the terms of the GNU Lesser General Public
      8# License as published by the Free Software Foundation; either
      9# version 2.1 of the License, or (at your option) any later version.
     10#
     11# This library is distributed in the hope that it will be useful,
     12# but WITHOUT ANY WARRANTY; without even the implied warranty of
     13# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     14# Lesser General Public License for more details.
     15#
     16# You should have received a copy of the GNU Lesser General Public
     17# License along with this library; if not, see <http://www.gnu.org/licenses/>.
     18#
     19
     20
     21class TimingRecord(object):
     22
     23    def __init__(self, tid, timestamp, value):
     24
     25        self._tid = tid
     26        self._timestamp = timestamp
     27        self._value = value
     28
     29    def serialize(self):
     30        return {
     31            "tid": self._tid,
     32            "timestamp": self._timestamp,
     33            "value": self._value
     34        }
     35
     36    @classmethod
     37    def deserialize(cls, data):
     38        return cls(
     39            data["tid"],
     40            data["timestamp"],
     41            data["value"])
     42
     43
     44class Timings(object):
     45
     46    def __init__(self, records):
     47
     48        self._records = records
     49
     50    def serialize(self):
     51        return [record.serialize() for record in self._records]
     52
     53    @classmethod
     54    def deserialize(cls, data):
     55        return Timings([TimingRecord.deserialize(record) for record in data])