1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/memory/region.h Mon Mar 29 00:56:08 2021 +0200
1.3 @@ -0,0 +1,59 @@
1.4 +#pragma once
1.5 +
1.6 +#include <systypes/base.h>
1.7 +
1.8 +#include "types.h"
1.9 +
1.10 +
1.11 +
1.12 +/* Region-related state information. */
1.13 +
1.14 +class RegionState
1.15 +{
1.16 +public:
1.17 + unsigned long size;
1.18 + fileid_t fileid;
1.19 + offset_t filepos;
1.20 +
1.21 + explicit RegionState(unsigned long size=0, fileid_t fileid=0, offset_t filepos=0);
1.22 +
1.23 + void fill(fileid_t fileid, offset_t filepos);
1.24 +
1.25 + bool valid() { return size != 0; }
1.26 +};
1.27 +
1.28 +
1.29 +
1.30 +/* A memory region abstraction. */
1.31 +
1.32 +class Region
1.33 +{
1.34 +public:
1.35 + offset_t start, end;
1.36 +
1.37 + /* Debugging information. */
1.38 +
1.39 + RegionState state;
1.40 +
1.41 + /* Methods. */
1.42 +
1.43 + explicit Region(offset_t start, offset_t end);
1.44 +
1.45 + virtual ~Region();
1.46 +
1.47 + offset_t size();
1.48 +
1.49 + int compare(Region *other);
1.50 +
1.51 + void fill(fileid_t fileid, offset_t filepos);
1.52 +
1.53 + void flush();
1.54 +
1.55 + /* Simulation methods. */
1.56 +
1.57 + char *read(offset_t offset=0);
1.58 +
1.59 + void write(const char *data, offset_t offset=0);
1.60 +};
1.61 +
1.62 +// vim: tabstop=4 expandtab shiftwidth=4