diff options
author | 2017-04-25 03:31:15 -0700 | |
---|---|---|
committer | 2017-05-22 06:48:08 +0000 | |
commit | bb756eebdac6fd24e8919e2c43f7d2c8c4091f59 (patch) | |
tree | ca11e03542edf2d8f631efeca5e1626d211107e3 /qemu/roms/ipxe/src/arch/i386/interface/vmware/guestinfo.c | |
parent | a14b48d18a9ed03ec191cf16b162206998a895ce (diff) |
Adding qemu as a submodule of KVMFORNFV
This Patch includes the changes to add qemu as a submodule to
kvmfornfv repo and make use of the updated latest qemu for the
execution of all testcase
Change-Id: I1280af507a857675c7f81d30c95255635667bdd7
Signed-off-by:RajithaY<rajithax.yerrumsetty@intel.com>
Diffstat (limited to 'qemu/roms/ipxe/src/arch/i386/interface/vmware/guestinfo.c')
-rw-r--r-- | qemu/roms/ipxe/src/arch/i386/interface/vmware/guestinfo.c | 271 |
1 files changed, 0 insertions, 271 deletions
diff --git a/qemu/roms/ipxe/src/arch/i386/interface/vmware/guestinfo.c b/qemu/roms/ipxe/src/arch/i386/interface/vmware/guestinfo.c deleted file mode 100644 index a0530c8d1..000000000 --- a/qemu/roms/ipxe/src/arch/i386/interface/vmware/guestinfo.c +++ /dev/null @@ -1,271 +0,0 @@ -/* - * Copyright (C) 2012 Michael Brown <mbrown@fensystems.co.uk>. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of the - * License, or any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - * 02110-1301, USA. - */ - -FILE_LICENCE ( GPL2_OR_LATER ); - -/** @file - * - * VMware GuestInfo settings - * - */ - -#include <stdint.h> -#include <stdlib.h> -#include <stdio.h> -#include <string.h> -#include <errno.h> -#include <ipxe/init.h> -#include <ipxe/settings.h> -#include <ipxe/netdevice.h> -#include <ipxe/guestrpc.h> - -/** GuestInfo GuestRPC channel */ -static int guestinfo_channel; - -/** - * Fetch value of typed GuestInfo setting - * - * @v settings Settings block - * @v setting Setting to fetch - * @v type Setting type to attempt (or NULL for default) - * @v data Buffer to fill with setting data - * @v len Length of buffer - * @ret found Setting found in GuestInfo - * @ret len Length of setting data, or negative error - */ -static int guestinfo_fetch_type ( struct settings *settings, - struct setting *setting, - const struct setting_type *type, - void *data, size_t len, int *found ) { - const char *parent_name = settings->parent->name; - char command[ 24 /* "info-get guestinfo.ipxe." */ + - strlen ( parent_name ) + 1 /* "." */ + - strlen ( setting->name ) + 1 /* "." */ + - ( type ? strlen ( type->name ) : 0 ) + 1 /* NUL */ ]; - struct setting *predefined; - char *info; - int info_len; - int check_len; - int ret; - - /* Construct info-get command */ - snprintf ( command, sizeof ( command ), - "info-get guestinfo.ipxe.%s%s%s%s%s", - parent_name, ( parent_name[0] ? "." : "" ), setting->name, - ( type ? "." : "" ), ( type ? type->name : "" ) ); - - /* Check for existence and obtain length of GuestInfo value */ - info_len = guestrpc_command ( guestinfo_channel, command, NULL, 0 ); - if ( info_len < 0 ) { - ret = info_len; - goto err_get_info_len; - } - - /* Mark as found */ - *found = 1; - - /* Determine default type if necessary */ - if ( ! type ) { - predefined = find_setting ( setting->name ); - type = ( predefined ? predefined->type : &setting_type_string ); - } - assert ( type != NULL ); - - /* Allocate temporary block to hold GuestInfo value */ - info = zalloc ( info_len + 1 /* NUL */ ); - if ( ! info ) { - DBGC ( settings, "GuestInfo %p could not allocate %d bytes\n", - settings, info_len ); - ret = -ENOMEM; - goto err_alloc; - } - info[info_len] = '\0'; - - /* Fetch GuestInfo value */ - check_len = guestrpc_command ( guestinfo_channel, command, - info, info_len ); - if ( check_len < 0 ) { - ret = check_len; - goto err_get_info; - } - if ( check_len != info_len ) { - DBGC ( settings, "GuestInfo %p length mismatch (expected %d, " - "got %d)\n", settings, info_len, check_len ); - ret = -EIO; - goto err_get_info; - } - DBGC2 ( settings, "GuestInfo %p found %s = \"%s\"\n", - settings, &command[9] /* Skip "info-get " */, info ); - - /* Parse GuestInfo value according to type */ - ret = setting_parse ( type, info, data, len ); - if ( ret < 0 ) { - DBGC ( settings, "GuestInfo %p could not parse \"%s\" as %s: " - "%s\n", settings, info, type->name, strerror ( ret ) ); - goto err_parse; - } - - err_parse: - err_get_info: - free ( info ); - err_alloc: - err_get_info_len: - return ret; -} - -/** - * Fetch value of GuestInfo setting - * - * @v settings Settings block - * @v setting Setting to fetch - * @v data Buffer to fill with setting data - * @v len Length of buffer - * @ret len Length of setting data, or negative error - */ -static int guestinfo_fetch ( struct settings *settings, - struct setting *setting, - void *data, size_t len ) { - struct setting_type *type; - int found = 0; - int ret; - - /* Try default type first */ - ret = guestinfo_fetch_type ( settings, setting, NULL, - data, len, &found ); - if ( found ) - return ret; - - /* Otherwise, try all possible types */ - for_each_table_entry ( type, SETTING_TYPES ) { - ret = guestinfo_fetch_type ( settings, setting, type, - data, len, &found ); - if ( found ) - return ret; - } - - /* Not found */ - return -ENOENT; -} - -/** GuestInfo settings operations */ -static struct settings_operations guestinfo_settings_operations = { - .fetch = guestinfo_fetch, -}; - -/** GuestInfo settings */ -static struct settings guestinfo_settings = { - .refcnt = NULL, - .siblings = LIST_HEAD_INIT ( guestinfo_settings.siblings ), - .children = LIST_HEAD_INIT ( guestinfo_settings.children ), - .op = &guestinfo_settings_operations, -}; - -/** Initialise GuestInfo settings */ -static void guestinfo_init ( void ) { - int rc; - - /* Open GuestRPC channel */ - guestinfo_channel = guestrpc_open(); - if ( guestinfo_channel < 0 ) { - rc = guestinfo_channel; - DBG ( "GuestInfo could not open channel: %s\n", - strerror ( rc ) ); - return; - } - - /* Register root GuestInfo settings */ - if ( ( rc = register_settings ( &guestinfo_settings, NULL, - "vmware" ) ) != 0 ) { - DBG ( "GuestInfo could not register settings: %s\n", - strerror ( rc ) ); - return; - } -} - -/** GuestInfo settings initialiser */ -struct init_fn guestinfo_init_fn __init_fn ( INIT_NORMAL ) = { - .initialise = guestinfo_init, -}; - -/** - * Create per-netdevice GuestInfo settings - * - * @v netdev Network device - * @ret rc Return status code - */ -static int guestinfo_net_probe ( struct net_device *netdev ) { - struct settings *settings; - int rc; - - /* Do nothing unless we have a GuestInfo channel available */ - if ( guestinfo_channel < 0 ) - return 0; - - /* Allocate and initialise settings block */ - settings = zalloc ( sizeof ( *settings ) ); - if ( ! settings ) { - rc = -ENOMEM; - goto err_alloc; - } - settings_init ( settings, &guestinfo_settings_operations, NULL, NULL ); - - /* Register settings */ - if ( ( rc = register_settings ( settings, netdev_settings ( netdev ), - "vmware" ) ) != 0 ) { - DBGC ( settings, "GuestInfo %p could not register for %s: %s\n", - settings, netdev->name, strerror ( rc ) ); - goto err_register; - } - DBGC ( settings, "GuestInfo %p registered for %s\n", - settings, netdev->name ); - - return 0; - - err_register: - free ( settings ); - err_alloc: - return rc; -} - -/** - * Remove per-netdevice GuestInfo settings - * - * @v netdev Network device - */ -static void guestinfo_net_remove ( struct net_device *netdev ) { - struct settings *parent = netdev_settings ( netdev ); - struct settings *settings; - - list_for_each_entry ( settings, &parent->children, siblings ) { - if ( settings->op == &guestinfo_settings_operations ) { - DBGC ( settings, "GuestInfo %p unregistered for %s\n", - settings, netdev->name ); - unregister_settings ( settings ); - free ( settings ); - return; - } - } -} - -/** GuestInfo per-netdevice driver */ -struct net_driver guestinfo_net_driver __net_driver = { - .name = "GuestInfo", - .probe = guestinfo_net_probe, - .remove = guestinfo_net_remove, -}; |