From owner-svn-src-all@freebsd.org Fri Aug 17 17:16:39 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 615D51075FE8; Fri, 17 Aug 2018 17:16:39 +0000 (UTC) (envelope-from des@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 177438A9C4; Fri, 17 Aug 2018 17:16:39 +0000 (UTC) (envelope-from des@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id E811B38DC; Fri, 17 Aug 2018 17:16:38 +0000 (UTC) (envelope-from des@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w7HHGcrJ045850; Fri, 17 Aug 2018 17:16:38 GMT (envelope-from des@FreeBSD.org) Received: (from des@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w7HHGcr0045847; Fri, 17 Aug 2018 17:16:38 GMT (envelope-from des@FreeBSD.org) Message-Id: <201808171716.w7HHGcr0045847@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: des set sender to des@FreeBSD.org using -f From: =?UTF-8?Q?Dag-Erling_Sm=c3=b8rgrav?= Date: Fri, 17 Aug 2018 17:16:38 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r337980 - head/share/man/man9 X-SVN-Group: head X-SVN-Commit-Author: des X-SVN-Commit-Paths: head/share/man/man9 X-SVN-Commit-Revision: 337980 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.27 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 17 Aug 2018 17:16:39 -0000 Author: des Date: Fri Aug 17 17:16:38 2018 New Revision: 337980 URL: https://svnweb.freebsd.org/changeset/base/337980 Log: Add a man page for ratecheck(9) and ppsratecheck(9). Added: head/share/man/man9/ratecheck.9 (contents, props changed) Modified: head/share/man/man9/Makefile head/share/man/man9/counter.9 Modified: head/share/man/man9/Makefile ============================================================================== --- head/share/man/man9/Makefile Fri Aug 17 16:25:59 2018 (r337979) +++ head/share/man/man9/Makefile Fri Aug 17 17:16:38 2018 (r337980) @@ -270,6 +270,7 @@ MAN= accept_filter.9 \ psignal.9 \ random.9 \ random_harvest.9 \ + ratecheck.9 \ redzone.9 \ refcount.9 \ resettodr.9 \ @@ -1674,6 +1675,7 @@ MLINKS+=random.9 arc4rand.9 \ MLINKS+=random_harvest.9 random_harvest_direct.9 \ random_harvest.9 random_harvest_fast.9 \ random_harvest.9 random_harvest_queue.9 +MLINKS+=ratecheck.9 ppsratecheck.9 MLINKS+=refcount.9 refcount_acquire.9 \ refcount.9 refcount_init.9 \ refcount.9 refcount_release.9 Modified: head/share/man/man9/counter.9 ============================================================================== --- head/share/man/man9/counter.9 Fri Aug 17 16:25:59 2018 (r337979) +++ head/share/man/man9/counter.9 Fri Aug 17 17:16:38 2018 (r337980) @@ -132,7 +132,7 @@ Clear the counter and set it to zero. .It Fn counter_ratecheck cr limit The function is a multiprocessor-friendly version of -.Fn ppsratecheck , +.Fn ppsratecheck which uses .Nm internally. @@ -243,6 +243,7 @@ SYSCTL_COUNTER_U64_ARRAY(_debug, OID_AUTO, counter_arr .Xr critical 9 , .Xr locking 9 , .Xr malloc 9 , +.Xr ratecheck 9 , .Xr sysctl 9 , .Xr uma 9 .Sh HISTORY Added: head/share/man/man9/ratecheck.9 ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/share/man/man9/ratecheck.9 Fri Aug 17 17:16:38 2018 (r337980) @@ -0,0 +1,93 @@ +.\"- +.\" Copyright (c) 2017 Dag-Erling Smørgrav +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" $FreeBSD$ +.\" +.Dd September 25, 2017 +.Dt RATECHECK 9 +.Os +.Sh NAME +.Nm ratecheck , +.Nm ppsratecheck +.Nd "event rate limiting" +.Sh SYNOPSIS +.In sys/time.h +.Ft int +.Fn ratecheck "struct timeval *lasttime" "struct timeval *mininterval" +.Ft int +.Fn ppsratecheck "struct timeval *lasttime" "int *curpps" "int maxpps" +.Sh DESCRIPTION +The +.Nm ratecheck +and +.Nm ppsratecheck +functions facilitate rate-limiting of arbitrary events. +The former enforces a minimum interval between events while the latter +enforces a maximum number of events per second. +.Pp +The +.Nm ratecheck +function compares the current time to the value pointed to by +.Fa lasttime . +If the difference is equal to or greater than +.Fa mininterval , +it returns a non-zero value and updates +.Fa lasttime +to the current time. +Otherwise, it returns zero. +.Pp +The +.Nm ppsratecheck +function first compares the current time +to +.Fa lasttime . +If at least a full second has passed, the value pointed to by the +.Fa curpps +argument is reset to 1 and +.Fa lasttime +is updated to the current time. +Otherwise, +.Fa curpps +is incremented and +.Fa lasttime +is left untouched. +In either case, +.Nm ppsratecheck +returns a non-zero value if and only if the updated +.Fa curpps +is less than or equal to +.Fa maxpps +or +.Fa maxpps +is negative. +.Sh SEE ALSO +.Xr counter 9 +.Sh HISTORY +The +.Nm ratecheck +and +.Nm ppsratecheck +functions first appeared in +.Fx 5.1 .