diff --git a/libvmi/events_cdef.h b/libvmi/events_cdef.h index 12ecab1..b7000ff 100644 --- a/libvmi/events_cdef.h +++ b/libvmi/events_cdef.h @@ -215,6 +215,12 @@ struct vmi_event { status_t vmi_register_event( vmi_instance_t vmi, vmi_event_t *event); + +status_t vmi_set_mem_event( + vmi_instance_t vmi, + addr_t gfn, + vmi_mem_access_t access, + uint16_t slat_id); status_t vmi_events_listen( vmi_instance_t vmi, diff --git a/libvmi/libvmi.py b/libvmi/libvmi.py index ab20887..cfeb238 100644 --- a/libvmi/libvmi.py +++ b/libvmi/libvmi.py @@ -983,6 +983,10 @@ def register_event(self, event): status = lib.vmi_register_event(self.vmi, cffi_event) check(status) + def set_mem_event(self, gfn, access, slatid): + status = lib.vmi_set_mem_event(self.vmi, gfn, access, slatid) + check(status) + def clear_event(self, event): cffi_event = event.to_cffi() status = lib.vmi_clear_event(self.vmi, cffi_event, ffi.NULL) @@ -1017,6 +1021,11 @@ def get_va_pages(self, dtb): return va_pages # slat + def slat_control(self, state): + state = ffi.new("bool *") + status = lib.vmi_slat_control(self.vmi, state) + check(status) + def slat_get_domain_state(self): state = ffi.new("bool *") status = lib.vmi_slat_get_domain_state(self.vmi, state) diff --git a/libvmi/slat_cdef.h b/libvmi/slat_cdef.h index 0f78888..97ad4aa 100644 --- a/libvmi/slat_cdef.h +++ b/libvmi/slat_cdef.h @@ -23,3 +23,7 @@ status_t vmi_slat_change_gfn ( uint16_t slat_idx, addr_t old_gfn, addr_t new_gfn); + +status_t vmi_slat_control ( + vmi_instance_t vmi, + bool *state); \ No newline at end of file