1.1 --- a/libfsserver/include/fsserver/pager.h Fri May 20 00:40:27 2022 +0200
1.2 +++ b/libfsserver/include/fsserver/pager.h Fri May 20 22:54:36 2022 +0200
1.3 @@ -1,7 +1,7 @@
1.4 /*
1.5 * Generic pager functionality.
1.6 *
1.7 - * Copyright (C) 2021 Paul Boddie <paul@boddie.org.uk>
1.8 + * Copyright (C) 2021, 2022 Paul Boddie <paul@boddie.org.uk>
1.9 *
1.10 * This program is free software; you can redistribute it and/or
1.11 * modify it under the terms of the GNU General Public License as
1.12 @@ -25,6 +25,7 @@
1.13
1.14 #include <fsserver/page_mapper.h>
1.15 #include <fsserver/resource.h>
1.16 +#include <mem/memory_incremental.h>
1.17
1.18
1.19
1.20 @@ -37,6 +38,20 @@
1.21 PageMapper *_mapper;
1.22 map_flags_t _flags;
1.23
1.24 + /* Masked region support. */
1.25 +
1.26 + bool _is_masked;
1.27 + offset_t _start_visible, _end_visible;
1.28 + Flexpage _start_flexpage, _end_flexpage, _zero_flexpage;
1.29 + MemoryIncremental _memory;
1.30 +
1.31 + Flexpage *get_masked_flexpage(Flexpage *flexpage);
1.32 +
1.33 + void allocate_region(Flexpage *flexpage, Flexpage &masked);
1.34 +
1.35 + void populate_region(Flexpage *flexpage, Flexpage &masked,
1.36 + bool has_start, bool has_end);
1.37 +
1.38 public:
1.39 explicit Pager(PageMapper *mapper, map_flags_t flags);
1.40
1.41 @@ -59,8 +74,8 @@
1.42
1.43 /* Mapped file methods. */
1.44
1.45 - virtual long mmap(offset_t position, offset_t length, offset_t *start_pos,
1.46 - offset_t *end_pos, offset_t *size);
1.47 + virtual long mmap(offset_t position, offset_t length, int masked,
1.48 + offset_t *start_pos, offset_t *end_pos, offset_t *size);
1.49 };
1.50
1.51 // vim: tabstop=4 expandtab shiftwidth=4