1.1 --- a/flexpage.cc Mon Feb 01 00:10:21 2021 +0100
1.2 +++ b/flexpage.cc Mon Feb 01 01:04:30 2021 +0100
1.3 @@ -74,6 +74,12 @@
1.4 return (base_offset <= position) && (position < (base_offset + size));
1.5 }
1.6
1.7 +void Flexpage::upgrade(unsigned long flags)
1.8 +{
1.9 + if (flags && (flags != _flags))
1.10 + _flags |= flags;
1.11 +}
1.12 +
1.13 /* Return a "send" flexpage for an access to 'offset' by positioning it relative
1.14 to 'hot_spot' for the receive flexpage window. */
1.15
1.16 @@ -100,7 +106,7 @@
1.17 receive_size = size;
1.18
1.19 if (!receive_size)
1.20 - return SendFlexpage(base_addr, page_order(0));
1.21 + return SendFlexpage(base_addr, page_order(0), _flags);
1.22
1.23 offset_t receive_page_offset = hot_spot % receive_size;
1.24
1.25 @@ -116,14 +122,14 @@
1.26
1.27 offset_t adjustment = page_offset - receive_page_offset;
1.28
1.29 - return SendFlexpage(base_addr + adjustment, page_order(receive_size));
1.30 + return SendFlexpage(base_addr + adjustment, page_order(receive_size), _flags);
1.31 }
1.32
1.33 /* Return a representation of the flexpage for unmapping. */
1.34
1.35 SendFlexpage Flexpage::to_unmap()
1.36 {
1.37 - return SendFlexpage(base_addr, page_order(size));
1.38 + return SendFlexpage(base_addr, page_order(size), _flags);
1.39 }
1.40
1.41 /* Debugging methods. */