mirror of
https://github.com/mmueller41/genode.git
synced 2026-01-21 12:32:56 +01:00
base-hw: do direct syscall when run/pause a VCPU
Instead of calling core to run/pause a VCPU, go directly to the kernel. Apart from the performance win, it would otherwise involve a more complex protocol, when a VCPU on another core has to be removed from the scheduler. Core's entrypoint handling those request runs on the boot-cpu only. Ref #3926
This commit is contained in:
committed by
Christian Helmuth
parent
40445d7011
commit
1d826a2c48
@@ -42,6 +42,8 @@ namespace Kernel
|
||||
constexpr Call_arg call_id_timeout() { return 16; }
|
||||
constexpr Call_arg call_id_timeout_max_us() { return 17; }
|
||||
constexpr Call_arg call_id_time() { return 18; }
|
||||
constexpr Call_arg call_id_run_vm() { return 19; }
|
||||
constexpr Call_arg call_id_pause_vm() { return 20; }
|
||||
|
||||
|
||||
/*****************************************************************
|
||||
@@ -369,6 +371,28 @@ namespace Kernel
|
||||
{
|
||||
call(call_id_delete_cap(), cap);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Execute a virtual-machine (again)
|
||||
*
|
||||
* \param vm pointer to vm kernel object
|
||||
*/
|
||||
inline void run_vm(capid_t const cap)
|
||||
{
|
||||
call(call_id_run_vm(), cap);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Stop execution of a virtual-machine
|
||||
*
|
||||
* \param vm pointer to vm kernel object
|
||||
*/
|
||||
inline void pause_vm(capid_t const cap)
|
||||
{
|
||||
call(call_id_pause_vm(), cap);
|
||||
}
|
||||
}
|
||||
|
||||
#endif /* _INCLUDE__KERNEL__INTERFACE_H_ */
|
||||
|
||||
Reference in New Issue
Block a user