qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] qemu-char: use qemu_set_fd_handler/2 consistent


From: Anthony Liguori
Subject: Re: [Qemu-devel] [PATCH] qemu-char: use qemu_set_fd_handler/2 consistently
Date: Fri, 23 Sep 2011 13:50:49 -0500
User-agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.17) Gecko/20110516 Lightning/1.0b2 Thunderbird/3.1.10

On 09/16/2011 04:19 PM, Marcelo Tosatti wrote:

Now that qemu_set_fd_handler and qemu_set_fd_handler2 have different
implementations, one using qemu iohandlers and the other glib, it is not
safe to mix the two when inserting/deleting handlers.

Fixes kvm-autotest.

Signed-off-by: Marcelo Tosatti<address@hidden>

Applied.  Thanks.

Regards,

Anthony Liguori

diff --git a/qemu-char.c b/qemu-char.c
index c9e5c41..09d2309 100644
--- a/qemu-char.c
+++ b/qemu-char.c
@@ -1881,7 +1881,7 @@ static void udp_chr_close(CharDriverState *chr)
  {
      NetCharDriver *s = chr->opaque;
      if (s->fd>= 0) {
-        qemu_set_fd_handler(s->fd, NULL, NULL, NULL);
+        qemu_set_fd_handler2(s->fd, NULL, NULL, NULL, NULL);
          closesocket(s->fd);
      }
      g_free(s);
@@ -2093,9 +2093,9 @@ static void tcp_chr_read(void *opaque)
          /* connection closed */
          s->connected = 0;
          if (s->listen_fd>= 0) {
-            qemu_set_fd_handler(s->listen_fd, tcp_chr_accept, NULL, chr);
+            qemu_set_fd_handler2(s->listen_fd, NULL, tcp_chr_accept, NULL, 
chr);
          }
-        qemu_set_fd_handler(s->fd, NULL, NULL, NULL);
+        qemu_set_fd_handler2(s->fd, NULL, NULL, NULL, NULL);
          closesocket(s->fd);
          s->fd = -1;
          qemu_chr_event(chr, CHR_EVENT_CLOSED);
@@ -2156,7 +2156,7 @@ static int tcp_chr_add_client(CharDriverState *chr, int 
fd)
      if (s->do_nodelay)
          socket_set_nodelay(fd);
      s->fd = fd;
-    qemu_set_fd_handler(s->listen_fd, NULL, NULL, NULL);
+    qemu_set_fd_handler2(s->listen_fd, NULL, NULL, NULL, NULL);
      tcp_chr_connect(chr);

      return 0;
@@ -2202,11 +2202,11 @@ static void tcp_chr_close(CharDriverState *chr)
  {
      TCPCharDriver *s = chr->opaque;
      if (s->fd>= 0) {
-        qemu_set_fd_handler(s->fd, NULL, NULL, NULL);
+        qemu_set_fd_handler2(s->fd, NULL, NULL, NULL, NULL);
          closesocket(s->fd);
      }
      if (s->listen_fd>= 0) {
-        qemu_set_fd_handler(s->listen_fd, NULL, NULL, NULL);
+        qemu_set_fd_handler2(s->listen_fd, NULL, NULL, NULL, NULL);
          closesocket(s->listen_fd);
      }
      g_free(s);
@@ -2272,7 +2272,7 @@ static int qemu_chr_open_socket(QemuOpts *opts, 
CharDriverState **_chr)

      if (is_listen) {
          s->listen_fd = fd;
-        qemu_set_fd_handler(s->listen_fd, tcp_chr_accept, NULL, chr);
+        qemu_set_fd_handler2(s->listen_fd, NULL, tcp_chr_accept, NULL, chr);
          if (is_telnet)
              s->do_telnetopt = 1;







reply via email to

[Prev in Thread] Current Thread [Next in Thread]