2010-08-17 05:33:07 +04:00
/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
2010-01-29 06:42:57 +03:00
2012-07-18 21:07:51 +04:00
# pragma once
2010-01-29 06:42:57 +03:00
2010-02-03 15:03:47 +03:00
/***
This file is part of systemd .
Copyright 2010 Lennart Poettering
systemd is free software ; you can redistribute it and / or modify it
2012-04-12 02:20:58 +04:00
under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation ; either version 2.1 of the License , or
2010-02-03 15:03:47 +03:00
( at your option ) any later version .
systemd is distributed in the hope that it will be useful , but
WITHOUT ANY WARRANTY ; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the GNU
2012-04-12 02:20:58 +04:00
Lesser General Public License for more details .
2010-02-03 15:03:47 +03:00
2012-04-12 02:20:58 +04:00
You should have received a copy of the GNU Lesser General Public License
2010-02-03 15:03:47 +03:00
along with systemd ; If not , see < http : //www.gnu.org/licenses/>.
* * */
2010-01-29 06:42:57 +03:00
# include "util.h"
typedef struct RateLimit {
usec_t interval ;
2010-04-21 06:01:24 +04:00
usec_t begin ;
2010-01-29 06:42:57 +03:00
unsigned burst ;
2011-02-21 17:32:18 +03:00
unsigned num ;
2010-01-29 06:42:57 +03:00
} RateLimit ;
2010-02-03 16:21:48 +03:00
# define RATELIMIT_DEFINE(_name, _interval, _burst) \
RateLimit _name = { \
. interval = ( _interval ) , \
. burst = ( _burst ) , \
2011-02-21 17:32:18 +03:00
. num = 0 , \
2010-02-03 16:21:48 +03:00
. begin = 0 \
2010-01-29 06:42:57 +03:00
}
2010-02-03 16:21:48 +03:00
# define RATELIMIT_INIT(v, _interval, _burst) \
do { \
RateLimit * _r = & ( v ) ; \
_r - > interval = ( _interval ) ; \
_r - > burst = ( _burst ) ; \
2011-02-21 17:32:18 +03:00
_r - > num = 0 ; \
2010-02-03 16:21:48 +03:00
_r - > begin = 0 ; \
2012-02-07 18:56:53 +04:00
} while ( false )
2010-01-29 06:42:57 +03:00
2012-07-04 02:23:42 +04:00
# define RATELIMIT_RESET(v) \
do { \
RateLimit * _r = & ( v ) ; \
_r - > num = 0 ; \
_r - > begin = 0 ; \
} while ( false )
2010-01-29 06:42:57 +03:00
bool ratelimit_test ( RateLimit * r ) ;