]>
Commit | Line | Data |
---|---|---|
cae5b340 AX |
1 | /* |
2 | * CDDL HEADER START | |
3 | * | |
4 | * This file and its contents are supplied under the terms of the | |
5 | * Common Development and Distribution License ("CDDL"), version 1.0. | |
6 | * You may only use this file in accordance with the terms of version | |
7 | * 1.0 of the CDDL. | |
8 | * | |
9 | * A full copy of the text of the CDDL should have accompanied this | |
10 | * source. A copy of the CDDL is also available via the Internet at | |
11 | * http://www.illumos.org/license/CDDL. | |
12 | * | |
13 | * CDDL HEADER END | |
14 | */ | |
15 | ||
16 | /* | |
17 | * Copyright (c) 2016, Lawrence Livermore National Security, LLC. | |
18 | */ | |
19 | ||
20 | #ifndef _SYS_ZFS_RATELIMIT_H | |
21 | #define _SYS_ZFS_RATELIMIT_H | |
22 | ||
23 | #include <sys/zfs_context.h> | |
24 | ||
25 | typedef struct { | |
26 | hrtime_t start; | |
27 | unsigned int count; | |
42f7b73b AX |
28 | |
29 | /* | |
30 | * Pointer to number of events per interval. We do this to | |
31 | * allow the burst to be a (changeable) module parameter. | |
32 | */ | |
33 | unsigned int *burst; | |
34 | ||
35 | unsigned int interval; /* Interval length in seconds */ | |
cae5b340 AX |
36 | kmutex_t lock; |
37 | } zfs_ratelimit_t; | |
38 | ||
39 | int zfs_ratelimit(zfs_ratelimit_t *rl); | |
42f7b73b | 40 | void zfs_ratelimit_init(zfs_ratelimit_t *rl, unsigned int *burst, |
cae5b340 AX |
41 | unsigned int interval); |
42 | void zfs_ratelimit_fini(zfs_ratelimit_t *rl); | |
43 | ||
44 | #endif /* _SYS_ZFS_RATELIMIT_H */ |