Author: sephe
Date: Tue May 31 05:43:59 2016
New Revision: 301021
URL: https://svnweb.freebsd.org/changeset/base/301021

Log:
  hyperv: Move guid2str from vmbus file to hyperv file
  
  - Use uint8_t for GUID byte array.
  - Define GUID string length.
  - Break long lines.
  - Nuke unnecessary stack variable.
  
  MFC after:    1 week
  Sponsored by: Microsoft OSTC
  Differential Revision:        https://reviews.freebsd.org/D6640

Modified:
  head/sys/dev/hyperv/include/hyperv.h
  head/sys/dev/hyperv/utilities/hv_kvp.c
  head/sys/dev/hyperv/vmbus/hv_hv.c
  head/sys/dev/hyperv/vmbus/hv_vmbus_drv_freebsd.c

Modified: head/sys/dev/hyperv/include/hyperv.h
==============================================================================
--- head/sys/dev/hyperv/include/hyperv.h        Tue May 31 05:34:46 2016        
(r301020)
+++ head/sys/dev/hyperv/include/hyperv.h        Tue May 31 05:43:59 2016        
(r301021)
@@ -121,10 +121,12 @@ typedef uint8_t   hv_bool_uint8_t;
                    HV_ALIGN_DOWN(addr, PAGE_SIZE)) >> PAGE_SHIFT )
 
 typedef struct hv_guid {
-        unsigned char data[16];
+       uint8_t data[16];
 } __packed hv_guid;
 
-int snprintf_hv_guid(char *, size_t, const hv_guid *);
+#define HYPERV_GUID_STRLEN     40
+
+int    hyperv_guid2str(const struct hv_guid *, char *, size_t);
 
 #define HV_NIC_GUID                                                    \
        .data = {0x63, 0x51, 0x61, 0xF8, 0x3E, 0xDF, 0xc5, 0x46,        \

Modified: head/sys/dev/hyperv/utilities/hv_kvp.c
==============================================================================
--- head/sys/dev/hyperv/utilities/hv_kvp.c      Tue May 31 05:34:46 2016        
(r301020)
+++ head/sys/dev/hyperv/utilities/hv_kvp.c      Tue May 31 05:43:59 2016        
(r301021)
@@ -307,7 +307,7 @@ hv_kvp_convert_utf16_ipinfo_to_utf8(stru
        struct hv_device *hv_dev;       /* GUID Data Structure */
        hn_softc_t *sc;                 /* hn softc structure  */
        char if_name[4];
-       char buf[39];
+       char buf[HYPERV_GUID_STRLEN];
 
        device_t *devs;
        int devcnt;
@@ -335,10 +335,11 @@ hv_kvp_convert_utf16_ipinfo_to_utf8(stru
                        /* Trying to find GUID of Network Device */
                        hv_dev = sc->hn_dev_obj;
 
-                       snprintf_hv_guid(buf, sizeof(buf), &hv_dev->device_id);
+                       hyperv_guid2str(&hv_dev->device_id, buf, sizeof(buf));
                        sprintf(if_name, "%s%d", "hn", 
device_get_unit(devs[devcnt]));
 
-                       if (strncmp(buf, (char 
*)umsg->body.kvp_ip_val.adapter_id, 39) == 0) {
+                       if (strncmp(buf, (char 
*)umsg->body.kvp_ip_val.adapter_id,
+                           HYPERV_GUID_STRLEN - 1) == 0) {
                                strcpy((char 
*)umsg->body.kvp_ip_val.adapter_id, if_name);
                                break;
                        }

Modified: head/sys/dev/hyperv/vmbus/hv_hv.c
==============================================================================
--- head/sys/dev/hyperv/vmbus/hv_hv.c   Tue May 31 05:34:46 2016        
(r301020)
+++ head/sys/dev/hyperv/vmbus/hv_hv.c   Tue May 31 05:43:59 2016        
(r301021)
@@ -202,6 +202,18 @@ hv_vmbus_signal_event(void *con_id)
        return (status);
 }
 
+int
+hyperv_guid2str(const struct hv_guid *guid, char *buf, size_t sz)
+{
+       const uint8_t *d = guid->data;
+
+       return snprintf(buf, sz, "%02x%02x%02x%02x-"
+           "%02x%02x-%02x%02x-%02x%02x-"
+           "%02x%02x%02x%02x%02x%02x",
+           d[3], d[2], d[1], d[0],
+           d[5], d[4], d[7], d[6], d[8], d[9],
+           d[10], d[11], d[12], d[13], d[14], d[15]);
+}
 
 static bool
 hyperv_identify(void)

Modified: head/sys/dev/hyperv/vmbus/hv_vmbus_drv_freebsd.c
==============================================================================
--- head/sys/dev/hyperv/vmbus/hv_vmbus_drv_freebsd.c    Tue May 31 05:34:46 
2016        (r301020)
+++ head/sys/dev/hyperv/vmbus/hv_vmbus_drv_freebsd.c    Tue May 31 05:43:59 
2016        (r301021)
@@ -490,18 +490,18 @@ vmbus_write_ivar(device_t dev, device_t 
 static int
 vmbus_child_pnpinfo_str(device_t dev, device_t child, char *buf, size_t buflen)
 {
-       char guidbuf[40];
        struct hv_device *dev_ctx = device_get_ivars(child);
+       char guidbuf[HYPERV_GUID_STRLEN];
 
        if (dev_ctx == NULL)
                return (0);
 
        strlcat(buf, "classid=", buflen);
-       snprintf_hv_guid(guidbuf, sizeof(guidbuf), &dev_ctx->class_id);
+       hyperv_guid2str(&dev_ctx->class_id, guidbuf, sizeof(guidbuf));
        strlcat(buf, guidbuf, buflen);
 
        strlcat(buf, " deviceid=", buflen);
-       snprintf_hv_guid(guidbuf, sizeof(guidbuf), &dev_ctx->device_id);
+       hyperv_guid2str(&dev_ctx->device_id, guidbuf, sizeof(guidbuf));
        strlcat(buf, guidbuf, buflen);
 
        return (0);
@@ -526,30 +526,19 @@ hv_vmbus_child_device_create(hv_guid typ
 }
 
 int
-snprintf_hv_guid(char *buf, size_t sz, const hv_guid *guid)
-{
-       int cnt;
-       const unsigned char *d = guid->data;
-
-       cnt = snprintf(buf, sz,
-               
"%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x",
-               d[3], d[2], d[1], d[0], d[5], d[4], d[7], d[6],
-               d[8], d[9], d[10], d[11], d[12], d[13], d[14], d[15]);
-       return (cnt);
-}
-
-int
 hv_vmbus_child_device_register(struct hv_device *child_dev)
 {
-       device_t child;
+       device_t child, parent;
 
+       parent = vmbus_get_device();
        if (bootverbose) {
-               char name[40];
-               snprintf_hv_guid(name, sizeof(name), &child_dev->class_id);
-               printf("VMBUS: Class ID: %s\n", name);
+               char name[HYPERV_GUID_STRLEN];
+
+               hyperv_guid2str(&child_dev->class_id, name, sizeof(name));
+               device_printf(parent, "add device, classid: %s\n", name);
        }
 
-       child = device_add_child(vmbus_get_device(), NULL, -1);
+       child = device_add_child(parent, NULL, -1);
        child_dev->device = child;
        device_set_ivars(child, child_dev);
 
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to