qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH COLO-Frame v16 32/35] net: Add notifier/callback


From: Hailiang Zhang
Subject: Re: [Qemu-devel] [PATCH COLO-Frame v16 32/35] net: Add notifier/callback for netdev init
Date: Wed, 4 May 2016 16:18:25 +0800
User-agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Thunderbird/38.5.1

On 2016/4/26 14:48, Jason Wang wrote:


On 04/08/2016 02:26 PM, zhanghailiang wrote:
We can register some callback for this notifier,
this will be used by COLO to register a callback which
will add each netdev a buffer filter.

Signed-off-by: zhanghailiang <address@hidden>
Cc: Jason Wang <address@hidden>
Cc: Yang Hongyang <address@hidden>
---
v16:
- Simplify the codes by using some helpers in QEMU
v14:
- New patch
---
  include/net/net.h |  3 +++
  net/net.c         | 12 ++++++++++++
  2 files changed, 15 insertions(+)

diff --git a/include/net/net.h b/include/net/net.h
index 73e4c46..d8abe7a 100644
--- a/include/net/net.h
+++ b/include/net/net.h
@@ -8,6 +8,7 @@
  #include "net/queue.h"
  #include "migration/vmstate.h"
  #include "qapi-types.h"
+#include "qemu/notify.h"

  #define MAX_QUEUE_NUM 1024

@@ -176,6 +177,8 @@ struct NICInfo {
      int nvectors;
  };

+void netdev_init_add_notifier(Notifier *notify);
+
  extern int nb_nics;
  extern NICInfo nd_table[MAX_NICS];
  extern int default_net;
diff --git a/net/net.c b/net/net.c
index 0ad6217..6d846f4 100644
--- a/net/net.c
+++ b/net/net.c
@@ -56,6 +56,9 @@
  static VMChangeStateEntry *net_change_state_entry;
  static QTAILQ_HEAD(, NetClientState) net_clients;

+static NotifierList netdev_init_notifiers =
+    NOTIFIER_LIST_INITIALIZER(netdev_init_notifiers);
+
  const char *host_net_devices[] = {
      "tap",
      "socket",
@@ -931,6 +934,10 @@ static int net_init_nic(const NetClientOptions *opts, 
const char *name,
      return idx;
  }

+void netdev_init_add_notifier(Notifier *notify)
+{
+    notifier_list_add(&netdev_init_notifiers, notify);
+}

Nitpick, like other notifier, we'd better have 'register' in the name of
this function, (e.g something like netdev_register_init_notifier()).


OK, I'll fix it in next version, thanks :)


  static int (* const net_client_init_fun[NET_CLIENT_OPTIONS_KIND__MAX])(
      const NetClientOptions *opts,
@@ -1017,6 +1024,11 @@ static int net_client_init1(const void *object, int 
is_netdev, Error **errp)
          }
          return -1;
      }
+    if (is_netdev) {
+        const Netdev *netdev = object;
+
+        notifier_list_notify(&netdev_init_notifiers, netdev->id);
+    }
      return 0;
  }



.





reply via email to

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