From patchwork Thu Oct 22 04:45:23 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andy Zhou X-Patchwork-Id: 534198 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from archives.nicira.com (unknown [IPv6:2600:3c00::f03c:91ff:fe6e:bdf7]) by ozlabs.org (Postfix) with ESMTP id 7B8C21402B6 for ; Thu, 22 Oct 2015 15:45:46 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=nicira_com.20150623.gappssmtp.com header.i=@nicira_com.20150623.gappssmtp.com header.b=MVUjrvt5; dkim-atps=neutral Received: from archives.nicira.com (localhost [127.0.0.1]) by archives.nicira.com (Postfix) with ESMTP id DB18F106E5; Wed, 21 Oct 2015 21:45:44 -0700 (PDT) X-Original-To: dev@openvswitch.org Delivered-To: dev@openvswitch.org Received: from mx1e4.cudamail.com (mx1.cudamail.com [69.90.118.67]) by archives.nicira.com (Postfix) with ESMTPS id E5A4E106C2 for ; Wed, 21 Oct 2015 21:45:43 -0700 (PDT) Received: from bar2.cudamail.com (unknown [192.168.21.12]) by mx1e4.cudamail.com (Postfix) with ESMTPS id 13ABE1E01DC for ; Wed, 21 Oct 2015 22:45:43 -0600 (MDT) X-ASG-Debug-ID: 1445489142-03dc533d5089590001-byXFYA Received: from mx1-pf1.cudamail.com ([192.168.24.1]) by bar2.cudamail.com with ESMTP id EpfVJKckqmvry8TE (version=TLSv1 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for ; Wed, 21 Oct 2015 22:45:42 -0600 (MDT) X-Barracuda-Envelope-From: azhou@nicira.com X-Barracuda-RBL-Trusted-Forwarder: 192.168.24.1 Received: from unknown (HELO mail-wi0-f170.google.com) (209.85.212.170) by mx1-pf1.cudamail.com with ESMTPS (RC4-SHA encrypted); 22 Oct 2015 04:45:41 -0000 Received-SPF: unknown (mx1-pf1.cudamail.com: Multiple SPF records returned) X-Barracuda-Apparent-Source-IP: 209.85.212.170 X-Barracuda-RBL-IP: 209.85.212.170 Received: by wijp11 with SMTP id p11so13491846wij.0 for ; Wed, 21 Oct 2015 21:45:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nicira_com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id; bh=gzAWmQYVVPKyku4TyIEun5HNZGTKoxhe5WbR+HdOir4=; b=MVUjrvt5RHmOVz/XnZcM8yPgorLfEw1hZXqVLO8d4yxrsGBIh+EEHrymetYdqkIWdW nJHUsIXr+KQLqzIWtyxxCEJRsi+6fjrg6xIFFty2lMeCXqEZY/NuHsOi249JHV6YjWQF YuiZzy/RyWeQ0I7eMrWgsrkpUZAwZ0HrruF4ADk2WTkI/jNP1Z4g0fjvOB3GwOaHxQg1 jFXAxN7vi+WRO56EklGun68OVvRPWrGfnVzpNBksbJON75ewgJ8ePtQ+/9vCMxwCDiGA xJy1N1shcMUDPuGKr9wHqRw0j9JlMM+YgXcskduDofnAiAAFKqGqvPbGPd8IK+u1zqx7 f6ug== 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; bh=gzAWmQYVVPKyku4TyIEun5HNZGTKoxhe5WbR+HdOir4=; b=ciIjoNkc0PuM8UYCyAPsLfArYCkBU5M7tZs1wtlOxanC2GqAYcpMr+qjnkbYaupJ92 YsORMaXNPLOWHOSe2ULljs043Mw6ERFdKrg+Jl2kXURV7XtkPRJkVmIGJO25/xHBoC7q rQ+1PDMr+yvrLOIgIB7UnTV3r+oFhm1jxeVGLGpGUPrHIGim3+QABJYyGW86BWIVbPlV 9wafUNUry6XREOACOv3v1YoLlbk7vWzBxCoIkPFbTg9rk/aOuLBpwnLs3lnX0TSpdrG6 giiWfS/J4PMRm+Z9oHRJkKi3XY7Ob/OMkVfY+ZR6alGKdqA/vZo0We3sZi6oNP/HaLeD BeJQ== X-Gm-Message-State: ALoCoQkamgC8acUyXMYUkskEidfJqapCY7y7LmjamHY1M3oLDRrWZv3UGXB+WOTJe1Sc17QbCMFc X-Received: by 10.180.187.178 with SMTP id ft18mr15892714wic.10.1445489140186; Wed, 21 Oct 2015 21:45:40 -0700 (PDT) Received: from ubuntu.localdomain ([208.91.1.34]) by smtp.gmail.com with ESMTPSA id s16sm26389112wik.16.2015.10.21.21.45.37 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 21 Oct 2015 21:45:39 -0700 (PDT) X-CudaMail-Envelope-Sender: azhou@nicira.com From: Andy Zhou To: dev@openvswitch.org X-CudaMail-Whitelist-To: dev@openvswitch.org X-CudaMail-MID: CM-E1-1020120077 X-CudaMail-DTE: 102115 X-CudaMail-Originating-IP: 209.85.212.170 Date: Wed, 21 Oct 2015 21:45:23 -0700 X-ASG-Orig-Subj: [##CM-E1-1020120077##][mointor2 1/9] ovsdb: refactor, add ovsdb_monitor_max_columns() Message-Id: <1445489131-21483-1-git-send-email-azhou@nicira.com> X-Mailer: git-send-email 1.9.1 X-Barracuda-Connect: UNKNOWN[192.168.24.1] X-Barracuda-Start-Time: 1445489142 X-Barracuda-Encrypted: DHE-RSA-AES256-SHA X-Barracuda-URL: https://web.cudamail.com:443/cgi-mod/mark.cgi X-ASG-Whitelist: Header =?UTF-8?B?eFwtY3VkYW1haWxcLXdoaXRlbGlzdFwtdG8=?= X-Virus-Scanned: by bsmtpd at cudamail.com X-Barracuda-BRTS-Status: 1 Subject: [ovs-dev] [mointor2 1/9] ovsdb: refactor, add ovsdb_monitor_max_columns() X-BeenThere: dev@openvswitch.org X-Mailman-Version: 2.1.16 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: dev-bounces@openvswitch.org Sender: "dev" This function will have multiple callers in later patches. Signed-off-by: Andy Zhou Acked-by: Ben Pfaff Acked-by: Ben Pfaff --- ovsdb/monitor.c | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/ovsdb/monitor.c b/ovsdb/monitor.c index 8a64fc1..f978960 100644 --- a/ovsdb/monitor.c +++ b/ovsdb/monitor.c @@ -547,6 +547,21 @@ ovsdb_monitor_compose_row_update( return row_json; } +static size_t +ovsdb_monitor_max_columns(struct ovsdb_monitor *dbmon) +{ + struct shash_node *node; + size_t max_columns = 0; + + SHASH_FOR_EACH (node, &dbmon->tables) { + struct ovsdb_monitor_table *mt = node->data; + + max_columns = MAX(max_columns, mt->n_columns); + } + + return max_columns; +} + /* Constructs and returns JSON for a object (as described in * RFC 7047) for all the outstanding changes within 'monitor', starting from * 'transaction'. */ @@ -555,17 +570,9 @@ ovsdb_monitor_compose_update(struct ovsdb_monitor *dbmon, bool initial, uint64_t transaction) { struct shash_node *node; - unsigned long int *changed; struct json *json; - size_t max_columns; - - max_columns = 0; - SHASH_FOR_EACH (node, &dbmon->tables) { - struct ovsdb_monitor_table *mt = node->data; - - max_columns = MAX(max_columns, mt->n_columns); - } - changed = xmalloc(bitmap_n_bytes(max_columns)); + size_t max_columns = ovsdb_monitor_max_columns(dbmon); + unsigned long int *changed = xmalloc(bitmap_n_bytes(max_columns)); json = NULL; SHASH_FOR_EACH (node, &dbmon->tables) {