Class: Resilience::SystemTable
- Inherits:
-
Object
- Object
- Resilience::SystemTable
show all
- Includes:
- OnImage
- Defined in:
- lib/resilience/tables/system.rb
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Methods included from OnImage
#image, image, included, restore_pos, #restore_pos, store_pos, #store_pos
Constructor Details
11
12
13
|
# File 'lib/resilience/tables/system.rb', line 11
def initialize
@pages = []
end
|
Instance Attribute Details
#pages ⇒ Object
Returns the value of attribute pages.
9
10
11
|
# File 'lib/resilience/tables/system.rb', line 9
def pages
@pages
end
|
Class Method Details
.first_page_address ⇒ Object
21
22
23
|
# File 'lib/resilience/tables/system.rb', line 21
def self.first_page_address
PAGES[:first] * PAGE_SIZE
end
|
.parse ⇒ Object
15
16
17
18
19
|
# File 'lib/resilience/tables/system.rb', line 15
def self.parse
table = new
table.parse_pages
table
end
|
Instance Method Details
#parse_pages ⇒ Object
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
# 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
|