]> git.ipfire.org Git - thirdparty/systemd.git/blame_incremental - src/basic/ratelimit.h
ci: enable arm64 runner for build/unit jobs
[thirdparty/systemd.git] / src / basic / ratelimit.h
... / ...
CommitLineData
1/* SPDX-License-Identifier: LGPL-2.1-or-later */
2#pragma once
3
4#include "forward.h"
5
6typedef struct RateLimit {
7 usec_t interval; /* Keep those two fields first so they can be initialized easily: */
8 unsigned burst; /* RateLimit rl = { INTERVAL, BURST }; */
9 unsigned num;
10 usec_t begin;
11} RateLimit;
12
13#define RATELIMIT_OFF (const RateLimit) { .interval = USEC_INFINITY, .burst = UINT_MAX }
14
15static inline void ratelimit_reset(RateLimit *rl) {
16 rl->num = rl->begin = 0;
17}
18
19static inline bool ratelimit_configured(const RateLimit *rl) {
20 return rl->interval > 0 && rl->burst > 0;
21}
22
23bool ratelimit_below(RateLimit *rl);
24
25unsigned ratelimit_num_dropped(const RateLimit *rl);
26
27usec_t ratelimit_end(const RateLimit *rl);
28usec_t ratelimit_left(const RateLimit *rl);