Systemd/src/basic/ratelimit.h

41 lines
1.4 KiB
C
Raw Normal View History

/* SPDX-License-Identifier: LGPL-2.1+ */
#pragma once
2010-01-29 04:42:57 +01:00
#include <stdbool.h>
#include "time-util.h"
2010-01-29 04:42:57 +01:00
#include "util.h"
typedef struct RateLimit {
usec_t interval;
usec_t begin;
2010-01-29 04:42:57 +01:00
unsigned burst;
unsigned num;
2010-01-29 04:42:57 +01:00
} RateLimit;
2010-02-03 14:21:48 +01:00
#define RATELIMIT_DEFINE(_name, _interval, _burst) \
RateLimit _name = { \
.interval = (_interval), \
.burst = (_burst), \
.num = 0, \
2010-02-03 14:21:48 +01:00
.begin = 0 \
2010-01-29 04:42:57 +01:00
}
2010-02-03 14:21:48 +01:00
#define RATELIMIT_INIT(v, _interval, _burst) \
do { \
RateLimit *_r = &(v); \
_r->interval = (_interval); \
_r->burst = (_burst); \
_r->num = 0; \
2010-02-03 14:21:48 +01:00
_r->begin = 0; \
2012-02-07 15:56:53 +01:00
} while (false)
2010-01-29 04:42:57 +01:00
#define RATELIMIT_RESET(v) \
do { \
RateLimit *_r = &(v); \
_r->num = 0; \
_r->begin = 0; \
} while (false)
bool ratelimit_below(RateLimit *r);