class Resilience::SystemTable

Attributes

pages[RW]

Public Class Methods

first_page_address() click to toggle source
# File lib/resilience/tables/system.rb, line 21
def self.first_page_address
  PAGES[:first] * PAGE_SIZE
end
new() click to toggle source
# File lib/resilience/tables/system.rb, line 11
def initialize
  @pages = []
end
parse() click to toggle source
# File lib/resilience/tables/system.rb, line 15
def self.parse
  table = new
  table.parse_pages
  table
end

Public Instance Methods

parse_pages() click to toggle source
# File lib/resilience/tables/system.rb, line 25
def parse_pages
  image.seek(self.class.first_page_address + ADDRESSES[:system_table_page])
  system_table_page    = image.read(8).unpack('Q').first
  system_table_address = system_table_page * PAGE_SIZE 

  image.seek(system_table_address + ADDRESSES[:system_pages])
  num_system_pages = image.read(4).unpack('L').first

  0.upto(num_system_pages-1) do
    system_page_offset = image.read(4).unpack('L').first
    pos = image.pos

    image.seek(system_table_address + system_page_offset)
    system_page = image.read(8).unpack('Q').first
    @pages << system_page

    image.seek(pos)
  end
end