From patchwork Tue Sep 2 15:25:22 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Marchand X-Patchwork-Id: 385182 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 7FE63140180 for ; Wed, 3 Sep 2014 01:26:41 +1000 (EST) Received: from localhost ([::1]:38797 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XOpyh-0006TY-At for incoming@patchwork.ozlabs.org; Tue, 02 Sep 2014 11:26:39 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59865) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XOpxx-00056A-VW for qemu-devel@nongnu.org; Tue, 02 Sep 2014 11:25:59 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XOpxs-0000W5-Fw for qemu-devel@nongnu.org; Tue, 02 Sep 2014 11:25:53 -0400 Received: from mail-we0-f175.google.com ([74.125.82.175]:44116) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XOpxr-0000Vy-QC for qemu-devel@nongnu.org; Tue, 02 Sep 2014 11:25:48 -0400 Received: by mail-we0-f175.google.com with SMTP id k48so7143138wev.20 for ; Tue, 02 Sep 2014 08:25:47 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=iHXaT5ATJ++8ooSztJqwZNe+eSR6ZSD3KHN9hwZuoWU=; b=Kv35TxODGDmP5w7KqHAhlqvLvrHkUIfGv7CzPe7KA2/g0ae7LdvMnOjduWbKGE3s+Z ggQalAZ9z/4BEHHf+7tS/iJ4FhcPe0A3t/7snLgykpmHZ8yfIFmKTWsbNQ3i8rgPHlph LVEILQEUX8BARLiOqOGLyccS4PqeoiXI/z+xP1fglwMYZHGC18/3aphj6ZR3BxpdkCuB GISL7yWbErgJWvPX2K5aPREzyujHN34JYUtreOhcUXd9YUl34oKyrABOxZDP3qv0lnIi d1q6bKeYfdkJI2OTGC16ZqvTww7s+B27UXCXo3hXcY6pai3V2q6vEzBwN3opKNCYLVTL JhsA== X-Gm-Message-State: ALoCoQl7s0qnZH+rWVgfb0FLTo4Jfh3sYTpnNAhi5RiPImqYWrnShY9NUkgT35yKp1AP+34APNts X-Received: by 10.180.149.197 with SMTP id uc5mr28482404wib.75.1409671547132; Tue, 02 Sep 2014 08:25:47 -0700 (PDT) Received: from alcyon.dev.6wind.com (guy78-3-82-239-227-177.fbx.proxad.net. [82.239.227.177]) by mx.google.com with ESMTPSA id w2sm20969963wia.11.2014.09.02.08.25.45 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 02 Sep 2014 08:25:46 -0700 (PDT) From: David Marchand To: qemu-devel@nongnu.org Date: Tue, 2 Sep 2014 17:25:22 +0200 Message-Id: <1409671532-12706-5-git-send-email-david.marchand@6wind.com> X-Mailer: git-send-email 1.7.10.4 In-Reply-To: <1409671532-12706-1-git-send-email-david.marchand@6wind.com> References: <1409671532-12706-1-git-send-email-david.marchand@6wind.com> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 74.125.82.175 Cc: kvm@vger.kernel.org, stefanha@gmail.com, claudio.fontana@huawei.com, armbru@redhat.com, arei.gonglei@huawei.com, pbonzini@redhat.com, jani.kokkonen@huawei.com, cam@cs.ualberta.ca Subject: [Qemu-devel] [PATCH v4 04/14] contrib/ivshmem-*: reuse qemu/queue.h X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Switch to qemu/queue.h strutures. Signed-off-by: David Marchand --- contrib/ivshmem-client/ivshmem-client.c | 17 ++++++++-------- contrib/ivshmem-client/ivshmem-client.h | 7 ++++--- contrib/ivshmem-server/ivshmem-server.c | 33 ++++++++++++------------------- contrib/ivshmem-server/ivshmem-server.h | 7 ++++--- 4 files changed, 30 insertions(+), 34 deletions(-) diff --git a/contrib/ivshmem-client/ivshmem-client.c b/contrib/ivshmem-client/ivshmem-client.c index 3f6ca98..ce3a5d2 100644 --- a/contrib/ivshmem-client/ivshmem-client.c +++ b/contrib/ivshmem-client/ivshmem-client.c @@ -14,12 +14,13 @@ #include #include #include -#include #include #include #include +#include "qemu/queue.h" + #include "ivshmem-client.h" /* log a message on stdout if verbose=1 */ @@ -84,7 +85,7 @@ free_peer(IvshmemClient *client, IvshmemClientPeer *peer) { unsigned vector; - TAILQ_REMOVE(&client->peer_list, peer, next); + QTAILQ_REMOVE(&client->peer_list, peer, next); for (vector = 0; vector < peer->vectors_count; vector++) { close(peer->vectors[vector]); } @@ -131,7 +132,7 @@ handle_server_msg(IvshmemClient *client) memset(peer, 0, sizeof(*peer)); peer->id = peer_id; peer->vectors_count = 0; - TAILQ_INSERT_TAIL(&client->peer_list, peer, next); + QTAILQ_INSERT_TAIL(&client->peer_list, peer, next); debug_log(client, "new peer id = %ld\n", peer_id); } @@ -161,7 +162,7 @@ ivshmem_client_init(IvshmemClient *client, const char *unix_sock_path, client->local.vectors[i] = -1; } - TAILQ_INIT(&client->peer_list); + QTAILQ_INIT(&client->peer_list); client->local.id = -1; client->notif_cb = notif_cb; @@ -230,7 +231,7 @@ ivshmem_client_close(IvshmemClient *client) debug_log(client, "close client\n"); - while ((peer = TAILQ_FIRST(&client->peer_list)) != NULL) { + while ((peer = QTAILQ_FIRST(&client->peer_list)) != NULL) { free_peer(client, peer); } @@ -363,7 +364,7 @@ ivshmem_client_notify_broadcast(const IvshmemClient *client) IvshmemClientPeer *peer; int ret = 0; - TAILQ_FOREACH(peer, &client->peer_list, next) { + QTAILQ_FOREACH(peer, &client->peer_list, next) { if (ivshmem_client_notify_all_vects(client, peer) < 0) { ret = -1; } @@ -382,7 +383,7 @@ ivshmem_client_search_peer(IvshmemClient *client, long peer_id) return &client->local; } - TAILQ_FOREACH(peer, &client->peer_list, next) { + QTAILQ_FOREACH(peer, &client->peer_list, next) { if (peer->id == peer_id) { return peer; } @@ -406,7 +407,7 @@ ivshmem_client_dump(const IvshmemClient *client) } /* dump peers */ - TAILQ_FOREACH(peer, &client->peer_list, next) { + QTAILQ_FOREACH(peer, &client->peer_list, next) { printf("peer_id = %ld\n", peer->id); for (vector = 0; vector < peer->vectors_count; vector++) { diff --git a/contrib/ivshmem-client/ivshmem-client.h b/contrib/ivshmem-client/ivshmem-client.h index 0fe0c94..e3b284d 100644 --- a/contrib/ivshmem-client/ivshmem-client.h +++ b/contrib/ivshmem-client/ivshmem-client.h @@ -21,7 +21,8 @@ #include #include -#include + +#include "qemu/queue.h" /** * Maximum number of notification vectors supported by the client @@ -40,12 +41,12 @@ * client in (IvshmemClient)->local. */ typedef struct IvshmemClientPeer { - TAILQ_ENTRY(IvshmemClientPeer) next; /**< next in list*/ + QTAILQ_ENTRY(IvshmemClientPeer) next; /**< next in list*/ long id; /**< the id of the peer */ int vectors[IVSHMEM_CLIENT_MAX_VECTORS]; /**< one fd per vector */ unsigned vectors_count; /**< number of vectors */ } IvshmemClientPeer; -TAILQ_HEAD(IvshmemClientPeerList, IvshmemClientPeer); +QTAILQ_HEAD(IvshmemClientPeerList, IvshmemClientPeer); typedef struct IvshmemClientPeerList IvshmemClientPeerList; typedef struct IvshmemClient IvshmemClient; diff --git a/contrib/ivshmem-server/ivshmem-server.c b/contrib/ivshmem-server/ivshmem-server.c index 20fbac0..e58864d 100644 --- a/contrib/ivshmem-server/ivshmem-server.c +++ b/contrib/ivshmem-server/ivshmem-server.c @@ -16,7 +16,6 @@ #include #include -#include #include #include #include @@ -24,6 +23,8 @@ #include #include +#include "qemu/queue.h" + #include "ivshmem-server.h" /* log a message on stdout if verbose=1 */ @@ -33,14 +34,6 @@ } \ } while (0) -/* browse the queue, allowing to remove/free the current element */ -#define TAILQ_FOREACH_SAFE(var, var2, head, field) \ - for ((var) = TAILQ_FIRST((head)), \ - (var2) = ((var) ? TAILQ_NEXT((var), field) : NULL); \ - (var); \ - (var) = (var2), \ - (var2) = ((var2) ? TAILQ_NEXT((var2), field) : NULL)) - /** maximum size of a huge page, used by ivshmem_ftruncate() */ #define MAX_HUGEPAGE_SIZE (1024 * 1024 * 1024) @@ -96,10 +89,10 @@ free_peer(IvshmemServer *server, IvshmemServerPeer *peer) debug_log(server, "free peer %ld\n", peer->id); close(peer->sock_fd); - TAILQ_REMOVE(&server->peer_list, peer, next); + QTAILQ_REMOVE(&server->peer_list, peer, next); /* advertise the deletion to other peers */ - TAILQ_FOREACH(other_peer, &server->peer_list, next) { + QTAILQ_FOREACH(other_peer, &server->peer_list, next) { send_one_msg(other_peer->sock_fd, peer->id, -1); } @@ -188,14 +181,14 @@ handle_new_conn(IvshmemServer *server) } /* advertise the new peer to others */ - TAILQ_FOREACH(other_peer, &server->peer_list, next) { + QTAILQ_FOREACH(other_peer, &server->peer_list, next) { for (i = 0; i < peer->vectors_count; i++) { send_one_msg(other_peer->sock_fd, peer->id, peer->vectors[i]); } } /* advertise the other peers to the new one */ - TAILQ_FOREACH(other_peer, &server->peer_list, next) { + QTAILQ_FOREACH(other_peer, &server->peer_list, next) { for (i = 0; i < peer->vectors_count; i++) { send_one_msg(peer->sock_fd, other_peer->id, other_peer->vectors[i]); } @@ -206,7 +199,7 @@ handle_new_conn(IvshmemServer *server) send_one_msg(peer->sock_fd, peer->id, peer->vectors[i]); } - TAILQ_INSERT_TAIL(&server->peer_list, peer, next); + QTAILQ_INSERT_TAIL(&server->peer_list, peer, next); debug_log(server, "new peer id = %ld\n", peer->id); return 0; @@ -266,7 +259,7 @@ ivshmem_server_init(IvshmemServer *server, const char *unix_sock_path, server->n_vectors = n_vectors; server->verbose = verbose; - TAILQ_INIT(&server->peer_list); + QTAILQ_INIT(&server->peer_list); return 0; } @@ -333,7 +326,7 @@ ivshmem_server_close(IvshmemServer *server) debug_log(server, "close server\n"); - TAILQ_FOREACH(peer, &server->peer_list, next) { + QTAILQ_FOREACH(peer, &server->peer_list, next) { free_peer(server, peer); } @@ -354,7 +347,7 @@ ivshmem_server_get_fds(const IvshmemServer *server, fd_set *fds, int *maxfd) *maxfd = server->sock_fd + 1; } - TAILQ_FOREACH(peer, &server->peer_list, next) { + QTAILQ_FOREACH(peer, &server->peer_list, next) { FD_SET(peer->sock_fd, fds); if (peer->sock_fd >= *maxfd) { *maxfd = peer->sock_fd + 1; @@ -374,7 +367,7 @@ ivshmem_server_handle_fds(IvshmemServer *server, fd_set *fds, int maxfd) return -1; } - TAILQ_FOREACH_SAFE(peer, peer_next, &server->peer_list, next) { + QTAILQ_FOREACH_SAFE(peer, &server->peer_list, next, peer_next) { /* any message from a peer socket result in a close() */ debug_log(server, "peer->sock_fd=%d\n", peer->sock_fd); if (peer->sock_fd < maxfd && FD_ISSET(peer->sock_fd, fds)) { @@ -391,7 +384,7 @@ ivshmem_server_search_peer(IvshmemServer *server, long peer_id) { IvshmemServerPeer *peer; - TAILQ_FOREACH(peer, &server->peer_list, next) { + QTAILQ_FOREACH(peer, &server->peer_list, next) { if (peer->id == peer_id) { return peer; } @@ -407,7 +400,7 @@ ivshmem_server_dump(const IvshmemServer *server) unsigned vector; /* dump peers */ - TAILQ_FOREACH(peer, &server->peer_list, next) { + QTAILQ_FOREACH(peer, &server->peer_list, next) { printf("peer_id = %ld\n", peer->id); for (vector = 0; vector < peer->vectors_count; vector++) { diff --git a/contrib/ivshmem-server/ivshmem-server.h b/contrib/ivshmem-server/ivshmem-server.h index 42736e4..acd17a8 100644 --- a/contrib/ivshmem-server/ivshmem-server.h +++ b/contrib/ivshmem-server/ivshmem-server.h @@ -28,7 +28,8 @@ #include #include -#include + +#include "qemu/queue.h" /** * Maximum number of notification vectors supported by the server @@ -44,13 +45,13 @@ * unix sockets. */ typedef struct IvshmemServerPeer { - TAILQ_ENTRY(IvshmemServerPeer) next; /**< next in list*/ + QTAILQ_ENTRY(IvshmemServerPeer) next; /**< next in list*/ int sock_fd; /**< connected unix sock */ long id; /**< the id of the peer */ int vectors[IVSHMEM_SERVER_MAX_VECTORS]; /**< one fd per vector */ unsigned vectors_count; /**< number of vectors */ } IvshmemServerPeer; -TAILQ_HEAD(IvshmemServerPeerList, IvshmemServerPeer); +QTAILQ_HEAD(IvshmemServerPeerList, IvshmemServerPeer); typedef struct IvshmemServerPeerList IvshmemServerPeerList;