diff options
| author | Santosh Sivaraj <santosiv@in.ibm.com> | 2015-05-01 08:35:37 +0530 |
|---|---|---|
| committer | Santosh Sivaraj <santosiv@in.ibm.com> | 2016-11-09 19:42:34 +0530 |
| commit | c81a49ad908ed7ca727d06b45c951aafba2ea6de (patch) | |
| tree | 7c59ccaa1d026218070949868ea46157bf227279 | |
| parent | 3b21283808f3cf6685c01f754fd1d270a06e6d7d (diff) | |
| download | ima-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.py | 13 | ||||
| -rw-r--r-- | catalog/events.py | 21 | ||||
| -rw-r--r-- | catalog/groups.py | 17 |
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" |

