---
name: "timeradd"
section: "3bsd"
platform: "linux"
package: "libbsd"
version: "0.12.2-2"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/timeradd/3bsd"
---

# timeradd(3bsd)

operations on time structure

## NAME

**timeradd**, **timersub**, **timerclear**, **timerisset**, **timercmp**, **timespecadd**, **timespecsub**, **timespecclear**, **timespecisset**, **timespeccmp** – operations on time structure

## LIBRARY

library “libbsd”

## SYNOPSIS

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

(See [libbsd(7)](/libbsd/7.md) 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

These macros are provided for manipulating the *timeval* and *timespec* structures described in [timeval(3bsd)](/timeval/3bsd.md).

The **timeradd**() and **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**() and **timespecsub**() macros subtract the time information stored in *b* from *a* and store the resulting structure in *res*.

The **timerclear**() and **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**() and **timespecisset**() macros return true if the input structure is set to any time value other than the Epoch.

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

## SEE ALSO

[timeval(3bsd)](/timeval/3bsd.md)

## 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.
