def each_page_status
unless block_given?
return enum_for(:each_page_status)
end
bitmap = @bitmap.enum_for(:each_byte)
bitmap.each_with_index do |byte, byte_index|
(0..1).each do |page_offset|
page_number = (byte_index * 2) + page_offset
page_bits = ((byte >> (page_offset * BITS_PER_PAGE)) & BITMAP_BV_ALL)
page_status = {
:free => (page_bits & BITMAP_BV_FREE),
:buffered => (page_bits & BITMAP_BV_BUFFERED != 0),
:ibuf => (page_bits & BITMAP_BV_IBUF != 0),
}
yield page_number, page_status
end
end
end