1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
# This file packages all events into a binary file, which will be a part of the
# catalog file.
from struct import *
import csv
from common import *
def event_pack(event):
header = pack(">HBxHHHIHH", event['formula_index'], event['domain'],
event['record_byte_offset'], event['record_length'],
event['counter_offset'], event['flag'],
event['primary_group_index'], event['group_count'])
e = header + pack_text(event['name']) + pack_text(event['description'])
e += pack_text(event['detailed_description'])
return pad16(e)
def pack_events(events_csv):
events = ""
with open(events_csv) as csvfile:
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)
if core_offset == -1 and int(row['domain']) == 2:
core_offset = len(events)
if pmu_offset == -1 and int(row['domain']) == 3:
pmu_offset = len(events)
count += 1
if row['formula index'] == "-1":
event['formula_index'] = 0xffff
else:
event['formula_index'] = int(row['formula index'])
event['domain'] = int(row['domain'])
event['record_byte_offset'] = int(row['record byte offset'])
event['record_length'] = int(row['record length'])
event['counter_offset'] = int(row['counter offset'])
event['flag'] = int(row['flag'])
event['primary_group_index'] = int(row['primary group index'])
event['group_count'] = int(row['group count'])
event['name'] = row['name']
event['description'] = row['description']
event['detailed_description'] = row['detailed description']
events += event_pack(event)
return pad_page(events, PAGE_SIZE), count, (chip_offset, core_offset, pmu_offset)
if __name__ == "__main__":
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)
|