From patchwork Fri Sep 16 23:10:50 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jarno Rajahalme X-Patchwork-Id: 671187 X-Patchwork-Delegate: blp@nicira.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from archives.nicira.com (archives.nicira.com [96.126.127.54]) by ozlabs.org (Postfix) with ESMTP id 3sbWJ16hH6z9sdm for ; Sat, 17 Sep 2016 09:11:45 +1000 (AEST) Received: from archives.nicira.com (localhost [127.0.0.1]) by archives.nicira.com (Postfix) with ESMTP id ACDE8109D9; Fri, 16 Sep 2016 16:11:33 -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 91533109C5 for ; Fri, 16 Sep 2016 16:11:30 -0700 (PDT) Received: from bar5.cudamail.com (unknown [192.168.21.12]) by mx1e4.cudamail.com (Postfix) with ESMTPS id 291001E0334 for ; Fri, 16 Sep 2016 17:11:30 -0600 (MDT) X-ASG-Debug-ID: 1474067489-09eadd353234f170001-byXFYA Received: from mx1-pf1.cudamail.com ([192.168.24.1]) by bar5.cudamail.com with ESMTP id iokT8VFNRIqU15SB (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO) for ; Fri, 16 Sep 2016 17:11:29 -0600 (MDT) X-Barracuda-Envelope-From: jarno@ovn.org X-Barracuda-RBL-Trusted-Forwarder: 192.168.24.1 Received: from unknown (HELO relay6-d.mail.gandi.net) (217.70.183.198) by mx1-pf1.cudamail.com with ESMTPS (DHE-RSA-AES256-SHA encrypted); 16 Sep 2016 23:11:29 -0000 Received-SPF: pass (mx1-pf1.cudamail.com: SPF record at ovn.org designates 217.70.183.198 as permitted sender) X-Barracuda-Apparent-Source-IP: 217.70.183.198 X-Barracuda-RBL-IP: 217.70.183.198 Received: from mfilter18-d.gandi.net (mfilter18-d.gandi.net [217.70.178.146]) by relay6-d.mail.gandi.net (Postfix) with ESMTP id 1908DFB89E; Sat, 17 Sep 2016 01:11:28 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at mfilter18-d.gandi.net Received: from relay6-d.mail.gandi.net ([IPv6:::ffff:217.70.183.198]) by mfilter18-d.gandi.net (mfilter18-d.gandi.net [::ffff:10.0.15.180]) (amavisd-new, port 10024) with ESMTP id eXrPMe5AQo6x; Sat, 17 Sep 2016 01:11:26 +0200 (CEST) X-Originating-IP: 208.91.1.34 Received: from sc9-mailhost3.vmware.com (unknown [208.91.1.34]) (Authenticated sender: jarno@ovn.org) by relay6-d.mail.gandi.net (Postfix) with ESMTPSA id B16F3FB8A3; Sat, 17 Sep 2016 01:11:25 +0200 (CEST) X-CudaMail-Envelope-Sender: jarno@ovn.org From: Jarno Rajahalme To: dev@openvswitch.org X-CudaMail-Whitelist-To: dev@openvswitch.org X-CudaMail-MID: CM-E1-915068409 X-CudaMail-DTE: 091616 X-CudaMail-Originating-IP: 217.70.183.198 Date: Fri, 16 Sep 2016 16:10:50 -0700 X-ASG-Orig-Subj: [##CM-E1-915068409##][PATCH 2/3] token-bucket: Add token_bucket_wait_at(). Message-Id: <1474067451-78603-3-git-send-email-jarno@ovn.org> X-Mailer: git-send-email 2.1.4 In-Reply-To: <1474067451-78603-1-git-send-email-jarno@ovn.org> References: <1474067451-78603-1-git-send-email-jarno@ovn.org> X-Barracuda-Connect: UNKNOWN[192.168.24.1] X-Barracuda-Start-Time: 1474067489 X-Barracuda-Encrypted: ECDHE-RSA-AES256-GCM-SHA384 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] [PATCH 2/3] token-bucket: Add token_bucket_wait_at(). 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" Having the caller of token_bucket_wait() indicated in the log messages makes debugging easier. Signed-off-by: Jarno Rajahalme Acked-by: Ben Pfaff --- include/openvswitch/token-bucket.h | 5 ++++- lib/token-bucket.c | 7 ++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/include/openvswitch/token-bucket.h b/include/openvswitch/token-bucket.h index bbcde84..6bb6040 100644 --- a/include/openvswitch/token-bucket.h +++ b/include/openvswitch/token-bucket.h @@ -37,6 +37,9 @@ void token_bucket_init(struct token_bucket *, void token_bucket_set(struct token_bucket *, unsigned int rate, unsigned int burst); bool token_bucket_withdraw(struct token_bucket *, unsigned int n); -void token_bucket_wait(struct token_bucket *, unsigned int n); +void token_bucket_wait_at(struct token_bucket *, unsigned int n, + const char *where); +#define token_bucket_wait(bucket, n) \ + token_bucket_wait_at(bucket, n, OVS_SOURCE_LOCATOR) #endif /* token-bucket.h */ diff --git a/lib/token-bucket.c b/lib/token-bucket.c index be90453..29f5165 100644 --- a/lib/token-bucket.c +++ b/lib/token-bucket.c @@ -85,12 +85,13 @@ token_bucket_withdraw(struct token_bucket *tb, unsigned int n) /* Causes the poll loop to wake up when at least 'n' tokens will be available * for withdrawal from 'tb'. */ void -token_bucket_wait(struct token_bucket *tb, unsigned int n) +token_bucket_wait_at(struct token_bucket *tb, unsigned int n, + const char *where) { if (tb->tokens >= n) { - poll_immediate_wake(); + poll_immediate_wake_at(where); } else { unsigned int need = n - tb->tokens; - poll_timer_wait_until(tb->last_fill + need / tb->rate + 1); + poll_timer_wait_until_at(tb->last_fill + need / tb->rate + 1, where); } }