Skip to content

Commit

Permalink
Merge pull request #49 from libvmi/event_property
Browse files Browse the repository at this point in the history
events: expose more properties
  • Loading branch information
Wenzel authored Aug 7, 2020
2 parents 15fe1f0 + d3f6040 commit 52f40b8
Showing 1 changed file with 49 additions and 5 deletions.
54 changes: 49 additions & 5 deletions libvmi/event.py
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,10 @@ def __init__(self, callback, slat_id=0, data=None):
self.generic_handle = None
self._cffi_event = ffi.new("vmi_event_t *")

@property
def vcpu_id(self):
return self._cffi_event.vcpu_id

@property
def x86_regs(self):
return self._cffi_event.x86_regs
Expand Down Expand Up @@ -132,11 +136,11 @@ def to_dict(self):
'type': self.type.name,
'slat_id': self.slat_id,
'data': self.data,
'vcpu_id': self._cffi_event.vcpu_id,
'vcpu_id': self.vcpu_id,
'x86_regs': {
'rax': hex(self._cffi_event.x86_regs.rax),
'rsp': hex(self._cffi_event.x86_regs.rsp),
'rip': hex(self._cffi_event.x86_regs.rip),
'rax': hex(self.x86_regs.rax),
'rsp': hex(self.x86_regs.rsp),
'rip': hex(self.x86_regs.rip),
}
}

Expand Down Expand Up @@ -213,12 +217,33 @@ def __init__(self, vcpus, callback, enable=True, slat_id=0, data=None):
self.vcpus |= mask
self.enable = enable

@property
def gla(self):
return self._cffi_event.ss_event.gla

@property
def gfn(self):
return self._cffi_event.ss_event.gfn

@property
def offset(self):
return self._cffi_event.ss_event.offset

def to_cffi(self):
super().to_cffi()
self._cffi_event.ss_event.vcpus = self.vcpus
self._cffi_event.ss_event.enable = int(self.enable)
return self._cffi_event

def to_dict(self):
d = super().to_dict()
d['vcpus'] = self.vcpus
d['enable'] = self.enable
d['gla'] = hex(self.gla)
d['gfn'] = hex(self.gfn)
d['offset'] = hex(self.offset)
return d


class RegEvent(Event):

Expand All @@ -241,6 +266,10 @@ def value(self):
def value(self, v):
self._cffi_event.reg_event.value = v

@property
def previous(self):
return self._cffi_event.reg_event.previous

@property
def msr(self):
return self._cffi_event.reg_event.msr
Expand All @@ -257,7 +286,7 @@ def to_dict(self):
d['in_access'] = self.in_access.name
d['out_access'] = RegAccess(self._cffi_event.reg_event.out_access).name
d['value'] = hex(self.value)
d['previous'] = hex(self._cffi_event.reg_event.previous)
d['previous'] = hex(self.previous)
d['msr'] = hex(self.msr)
return d

Expand All @@ -283,6 +312,18 @@ def reinject(self, value):
self._reinject = value
self._cffi_event.interrupt_event.reinject = self._reinject

@property
def gla(self):
return self._cffi_event.interrupt_event.gla

@property
def gfn(self):
return self._cffi_event.interrupt_event.gfn

@property
def offset(self):
return self._cffi_event.interrupt_event.offset

def to_cffi(self):
super().to_cffi()
self._cffi_event.interrupt_event.intr = self.intr.value
Expand All @@ -293,6 +334,9 @@ def to_dict(self):
d = super().to_dict()
d['intr'] = self.intr.name
d['reinject'] = self._reinject
d['gla'] = hex(self.gla)
d['gfn'] = hex(self.gfn)
d['offset'] = hex(self.offset)
return d


Expand Down

0 comments on commit 52f40b8

Please sign in to comment.