carta
timersub(3)

timersub3

Timeval operations

Part of timeradd(3).

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 *tvp); int timerisset(struct timeval *tvp);

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

All functions shown above:

Since glibc 2.19:

_DEFAULT_SOURCE

glibc 2.19 and earlier:

_BSD_SOURCE

Library

Standard C library (libc, -lc)

Overview

The macros are provided to operate on timeval structures, defined in <sys/time.h> as:

struct timeval {
    time_t      tv_sec;     /* seconds */
    suseconds_t tv_usec;    /* microseconds */
};

timeradd() adds the time values in a and b, and places the sum in the timeval pointed to by res. The result is normalized such that res->tv_usec has a value in the range 0 to 999,999.

timersub() subtracts the time value in b from the time value in a, and places the result in the timeval pointed to by res. The result is normalized such that res->tv_usec has a value in the range 0 to 999,999.

timerclear() zeros out the timeval structure pointed to by tvp, so that it represents the Epoch: 1970-01-01 00:00:00 +0000 (UTC).

timerisset() returns true (nonzero) if either field of the timeval structure pointed to by tvp contains a nonzero value.

timercmp() compares the timer values in a and b using the comparison operator CMP, and returns true (nonzero) or false (0) depending on the result of the comparison. Some systems (but not Linux/glibc), have a broken timercmp() implementation, in which CMP of >=, <=, and == do not work; portable applications can instead use

!timercmp(..., <)
!timercmp(..., >)
!timercmp(..., !=)

Return value

timerisset() and timercmp() return true (nonzero) or false (0).

Errors

No errors are defined.

History

  • Arch Linux 2026-11-01: the text shown here
  • Debian 13 (Trixie)
  • Debian 12 (Bookworm)
  • Debian 11 (Bullseye)
  • Debian 10 (Buster)
  • Debian 9 (Stretch)
  • Debian 8 (Jessie)
  • Debian 7 (Wheezy)
  • Debian 6.0 (Squeeze)
  • Debian 5.0 (Lenny)

Standards

None.

History

BSD.

From man-pages 6.19-1 in Arch Linux 2026-11-01. Parsed by carta from the page's man source.