1. 18 3月, 2016 1 次提交
    • E
      qapi: Don't special-case simple union wrappers · 32bafa8f
      Eric Blake 提交于
      Simple unions were carrying a special case that hid their 'data'
      QMP member from the resulting C struct, via the hack method
      QAPISchemaObjectTypeVariant.simple_union_type().  But by using
      the work we started by unboxing flat union and alternate
      branches, coupled with the ability to visit the members of an
      implicit type, we can now expose the simple union's implicit
      type in qapi-types.h:
      
      | struct q_obj_ImageInfoSpecificQCow2_wrapper {
      |     ImageInfoSpecificQCow2 *data;
      | };
      |
      | struct q_obj_ImageInfoSpecificVmdk_wrapper {
      |     ImageInfoSpecificVmdk *data;
      | };
      ...
      | struct ImageInfoSpecific {
      |     ImageInfoSpecificKind type;
      |     union { /* union tag is @type */
      |         void *data;
      |-        ImageInfoSpecificQCow2 *qcow2;
      |-        ImageInfoSpecificVmdk *vmdk;
      |+        q_obj_ImageInfoSpecificQCow2_wrapper qcow2;
      |+        q_obj_ImageInfoSpecificVmdk_wrapper vmdk;
      |     } u;
      | };
      
      Doing this removes asymmetry between QAPI's QMP side and its
      C side (both sides now expose 'data'), and means that the
      treatment of a simple union as sugar for a flat union is now
      equivalent in both languages (previously the two approaches used
      a different layer of dereferencing, where the simple union could
      be converted to a flat union with equivalent C layout but
      different {} on the wire, or to an equivalent QMP wire form
      but with different C representation).  Using the implicit type
      also lets us get rid of the simple_union_type() hack.
      
      Of course, now all clients of simple unions have to adjust from
      using su->u.member to using su->u.member.data; while this touches
      a number of files in the tree, some earlier cleanup patches
      helped minimize the change to the initialization of a temporary
      variable rather than every single member access.  The generated
      qapi-visit.c code is also affected by the layout change:
      
      |@@ -7393,10 +7393,10 @@ void visit_type_ImageInfoSpecific_member
      |     }
      |     switch (obj->type) {
      |     case IMAGE_INFO_SPECIFIC_KIND_QCOW2:
      |-        visit_type_ImageInfoSpecificQCow2(v, "data", &obj->u.qcow2, &err);
      |+        visit_type_q_obj_ImageInfoSpecificQCow2_wrapper_members(v, &obj->u.qcow2, &err);
      |         break;
      |     case IMAGE_INFO_SPECIFIC_KIND_VMDK:
      |-        visit_type_ImageInfoSpecificVmdk(v, "data", &obj->u.vmdk, &err);
      |+        visit_type_q_obj_ImageInfoSpecificVmdk_wrapper_members(v, &obj->u.vmdk, &err);
      |         break;
      |     default:
      |         abort();
      Signed-off-by: NEric Blake <eblake@redhat.com>
      Message-Id: <1458254921-17042-13-git-send-email-eblake@redhat.com>
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      32bafa8f
  2. 05 2月, 2016 1 次提交
    • P
      net: Clean up includes · 2744d920
      Peter Maydell 提交于
      Clean up includes so that osdep.h is included first and headers
      which it implies are not included manually.
      
      This commit was created with scripts/clean-includes.
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      Message-id: 1454089805-5470-11-git-send-email-peter.maydell@linaro.org
      2744d920
  3. 27 11月, 2015 2 次提交
    • A
      tap-win32: disable broken async write path · b73c1849
      Andrew Baumann 提交于
      The code under the TUN_ASYNCHRONOUS_WRITES path makes two incorrect
      assumptions about the behaviour of the WriteFile API for overlapped
      file handles. First, WriteFile does not update the
      lpNumberOfBytesWritten parameter when the write completes
      asynchronously (the number of bytes written is known only when the
      operation completes). Second, the buffer shouldn't be touched (or
      freed) until the operation completes. This led to at least one bug
      where tap_win32_write returned zero bytes written, which in turn
      caused further writes ("receives") to be disabled for that device.
      
      This change disables the asynchronous write path, while keeping most
      of the code around in case someone sees value in resurrecting it. It
      also adds some conditional debug output, similar to the read path.
      Signed-off-by: NAndrew Baumann <Andrew.Baumann@microsoft.com>
      Acked-by: NStefan Weil <sw@weilnetz.de>
      Signed-off-by: NJason Wang <jasowang@redhat.com>
      b73c1849
    • A
      tap-win32: skip unexpected nodes during registry enumeration · ee0428e3
      Andrew Baumann 提交于
      In order to find a named tap device, get_device_guid() enumerates children of
      HKLM\SYSTEM\CCS\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}
      (aka NETWORK_CONNECTIONS_KEY). For each child, it then looks for a
      "Connection" subkey, but if this key doesn't exist, it aborts the
      entire search. This was observed to fail on at least one Windows 10
      machine, where there is an additional child of NETWORK_CONNECTIONS_KEY
      (named "Descriptions"). Since registry enumeration doesn't guarantee
      any particular sort order, we should continue to search for matching
      children rather than aborting the search.
      Signed-off-by: NAndrew Baumann <Andrew.Baumann@microsoft.com>
      Reviewed-by: NStefan Weil <sw@weilnetz.de>
      Signed-off-by: NJason Wang <jasowang@redhat.com>
      ee0428e3
  4. 02 11月, 2015 1 次提交
    • E
      net: Convert to new qapi union layout · 8d0bcba8
      Eric Blake 提交于
      We have two issues with our qapi union layout:
      1) Even though the QMP wire format spells the tag 'type', the
      C code spells it 'kind', requiring some hacks in the generator.
      2) The C struct uses an anonymous union, which places all tag
      values in the same namespace as all non-variant members. This
      leads to spurious collisions if a tag value matches a non-variant
      member's name.
      
      Make the conversion to the new layout for net-related code.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      Message-Id: <1445898903-12082-18-git-send-email-eblake@redhat.com>
      [Commit message tweaked slightly]
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      8d0bcba8
  5. 19 6月, 2015 1 次提交
  6. 27 5月, 2015 1 次提交
    • M
      net: Permit incremental conversion of init functions to Error · a30ecde6
      Markus Armbruster 提交于
      Error reporting for netdev_add is broken: the net_client_init_fun[]
      report the actual errors with (at best) error_report(), and their
      caller net_client_init1() makes up a generic error on top.
      
      For command line and HMP, this produces an mildly ugly error cascade.
      
      In QMP, the actual errors go to stderr, and the generic error becomes
      the command's error reply.
      
      To fix this, we need to convert the net_client_init_fun[] to Error.
      
      To permit fixing them one by one, add an Error ** parameter to the
      net_client_init_fun[].  If the call fails without returning an Error,
      make up the same generic Error as before.  But if it returns one, use
      that instead.  Since none of them does so far, no functional change.
      Signed-off-by: NMarkus Armbruster <armbru@redhat.com>
      Reviewed-by: NEric Blake <eblake@redhat.com>
      Message-id: 1431691143-1015-3-git-send-email-armbru@redhat.com
      Signed-off-by: NStefan Hajnoczi <stefanha@redhat.com>
      a30ecde6
  7. 25 2月, 2014 3 次提交
  8. 02 2月, 2013 3 次提交
  9. 22 12月, 2012 1 次提交
  10. 19 12月, 2012 3 次提交
  11. 07 12月, 2012 1 次提交
  12. 31 10月, 2012 1 次提交
  13. 19 10月, 2012 1 次提交
  14. 08 10月, 2012 1 次提交
    • P
      net: consolidate NetClientState header files into one · a245fc18
      Paolo Bonzini 提交于
      This patch doesn't seem much useful alone, I must admit.  However,
      it makes sense as part of the upcoming directory reorganization,
      where I want to have include/net/tap.h as the net<->hw interface
      for tap.  Then having both net/tap.h and include/net/tap.h does
      not work.  "Fixed" by moving all the init functions to a single
      header file net/clients.h.
      
      The patch also adopts a uniform style for including net/*.h files
      from net/*.c, without the net/ path.
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      Signed-off-by: NStefan Hajnoczi <stefanha@gmail.com>
      a245fc18
  15. 01 8月, 2012 4 次提交
  16. 23 7月, 2012 4 次提交
  17. 05 6月, 2012 1 次提交
  18. 25 2月, 2011 1 次提交
  19. 14 10月, 2010 1 次提交
    • B
      Delete write only variables · 49a2942d
      Blue Swirl 提交于
      Compiling with GCC 4.6.0 20100925 produced warnings like:
      /src/qemu/net/tap-win32.c: In function 'tap_win32_open':
      /src/qemu/net/tap-win32.c:582:12: error: variable 'hThread' set but not used [-Werror=unused-but-set-variable]
      
      Fix by removing the unused variables.
      Signed-off-by: NBlue Swirl <blauwirbel@gmail.com>
      49a2942d
  20. 08 9月, 2010 1 次提交
  21. 02 4月, 2010 1 次提交
  22. 28 3月, 2010 1 次提交
    • B
      Fix BSD and win32 builds · 73d96e29
      Blue Swirl 提交于
        CC    net/tap-bsd.o
      /src/qemu/net/tap-bsd.c: In function `tap_open':
      /src/qemu/net/tap-bsd.c:93: warning: implicit declaration of function `error_report'
      
        CC    sparc-softmmu/../net/tap-win32.o
      cc1: warnings being treated as errors
      /src/qemu/target-sparc/../net/tap-win32.c: In function 'net_init_tap':
      /src/qemu/target-sparc/../net/tap-win32.c:709: warning: implicit declaration of function 'error_report'
      Signed-off-by: NBlue Swirl <blauwirbel@gmail.com>
      73d96e29
  23. 16 3月, 2010 1 次提交
    • M
      error: Replace qemu_error() by error_report() · 1ecda02b
      Markus Armbruster 提交于
      error_report() terminates the message with a newline.  Strip it it
      from its arguments.
      
      This fixes a few error messages lacking a newline:
      net_handle_fd_param()'s "No file descriptor named %s found", and
      tap_open()'s "vnet_hdr=1 requested, but no kernel support for
      IFF_VNET_HDR available" (all three versions).
      
      There's one place that passes arguments without newlines
      intentionally: load_vmstate().  Fix it up.
      1ecda02b
  24. 20 2月, 2010 1 次提交
  25. 05 12月, 2009 1 次提交
  26. 03 12月, 2009 1 次提交
  27. 30 10月, 2009 1 次提交