summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSantosh Sivaraj <santosiv@in.ibm.com>2015-05-01 08:35:37 +0530
committerSantosh Sivaraj <santosiv@in.ibm.com>2016-11-09 19:42:34 +0530
commitc81a49ad908ed7ca727d06b45c951aafba2ea6de (patch)
tree7c59ccaa1d026218070949868ea46157bf227279
parent3b21283808f3cf6685c01f754fd1d270a06e6d7d (diff)
downloadima-catalog-c81a49ad908ed7ca727d06b45c951aafba2ea6de.tar.gz
ima-catalog-c81a49ad908ed7ca727d06b45c951aafba2ea6de.zip
Add offsets to individual groups in the header
Signed-off-by: Santosh Sivaraj <santosiv@in.ibm.com>
-rw-r--r--catalog/catalog.py13
-rw-r--r--catalog/events.py21
-rw-r--r--catalog/groups.py17
3 files changed, 44 insertions, 7 deletions
diff --git a/catalog/catalog.py b/catalog/catalog.py
index be20a24..cb5e9aa 100644
--- a/catalog/catalog.py
+++ b/catalog/catalog.py
@@ -16,8 +16,8 @@ def dump_schema(cat_file):
return s
def create_catalog(version, old_lid):
- events, enum = pack_events('events.csv')
- groups, gnum = pack_groups('groups.csv')
+ events, enum, event_offsets = pack_events('events.csv')
+ groups, gnum, group_offsets = pack_groups('groups.csv')
formulae, fnum = pack_formulae('formulae.csv')
# we will not create the schema now, will extract the schema from the
# existing catalog file.
@@ -37,6 +37,15 @@ def create_catalog(version, old_lid):
1, 1, 4, events_offset, events_length, enum,
groups_offset, groups_length, gnum, formulae_offset,
formulae_length, fnum)
+ core_event_offset = event_offsets[1]
+ chip_event_offset = event_offsets[0]
+ pmu_event_offset = event_offsets[2]
+ core_group_offset = group_offsets[1]
+ chip_group_offset = group_offsets[0]
+ pmu_group_offset = 0xffffffff # invalid - we don't have pmu groups
+ header += struct.pack(">IIIIII8x", core_event_offset, pmu_event_offset,
+ chip_event_offset, core_group_offset,
+ pmu_group_offset, chip_group_offset)
return pad_page(header, PAGE_SIZE) + schema + events + groups + formulae
diff --git a/catalog/events.py b/catalog/events.py
index e1c6816..763cdb3 100644
--- a/catalog/events.py
+++ b/catalog/events.py
@@ -22,7 +22,22 @@ def pack_events(events_csv):
reader = csv.DictReader(csvfile)
event = {}
count = 0
+ core_offset = -1
+ chip_offset = -1
+ pmu_offset = -1
for row in reader:
+ if chip_offset == -1 and int(row['domain']) == 1:
+ chip_offset = len(events)
+ print chip_offset
+
+ if core_offset == -1 and int(row['domain']) == 2:
+ core_offset = len(events)
+ print core_offset
+
+ if pmu_offset == -1 and int(row['domain']) == 3:
+ pmu_offset = len(events)
+ print pmu_offset
+
count += 1
event['domain'] = int(row['domain'])
event['record_byte_offset'] = int(row['record byte offset'])
@@ -37,14 +52,14 @@ def pack_events(events_csv):
events += event_pack(event)
- return pad_page(events, PAGE_SIZE), count
+ return pad_page(events, PAGE_SIZE), count, (chip_offset, core_offset, pmu_offset)
if __name__ == "__main__":
- events = pack_events('events.csv')
+ events, count, offsets = pack_events('events.csv')
if len(events) == 0:
print "Error in generating events binary dump"
f = open('events.bin', 'w')
f.write(events)
f.close()
- hexdump(events, " ", 16)
+# hexdump(events, " ", 16)
diff --git a/catalog/groups.py b/catalog/groups.py
index 7818733..909e82f 100644
--- a/catalog/groups.py
+++ b/catalog/groups.py
@@ -19,7 +19,20 @@ def pack_groups(groups_csv):
reader = csv.DictReader(csvfile)
group = {}
count = 0
+ core_offset = -1
+ chip_offset = -1
+ pmu_offset = -1
+
for row in reader:
+ if chip_offset == -1 and int(row['domain']) == 1:
+ chip_offset = len(groups)
+
+ if core_offset == -1 and int(row['domain']) == 2:
+ core_offset = len(groups)
+
+ if pmu_offset == -1 and int(row['domain']) == 3:
+ pmu_offset = len(groups)
+
count += 1
group['flag'] = int(row['flag'])
group['domain'] = int(row['domain'])
@@ -33,10 +46,10 @@ def pack_groups(groups_csv):
groups += group_pack(group)
- return pad_page(groups, PAGE_SIZE), count
+ return pad_page(groups, PAGE_SIZE), count, (chip_offset, core_offset, pmu_offset)
if __name__ == "__main__":
- groups = pack_groups('groups.csv')
+ groups, count, offsets = pack_groups('groups.csv')
if len(groups) == 0:
print "Error in generating groups binary dump"
OpenPOWER on IntegriCloud