timeradd(3bsd) 3bsd timeradd(3bsd)

# [NAME](#NAME)

`timeradd`, `timersub`, `timerclear`, `timerisset`, `timercmp`, `timespecadd`, `timespecsub`, `timespecclear`, `timespecisset`, `timespeccmp` — operations on time structure

# [LIBRARY](#LIBRARY)

library “libbsd”

# [SYNOPSIS](#SYNOPSIS)

`#include <sys/time.h>` (See [libbsd(7)](/man/os/libbsd/libbsd.7) for include usage.)  
`void`  
`timeradd`(`struct timeval *a`, `struct timeval *b`, `struct timeval *res`);

`void`  
`timersub`(`struct timeval *a`, `struct timeval *b`, `struct timeval *res`);

`void`  
`timerclear`(`struct timeval *tv`);

`int`  
`timerisset`(`struct timeval *tv`);

`int`  
`timercmp`(`struct timeval *a`, `struct timeval *b`, `CMP`);

`void`  
`timespecadd`(`struct timespec *a`, `struct timespec *b`, `struct timespec *res`);

`void`  
`timespecsub`(`struct timespec *a`, `struct timespec *b`, `struct timespec *res`);

`void`  
`timespecclear`(`struct timespec *ts`);

`int`  
`timespecisset`(`struct timespec *ts`);

`int`  
`timespeccmp`(`struct timespec *a`, `struct timespec b`, `CMP`);

# [DESCRIPTION](#DESCRIPTION)

These macros are provided for manipulating the `timeval` and `timespec` structures described in [timeval(3bsd)](/man/os/libbsd/timeval.3bsd).

The [`timeradd`](#timeradd)() and [`timespecadd`](#timespecadd)() macros add the time information stored in `a` to `b`, storing the result in `res`. With `timeradd`() the results are simplified such that the value of `res->tv_usec` is always less than 1,000,000 (1 second). With `timespecadd`() the `res->tv_nsec` member of `struct timespec` is always less than 1,000,000,000.

The [`timersub`](#timersub)() and [`timespecsub`](#timespecsub)() macros subtract the time information stored in `b` from `a` and store the resulting structure in `res`.

The [`timerclear`](#timerclear)() and [`timespecclear`](#timespecclear)() macros initialize the structures to midnight (0 hour) January 1st, 1970 (the Epoch). In other words, they set the members of the structure to zero.

The [`timerisset`](#timerisset)() and [`timespecisset`](#timespecisset)() macros return true if the input structure is set to any time value other than the Epoch.

The [`timercmp`](#timercmp)() and [`timespeccmp`](#timespeccmp)() macros compare `a` to `b` using the comparison operator given in `CMP`. The result of the comparison is returned.

# [SEE ALSO](#SEE_ALSO)

[timeval(3bsd)](/man/os/libbsd/timeval.3bsd)

# [HISTORY](#HISTORY)

The `timeradd`() family of macros first appeared in NetBSD 1.1. These were later ported to FreeBSD 2.2.6. The `timespec`() family of macros first appeared in NetBSD 1.2.

June 7, 2010 Linux 4.19.0-gvisor

---

Document: timerclear(3bsd) from libbsd 0.12.2-r10 (Chainguard OS)
Source: https://gitlab.freedesktop.org/libbsd/libbsd
