From ca9ac02d6e1d0a2b69475b0f9e7aa8d6ba23079f Mon Sep 17 00:00:00 2001 From: K <12753938+kaganisildak@users.noreply.github.com> Date: Mon, 6 Jan 2025 20:59:55 +0000 Subject: [PATCH 1/2] set_mem_event & slat_control functions added --- libvmi/events_cdef.h | 6 ++++++ libvmi/libvmi.py | 11 +++++++++++ libvmi/slat_cdef.h | 4 ++++ 3 files changed, 21 insertions(+) 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..d472911 100644 --- a/libvmi/libvmi.py +++ b/libvmi/libvmi.py @@ -982,6 +982,13 @@ def register_event(self, event): cffi_event = event.to_cffi() status = lib.vmi_register_event(self.vmi, cffi_event) check(status) + + def set_mem_event(self, gfn,access,slatid): + cffgfn = ffi.new("addr_t *",gfn) + cffaccess = ffi.new("uint8_t *",access) + cffslatid = ffi.new("uint16_t *",slatid) + status = lib.vmi_set_mem_event(self.vmi, gfn,access,slatid) + check(status) def clear_event(self, event): cffi_event = event.to_cffi() @@ -1017,6 +1024,10 @@ 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 From c06ba0ba11e8e73311efce07a4f7f778e667e8b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ka=C4=9Fan=20I=C5=9EILDAK?= <12753938+kaganisildak@users.noreply.github.com> Date: Wed, 8 Jan 2025 12:36:57 +0300 Subject: [PATCH 2/2] Update libvmi.py --- libvmi/libvmi.py | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/libvmi/libvmi.py b/libvmi/libvmi.py index d472911..cfeb238 100644 --- a/libvmi/libvmi.py +++ b/libvmi/libvmi.py @@ -982,12 +982,9 @@ def register_event(self, event): cffi_event = event.to_cffi() status = lib.vmi_register_event(self.vmi, cffi_event) check(status) - - def set_mem_event(self, gfn,access,slatid): - cffgfn = ffi.new("addr_t *",gfn) - cffaccess = ffi.new("uint8_t *",access) - cffslatid = ffi.new("uint16_t *",slatid) - status = lib.vmi_set_mem_event(self.vmi, gfn,access,slatid) + + 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): @@ -1024,10 +1021,11 @@ def get_va_pages(self, dtb): return va_pages # slat - def slat_control(self,state): + 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)