From 97fd3f6677d07c8893042c2644ada1d892f71730 Mon Sep 17 00:00:00 2001 From: Takahiro Hirofuchi Date: Thu, 31 Jan 2013 18:59:19 +0100 Subject: [PATCH] add vm shutdown (ongoing) --- src/msg/msg_vm.c | 7 ++++++- src/simix/smx_smurf_private.h | 3 ++- src/simix/smx_user.c | 5 +++++ src/surf/vm_workstation.c | 3 ++- 4 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/msg/msg_vm.c b/src/msg/msg_vm.c index 568fc0002e..429accd11f 100644 --- a/src/msg/msg_vm.c +++ b/src/msg/msg_vm.c @@ -306,7 +306,11 @@ void MSG_vm_reboot(msg_vm_t vm) /** @brief Destroy a msg_vm_t. * @ingroup msg_VMs */ -void MSG_vm_destroy(msg_vm_t vm) { +void MSG_vm_destroy(msg_vm_t vm) +{ + simcall_vm_destroy(vm); + +#if 0 unsigned int cpt; msg_process_t process; xbt_dynar_foreach(vm->processes,cpt,process) { @@ -322,4 +326,5 @@ void MSG_vm_destroy(msg_vm_t vm) { xbt_dynar_free(&vm->processes); xbt_free(vm); +#endif } diff --git a/src/simix/smx_smurf_private.h b/src/simix/smx_smurf_private.h index 7cf3a1ab05..d309ff9ea2 100644 --- a/src/simix/smx_smurf_private.h +++ b/src/simix/smx_smurf_private.h @@ -277,8 +277,9 @@ ACTION(SIMCALL_HOST_EXECUTION_WAIT, host_execution_wait, WITHOUT_ANSWER, TINT(re ACTION(SIMCALL_VM_CREATE, vm_create, WITH_ANSWER, TPTR(result), TSTRING(name), TSPEC(phys_host, smx_host_t)) sep \ ACTION(SIMCALL_VM_START, vm_start, WITHOUT_ANSWER, TVOID(result), TSPEC(phys_host, smx_host_t)) sep \ ACTION(SIMCALL_VM_SET_STATE, vm_set_state, WITHOUT_ANSWER, TVOID(result), TSPEC(vm, smx_host_t)) TINT(state) sep \ -ACTION(SIMCALL_VM_GET_STATE, vm_get_state, WITH_ANSWER, TINT(result)), TSPEC(vm, smx_host_t)) sep \ +ACTION(SIMCALL_VM_GET_STATE, vm_get_state, WITH_ANSWER, TINT(result), TSPEC(vm, smx_host_t)) sep \ ACTION(SIMCALL_VM_START, vm_start, WITHOUT_ANSWER, TVOID(result), TSPEC(vm, smx_host_t)) sep \ +ACTION(SIMCALL_VM_DESTROY, vm_destroy, WITHOUT_ANSWER, TVOID(result), TSPEC(vm, smx_host_t)) sep \ ACTION(SIMCALL_PROCESS_CREATE, process_create, WITH_ANSWER, TVOID(result), TSPEC(process, smx_process_t*), TSTRING(name), TSPEC(code, xbt_main_func_t), TPTR(data), TSTRING(hostname), TDOUBLE(kill_time), TINT(argc), TSPEC(argv, char**), TSPEC(properties, xbt_dict_t), TINT(auto_restart)) sep \ ACTION(SIMCALL_PROCESS_KILL, process_kill, WITH_ANSWER, TVOID(result), TSPEC(process, smx_process_t)) sep \ ACTION(SIMCALL_PROCESS_KILLALL, process_killall, WITH_ANSWER, TVOID(result)) sep \ diff --git a/src/simix/smx_user.c b/src/simix/smx_user.c index 0b292a18a4..5c1394fb42 100644 --- a/src/simix/smx_user.c +++ b/src/simix/smx_user.c @@ -293,6 +293,11 @@ void simcall_vm_start(smx_host_t vm){ simcall_BODY_set_vm_state(vm, msg_vm_state_running); } +void simcall_vm_destroy(smx_host_t vm) +{ + return simcall_BODY_vm_destroy(vm); +} + /** * \ingroup simix_process_management * \brief Creates and runs a new SIMIX process. diff --git a/src/surf/vm_workstation.c b/src/surf/vm_workstation.c index 1db863ce36..3bd63c33a3 100644 --- a/src/surf/vm_workstation.c +++ b/src/surf/vm_workstation.c @@ -45,7 +45,8 @@ static void vm_ws_destroy(const char *name) xbt_free(workstation->generic_resource.name); /* not defined yet, but we should have */ - // xbt_lib_unset(host_lib, name, SURF_WKS_LEVEL); + /* this will call surf_resource_free() */ + xbt_lib_unset(host_lib, name, SURF_WKS_LEVEL); xbt_free(workstation); } -- 2.20.1