| .\" Copyright (c) 2007 by Michael Kerrisk <mtk.manpages@gmail.com> |
| .\" |
| .\" %%%LICENSE_START(VERBATIM) |
| .\" Permission is granted to make and distribute verbatim copies of this |
| .\" manual provided the copyright notice and this permission notice are |
| .\" preserved on all copies. |
| .\" |
| .\" Permission is granted to copy and distribute modified versions of this |
| .\" manual under the conditions for verbatim copying, provided that the |
| .\" entire resulting derived work is distributed under the terms of a |
| .\" permission notice identical to this one. |
| .\" |
| .\" Since the Linux kernel and libraries are constantly changing, this |
| .\" manual page may be incorrect or out-of-date. The author(s) assume no |
| .\" responsibility for errors or omissions, or for damages resulting from |
| .\" the use of the information contained herein. The author(s) may not |
| .\" have taken the same level of care in the production of this manual, |
| .\" which is licensed free of charge, as they might when working |
| .\" professionally. |
| .\" |
| .\" Formatted or processed versions of this manual, if unaccompanied by |
| .\" the source, must acknowledge the copyright and authors of this work. |
| .\" %%%LICENSE_END |
| .\" |
| .\" 2007-07-31, mtk, Created |
| .\" |
| .TH TIMERADD 3 2016-03-15 "Linux" "Linux Programmer's Manual" |
| .SH NAME |
| timeradd, timersub, timercmp, timerclear, timerisset \- timeval operations |
| .SH SYNOPSIS |
| .nf |
| .B #include <sys/time.h> |
| |
| .BI "void timeradd(struct timeval *" a ", struct timeval *" b , |
| .BI " struct timeval *" res ); |
| |
| .BI "void timersub(struct timeval *" a ", struct timeval *" b , |
| .BI " struct timeval *" res ); |
| |
| .BI "void timerclear(struct timeval *" tvp ); |
| |
| .BI "int timerisset(struct timeval *" tvp ); |
| |
| .BI "int timercmp(struct timeval *" a ", struct timeval *" b ", " CMP ); |
| .fi |
| .sp |
| .in -4n |
| Feature Test Macro Requirements for glibc (see |
| .BR feature_test_macros (7)): |
| .in |
| .sp |
| All functions shown above: |
| Since glibc 2.19: |
| _DEFAULT_SOURCE |
| Glibc 2.19 and earlier: |
| _BSD_SOURCE |
| .SH DESCRIPTION |
| The macros are provided to operate on |
| .I timeval |
| structures, defined in |
| .I <sys/time.h> |
| as: |
| .sp |
| .in +4n |
| .nf |
| struct timeval { |
| time_t tv_sec; /* seconds */ |
| suseconds_t tv_usec; /* microseconds */ |
| }; |
| .fi |
| .in |
| .PP |
| .BR timeradd () |
| adds the time values in |
| .I a |
| and |
| .IR b , |
| and places the sum in the |
| .I timeval |
| pointed to by |
| .IR res . |
| The result is normalized such that |
| .I res\->tv_usec |
| has a value in the range 0 to 999,999. |
| |
| .BR timersub () |
| subtracts the time value in |
| .I b |
| from the time value in |
| .IR a , |
| and places the result in the |
| .I timeval |
| pointed to by |
| .IR res . |
| The result is normalized such that |
| .I res\->tv_usec |
| has a value in the range 0 to 999,999. |
| |
| .BR timerclear () |
| zeros out the |
| .I timeval |
| structure pointed to by |
| .IR tvp , |
| so that it represents the Epoch: 1970-01-01 00:00:00 +0000 (UTC). |
| |
| .BR timerisset () |
| returns true (nonzero) if either field of the |
| .I timeval |
| structure pointed to by |
| .I tvp |
| contains a nonzero value. |
| |
| .BR timercmp () |
| compares the timer values in |
| .I a |
| and |
| .I b |
| using the comparison operator |
| .IR CMP , |
| and returns true (nonzero) or false (0) depending on |
| the result of the comparison. |
| Some systems (but not Linux/glibc), |
| have a broken |
| .BR timercmp () |
| implementation, |
| .\" HP-UX, Tru64, Irix have a definition like: |
| .\"#define timercmp(tvp, uvp, cmp) \ |
| .\" ((tvp)->tv_sec cmp (uvp)->tv_sec || \ |
| .\" (tvp)->tv_sec == (uvp)->tv_sec && (tvp)->tv_usec cmp (uvp)->tv_usec) |
| in which |
| .I CMP |
| of |
| .IR >= , |
| .IR <= , |
| and |
| .I == |
| do not work; |
| portable applications can instead use |
| |
| !timercmp(..., <) |
| !timercmp(..., >) |
| !timercmp(..., !=) |
| .SH RETURN VALUE |
| .BR timerisset () |
| and |
| .BR timercmp () |
| return true (nonzero) or false (0). |
| .SH ERRORS |
| No errors are defined. |
| .SH CONFORMING TO |
| Not in POSIX.1. |
| Present on most BSD derivatives. |
| .SH SEE ALSO |
| .BR gettimeofday (2), |
| .BR time (7) |