1.1 --- a/pages.cc Sun Mar 28 22:41:12 2021 +0200
1.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
1.3 @@ -1,73 +0,0 @@
1.4 -#include "memory_incremental.h"
1.5 -#include "pages.h"
1.6 -
1.7 -
1.8 -
1.9 -Pages::Pages(Memory *memory, PageQueue *queue)
1.10 -: _memory(memory), _queue(queue)
1.11 -{
1.12 -}
1.13 -
1.14 -Pages::Pages(PageQueue *queue)
1.15 -: _queue(queue)
1.16 -{
1.17 - _memory = new MemoryIncremental();
1.18 -}
1.19 -
1.20 -Pages::~Pages()
1.21 -{
1.22 - _queue->close(_memory);
1.23 -}
1.24 -
1.25 -/* Remove the first flexpage in the queue. If its owner exists, remove it from
1.26 - the owner (retiring the content). Return the flexpage for reuse. */
1.27 -
1.28 -Flexpage *Pages::remove()
1.29 -{
1.30 - PageOwner *owner;
1.31 - Flexpage *flexpage;
1.32 -
1.33 - _queue->pop(&owner, &flexpage);
1.34 -
1.35 - if (owner != NULL)
1.36 - owner->remove(flexpage);
1.37 -
1.38 - return flexpage;
1.39 -}
1.40 -
1.41 -/* Reserve 'flexpage' by removing it from this collection. */
1.42 -
1.43 -bool Pages::reserve(PageOwner *owner, Flexpage *flexpage)
1.44 -{
1.45 - return _queue->remove(owner, flexpage);
1.46 -}
1.47 -
1.48 -/* Obtain a new flexpage. Return the flexpage or None if no new flexpage could
1.49 - be created. */
1.50 -
1.51 -Flexpage *Pages::flexpage()
1.52 -{
1.53 - Region *region = _memory->region();
1.54 -
1.55 - if (region != NULL)
1.56 - return new Flexpage(region);
1.57 - else
1.58 - return NULL;
1.59 -}
1.60 -
1.61 -/* Queue an entry associating the given 'owner' and 'flexpage'. */
1.62 -
1.63 -void Pages::queue(PageOwner *owner, Flexpage *flexpage)
1.64 -{
1.65 - _queue->push(owner, flexpage);
1.66 -}
1.67 -
1.68 -/* Push an entry for 'flexpage' without owner association for immediate
1.69 - reuse. */
1.70 -
1.71 -void Pages::release(Flexpage *flexpage)
1.72 -{
1.73 - _queue->push_front(NULL, flexpage);
1.74 -}
1.75 -
1.76 -// vim: tabstop=4 expandtab shiftwidth=4