|
| virtual std::shared_ptr< Breakpoint > | create_breakpoint (const guest_ptr< void > &address, std::function< void(Event &)> callback)=0 |
| | Create an execution breakpoint.
|
| |
| virtual std::unique_ptr< Watchpoint > | create_watchpoint (const guest_ptr< void > &address, uint64_t length, bool read, bool write, bool execute, std::function< void(Event &)> callback)=0 |
| | Create a watchpoint on guest memory (e.g. break on read/write)
|
| |
| virtual std::unique_ptr< SingleStep > | single_step (Vcpu &vcpu, std::function< void(Event &)> callback)=0 |
| | Start single stepping a VCPU.
|
| |
| virtual bool | detect_guest ()=0 |
| | Attempt guest OS detection.
|
| |
| virtual Guest * | guest ()=0 |
| | Get the guest detected by detect_guest()
|
| |
| virtual const Guest * | guest () const =0 |
| | Get the guest detected by detect_guest()
|
| |
| virtual std::string | name () const =0 |
| | Get the name of the Domain, if it exists.
|
| |
| virtual uint32_t | id () const =0 |
| | Get the id of the Domain.
|
| |
| virtual Vcpu & | vcpu (uint32_t index)=0 |
| | Get a vcpu by index.
|
| |
| virtual const Vcpu & | vcpu (uint32_t index) const =0 |
| | Get a vcpu by index.
|
| |
| virtual uint32_t | vcpu_count () const =0 |
| | Get the number of vcpus in the Domain.
|
| |
| virtual const x86::PageDirectory & | page_directory () const =0 |
| | Get the page directory for address translation.
|
| |
| virtual void | poll (EventCallback &callback)=0 |
| | Poll for events and deliver them to the callback.
|
| |
| virtual void | interrupt ()=0 |
| | Interrupt a poll() call.
|
| |
| virtual void | pause ()=0 |
| | Pause the entire Domain.
|
| |
| virtual void | resume ()=0 |
| | Resume the Domain.
|
| |
| virtual TaskFilter & | task_filter ()=0 |
| | Get the task filter for this domain.
|
| |
| virtual SystemCallFilter & | system_call_filter ()=0 |
| | Get the system call filter for this Domain.
|
| |
| virtual const SystemCallFilter & | system_call_filter () const =0 |
| | Get the system call filter for this Domain.
|
| |
| virtual const Hypervisor & | hypervisor () const =0 |
| | Gets the hypervisor that the Domain is running on.
|
| |
| virtual std::shared_ptr< GuestMemoryMapping > | map_pfns (const uint64_t *pfns, size_t count) const =0 |
| | Map a list of pfns into our address space.
|
| |
| virtual void | intercept_system_calls (bool enabled)=0 |
| | Toggle system call interception for all VCPUs.
|
| |
| virtual void | intercept_cr_writes (int cr, bool enabled)=0 |
| | Toggle control register write interception on all VCPUs.
|
| |
| virtual void | suspend_event (Event &event)=0 |
| | Mark an event as suspended.
|
| |
| virtual void | suspend_event_step (Event &event)=0 |
| | Mark an event as suspended for single step.
|
| |
| virtual | ~Domain ()=default |
| | Destroy the instance.
|
| |
A class representing a single Domain.
A Domain object is the mechanism for interacting with a virtual machine. It is subclassed for specific hypervisors, such as the KvmDomain and the XenDomain.
- Examples
- ivcallmon.cc, and ivexec.cc.
| virtual void introvirt::Domain::intercept_system_calls |
( |
bool |
enabled | ) |
|
|
pure virtual |
Toggle system call interception for all VCPUs.
Enables events of type EVENT_FAST_SYSCALL and EVENT_FAST_SYSCALL_RET.
When system call interception is enabled, SYSCALL/SYSENTER instructions are intercepted by the hypervisor. If the call number matches our SystemCallFilter (or the filter is disabled), a EVENT_FAST_SYSCALL event will be delivered.
While enabled, the hypervisor also intercept all SYSRET/SYSEXIT instructions.
- Parameters
-
| enabled | If set to true, system calls and returns that match our filters will be intercepted. |
- Exceptions
-