1.1 --- a/mapping/flexpage.cc Sun Apr 04 01:19:22 2021 +0200
1.2 +++ b/mapping/flexpage.cc Tue Apr 06 00:14:00 2021 +0200
1.3 @@ -73,6 +73,10 @@
1.4 return (base_offset <= position) && (position < (base_offset + size));
1.5 }
1.6
1.7 +/* Upgrade the flags involved with this flexpage. This is used to track the
1.8 + maximal flags employed by the different pagers, with the result being used in
1.9 + unmap operations. */
1.10 +
1.11 void Flexpage::upgrade(flags_t flags)
1.12 {
1.13 if (flags && (flags != _flags))
1.14 @@ -82,7 +86,8 @@
1.15 /* Return a "send" flexpage for an access to 'offset' by positioning it relative
1.16 to 'hot_spot' for the receive flexpage window. */
1.17
1.18 -SendFlexpage Flexpage::to_send(offset_t offset, offset_t hot_spot, offset_t max_offset)
1.19 +SendFlexpage Flexpage::to_send(offset_t offset, offset_t hot_spot,
1.20 + flags_t flags, offset_t max_offset)
1.21 {
1.22 /* The dataspace offset of the flexpage base is a multiple of the flexpage
1.23 size. */
1.24 @@ -108,7 +113,7 @@
1.25 receive_size = size;
1.26
1.27 if (!receive_size)
1.28 - return SendFlexpage(base_addr, page_order(0), _flags);
1.29 + return SendFlexpage(base_addr, page_order(0), flags);
1.30
1.31 offset_t receive_page_offset = hot_spot % receive_size;
1.32
1.33 @@ -124,7 +129,7 @@
1.34
1.35 offset_t adjustment = page_offset - receive_page_offset;
1.36
1.37 - return SendFlexpage(base_addr + adjustment, page_order(receive_size), _flags);
1.38 + return SendFlexpage(base_addr + adjustment, page_order(receive_size), flags);
1.39 }
1.40
1.41 /* Return a representation of the flexpage for unmapping. */