X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=guest%2Flinux%2Fhvm-ros%2Fv3_hvm_ros_user.h;h=de3b2e1f1b8cb5ca9b712367db34d449b8b2af79;hb=4e43946f01f687361197dc9571b7df02ae20de30;hp=94858f4998c3267893e8ee0b3c17a877f827933f;hpb=495d40c7d02054399e118be6a10b0096c938d232;p=palacios.git diff --git a/guest/linux/hvm-ros/v3_hvm_ros_user.h b/guest/linux/hvm-ros/v3_hvm_ros_user.h index 94858f4..de3b2e1 100644 --- a/guest/linux/hvm-ros/v3_hvm_ros_user.h +++ b/guest/linux/hvm-ros/v3_hvm_ros_user.h @@ -12,6 +12,22 @@ int v3_hvm_ros_user_init(); int v3_hvm_ros_user_deinit(); +// Establish function to be invoked by the VMM +// to signal activity (basically an interrupt handler) +// The handler can use the GPRs, but must save/restore +// any other registers it needs itself. If it goes +// out of its stack, it's out of luck +int v3_hvm_ros_register_signal(void (*handler)(uint64_t), void *stack, uint64_t stack_size); +int v3_hvm_ros_unregister_signal(); + +// Replace the existing HRT with a new one +// - this does not boot the new HRT +// - the intial image is the one given in the .pal config +int v3_hvm_ros_install_hrt_image(void *image, uint64_t size); + +typedef enum {RESET_HRT, RESET_ROS, RESET_BOTH} reset_type; + +int v3_hvm_ros_reset(reset_type what); int v3_hvm_ros_merge_address_spaces(); int v3_hvm_ros_unmerge_address_spaces(); @@ -34,5 +50,8 @@ int v3_hvm_ros_synchronize(); int v3_hvm_ros_invoke_hrt_sync(void *p, int handle_ros_events); int v3_hvm_ros_desynchronize(); +// Signal the HRT from the ROS +// The ROS can call this too, but it shouldn't be necesary +int v3_hvm_hrt_signal_ros(uint64_t code); #endif