1.1 --- a/libmem/include/mem/region.h Sat May 01 22:37:16 2021 +0200
1.2 +++ b/libmem/include/mem/region.h Sat May 01 23:51:28 2021 +0200
1.3 @@ -32,15 +32,14 @@
1.4 class RegionState
1.5 {
1.6 public:
1.7 - unsigned long size;
1.8 fileid_t fileid;
1.9 offset_t filepos;
1.10
1.11 - explicit RegionState(unsigned long size=0, fileid_t fileid=0, offset_t filepos=0);
1.12 + explicit RegionState(fileid_t fileid=0, offset_t filepos=0);
1.13
1.14 void fill(fileid_t fileid, offset_t filepos);
1.15
1.16 - bool valid() { return size != 0; }
1.17 + void flush();
1.18 };
1.19
1.20
2.1 --- a/libmem/lib/src/region.cc Sat May 01 22:37:16 2021 +0200
2.2 +++ b/libmem/lib/src/region.cc Sat May 01 23:51:28 2021 +0200
2.3 @@ -28,8 +28,8 @@
2.4
2.5 /* Initialise region state, indicating the size, file and position. */
2.6
2.7 -RegionState::RegionState(unsigned long size, fileid_t fileid, offset_t filepos)
2.8 -: size(size), fileid(fileid), filepos(filepos)
2.9 +RegionState::RegionState(fileid_t fileid, offset_t filepos)
2.10 +: fileid(fileid), filepos(filepos)
2.11 {
2.12 }
2.13
2.14 @@ -39,6 +39,12 @@
2.15 this->filepos = filepos;
2.16 }
2.17
2.18 +void RegionState::flush()
2.19 +{
2.20 + fileid = FILEID_INVALID;
2.21 + filepos = 0;
2.22 +}
2.23 +
2.24
2.25
2.26 /* Initialise a region having the given 'start' and 'end' addresses, with the
2.27 @@ -52,11 +58,15 @@
2.28 memset((void *) start, 0, end - start);
2.29 }
2.30
2.31 +/* Deallocate the region, freeing its memory. */
2.32 +
2.33 Region::~Region()
2.34 {
2.35 free((void *) start);
2.36 }
2.37
2.38 +/* Return the size of the region. */
2.39 +
2.40 offset_t Region::size()
2.41 {
2.42 return end - start;
2.43 @@ -74,13 +84,18 @@
2.44 return 0;
2.45 }
2.46
2.47 +/* Tag the region with file identifier and position details. */
2.48 +
2.49 void Region::fill(fileid_t fileid, offset_t filepos)
2.50 {
2.51 state.fill(fileid, filepos);
2.52 }
2.53
2.54 +/* Remove the file details from the region state. */
2.55 +
2.56 void Region::flush()
2.57 {
2.58 + state.flush();
2.59 }
2.60
2.61 /* Simulation methods. */