1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
|
#ifndef DOSBOX_REGIONALLOCTRACKING_H
#define DOSBOX_REGIONALLOCTRACKING_H
/* rombios memory block */
class RegionAllocTracking {
public:
class Block {
public:
Block();
public:
std::string who;
Bitu start; /* start-end of the block inclusive */
Bitu end;
bool free;
bool fixed;
};
public:
RegionAllocTracking();
public:
void setMaxDynamicAllocationAddress(Bitu _new_max);
Bitu getMemory(Bitu bytes,const char *who,Bitu alignment,Bitu must_be_at);
void initSetRange(Bitu start,Bitu end);
Bitu freeUnusedMinToLoc(Bitu phys);
bool freeMemory(Bitu offset);
Bitu getMinAddress();
void compactFree();
void sanityCheck();
void logDump();
public:
std::string name;
std::vector<Block> alist;
Bitu _min,_max;
Bitu _max_nonfixed; /* above this address, only permit fixed memory allocation */
bool topDownAlloc;
public:
static const Bitu alloc_failed = ~((Bitu)0);
};
#endif /* DOSBOX_REGIONALLOCTRACKING_H */
|