X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=examples%2Fvm_power_manager%2Fchannel_manager.c;h=74a2a677e8f577ee3cdb639d6bb056fe4cc71308;hb=01863b9d2354c6738581c68fbc5cda84b30862d8;hp=4db225755bf2dadf93afc951a8e310a8fe38ccaa;hpb=135393d4560bcffaa3fe0b739d26591565a320a2;p=dpdk.git diff --git a/examples/vm_power_manager/channel_manager.c b/examples/vm_power_manager/channel_manager.c index 4db225755b..74a2a677e8 100644 --- a/examples/vm_power_manager/channel_manager.c +++ b/examples/vm_power_manager/channel_manager.c @@ -4,7 +4,6 @@ #include #include -#include #include #include #include @@ -35,6 +34,8 @@ #define RTE_LOGTYPE_CHANNEL_MANAGER RTE_LOGTYPE_USER1 +struct libvirt_vm_info lvm_info[MAX_CLIENTS]; + /* Global pointer to libvirt connection */ static virConnectPtr global_vir_conn_ptr; @@ -58,6 +59,7 @@ struct virtual_machine_info { virDomainPtr domainPtr; virDomainInfo info; rte_spinlock_t config_spinlock; + int allow_query; LIST_ENTRY(virtual_machine_info) vms_info; }; @@ -791,6 +793,7 @@ get_info_vm(const char *vm_name, struct vm_info *info) channel_num++; } + info->allow_query = vm_info->allow_query; info->num_channels = channel_num; info->num_vcpus = vm_info->info.nrVirtCpu; rte_spinlock_unlock(&(vm_info->config_spinlock)); @@ -867,6 +870,7 @@ add_vm(const char *vm_name) else new_domain->status = CHANNEL_MGR_VM_ACTIVE; + new_domain->allow_query = 0; rte_spinlock_init(&(new_domain->config_spinlock)); LIST_INSERT_HEAD(&vm_list_head, new_domain, vms_info); return 0; @@ -896,6 +900,23 @@ remove_vm(const char *vm_name) return 0; } +int +set_query_status(char *vm_name, + bool allow_query) +{ + struct virtual_machine_info *vm_info; + + vm_info = find_domain_by_name(vm_name); + if (vm_info == NULL) { + RTE_LOG(ERR, CHANNEL_MANAGER, "VM '%s' not found\n", vm_name); + return -1; + } + rte_spinlock_lock(&(vm_info->config_spinlock)); + vm_info->allow_query = allow_query ? 1 : 0; + rte_spinlock_unlock(&(vm_info->config_spinlock)); + return 0; +} + static void disconnect_hypervisor(void) {