mirror of
https://github.com/cloud-hypervisor/cloud-hypervisor.git
synced 2026-08-05 02:19:16 +00:00
vmm: Switch to storing VmConfig inside an Arc<Mutex<>>
This permits the runtime reconfiguration of the VM. Signed-off-by: Rob Bradford <robert.bradford@intel.com>
This commit is contained in:
@@ -11,7 +11,7 @@ use crate::api::{
|
||||
use micro_http::{Body, Method, Request, Response, StatusCode, Version};
|
||||
use serde_json::Error as SerdeError;
|
||||
use std::sync::mpsc::Sender;
|
||||
use std::sync::Arc;
|
||||
use std::sync::{Arc, Mutex};
|
||||
use vmm_sys_util::eventfd::EventFd;
|
||||
|
||||
/// Errors associated with VMM management
|
||||
@@ -81,7 +81,7 @@ impl EndpointHandler for VmCreate {
|
||||
};
|
||||
|
||||
// Call vm_create()
|
||||
match vm_create(api_notifier, api_sender, Arc::new(vm_config))
|
||||
match vm_create(api_notifier, api_sender, Arc::new(Mutex::new(vm_config)))
|
||||
.map_err(HttpError::VmCreate)
|
||||
{
|
||||
Ok(_) => Response::new(Version::Http11, StatusCode::NoContent),
|
||||
|
||||
@@ -40,7 +40,7 @@ use crate::config::VmConfig;
|
||||
use crate::vm::{Error as VmError, VmState};
|
||||
use std::io;
|
||||
use std::sync::mpsc::{channel, RecvError, SendError, Sender};
|
||||
use std::sync::Arc;
|
||||
use std::sync::{Arc, Mutex};
|
||||
use vmm_sys_util::eventfd::EventFd;
|
||||
|
||||
/// API errors are sent back from the VMM API server through the ApiResponse.
|
||||
@@ -104,7 +104,7 @@ pub type ApiResult<T> = std::result::Result<T, ApiError>;
|
||||
|
||||
#[derive(Clone, Deserialize, Serialize)]
|
||||
pub struct VmInfo {
|
||||
pub config: Arc<VmConfig>,
|
||||
pub config: Arc<Mutex<VmConfig>>,
|
||||
pub state: VmState,
|
||||
}
|
||||
|
||||
@@ -138,7 +138,7 @@ pub enum ApiRequest {
|
||||
/// (VmConfig).
|
||||
/// If the VMM API server could not create the VM, it will send a VmCreate
|
||||
/// error back.
|
||||
VmCreate(Arc<VmConfig>, Sender<ApiResponse>),
|
||||
VmCreate(Arc<Mutex<VmConfig>>, Sender<ApiResponse>),
|
||||
|
||||
/// Boot the previously created virtual machine.
|
||||
/// If the VM was not previously created, the VMM API server will send a
|
||||
@@ -185,7 +185,7 @@ pub enum ApiRequest {
|
||||
pub fn vm_create(
|
||||
api_evt: EventFd,
|
||||
api_sender: Sender<ApiRequest>,
|
||||
config: Arc<VmConfig>,
|
||||
config: Arc<Mutex<VmConfig>>,
|
||||
) -> ApiResult<()> {
|
||||
let (response_sender, response_receiver) = channel();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user