---
name: "ppsratecheck"
section: "9"
platform: "freebsd"
package: "base"
version: "16.0-CURRENT-20261027-61c70dc16a79"
release: "FreeBSD 16.0-CURRENT (2026-10-27)"
platforms: ["freebsd"]
url: "https://new.carta.tech/ppsratecheck"
---

# ppsratecheck(9)

event rate limiting

## NAME

**ratecheck**, **ppsratecheck** – event rate limiting

## SYNOPSIS

**#include \<sys/time.h\>**

*int*\

**ratecheck**(*struct timeval \*lasttime*, *const struct timeval \*mininterval*);

*int*\

**ppsratecheck**(*struct timeval \*lasttime*, *int \*curpps*, *int maxpps*);

## DESCRIPTION

The **ratecheck** and **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.

The **ratecheck** function compares the current time to the value pointed to by *lasttime*. If the difference is equal to or greater than *mininterval*, it returns a non-zero value and updates *lasttime* to the current time. Otherwise, it returns zero.

The **ppsratecheck** function first compares the current time to *lasttime*. If at least a full second has passed, the value pointed to by the *curpps* argument is reset to 1 and *lasttime* is updated to the current time. Otherwise, *curpps* is incremented and *lasttime* is left untouched. In either case, **ppsratecheck** returns a non-zero value if and only if the updated *curpps* is less than or equal to *maxpps* or *maxpps* is negative.

## SEE ALSO

[counter(9)](/counter/9.md)

## HISTORY

The **ratecheck** and **ppsratecheck** functions first appeared in FreeBSD 5.1.
