# HG changeset patch # User Paul Boddie # Date 1621375099 -7200 # Node ID 8deb4323f6122a15f68209cf610cd5ac3b511704 # Parent 1463eae1b2df1789c5c912a21773ba872357fd90 Introduced a method for common functionality. diff -r 1463eae1b2df -r 8deb4323f612 libfsserver/include/fsserver/pipe_paging.h --- a/libfsserver/include/fsserver/pipe_paging.h Tue May 18 00:55:20 2021 +0200 +++ b/libfsserver/include/fsserver/pipe_paging.h Tue May 18 23:58:19 2021 +0200 @@ -58,6 +58,10 @@ l4_cap_idx_t _irqs[2]; + /* Common functionality. */ + + virtual void discard_region(unsigned int i); + public: explicit PipePaging(Memory *memory, offset_t size); diff -r 1463eae1b2df -r 8deb4323f612 libfsserver/lib/pipes/pipe_paging.cc --- a/libfsserver/lib/pipes/pipe_paging.cc Tue May 18 00:55:20 2021 +0200 +++ b/libfsserver/lib/pipes/pipe_paging.cc Tue May 18 23:58:19 2021 +0200 @@ -95,6 +95,18 @@ return _endpoints < 2; } +void PipePaging::discard_region(unsigned int i) +{ + PageMapper *mapper = _regions[i]; + + if (mapper != NULL) + { + mapper->detach(); + _regions[i] = NULL; + delete mapper; + } +} + /* Detach one endpoint. */ void PipePaging::detach() @@ -112,16 +124,7 @@ /* Discard all regions from the pipe. */ for (unsigned int i = 0; i < 2; i++) - { - PageMapper *mapper = _regions[i]; - - if (mapper != NULL) - { - mapper->detach(); - _regions[i] = NULL; - delete mapper; - } - } + discard_region(i); /* Release IRQs. */ @@ -195,14 +198,7 @@ /* Detach and discard the current page mapper. */ - PageMapper *mapper = _regions[_reading]; - - if (mapper != NULL) - { - mapper->detach(); - _regions[_reading] = NULL; - delete mapper; - } + discard_region(_reading); /* Select the next region. */