Penguin
Diff: gettimeofday(2)
EditPageHistoryDiffInfoLikePages

Differences between current version and predecessor to the previous major change of gettimeofday(2).

Other diffs: Previous Revision, Previous Author, or view the Annotated Edit History

Newer page: version 2 Last edited on Tuesday, December 31, 2002 2:24:05 am by PerryLorier
Older page: version 1 Last edited on Tuesday, June 4, 2002 12:23:42 am by perry Revert
@@ -1,149 +1,69 @@
-GETTIMEOFDAY  
-!!!GETTIMEOFDAY  
-NAME  
-SYNOPSIS  
-DESCRIPTION  
-RETURN VALUE  
-ERRORS  
-NOTE  
-CONFORMING TO  
-SEE ALSO  
-----  
 !!NAME 
-  
-  
- gettimeofday, settimeofday - get / set time 
+gettimeofday - get time 
 !!SYNOPSIS 
-  
-  
- __#include __  
-  
-  
-__int gettimeofday(struct timeval * __''tv''__, struct  
-timezone * __''tz''__);  
- int settimeofday (const struct timeval *__''tv'' __,  
-const struct timezone *__''tz''__);__ 
+ __#include <sys/time.h> __  
+ __#include <time.h> __  
+ __int gettimeofday (struct timeval *__''tv''__, struct timezone *__''tz''__);__ 
 !!DESCRIPTION 
+__gettimeofday__ can get the time as well as a timezone. ''tv'' is a __timeval__ struct, as specified in /usr/include/sys/time.h:  
  
+ struct timeval {  
+ long tv_sec; /* seconds */  
+ long tv_usec; /* microseconds */  
+ };  
  
-__gettimeofday__ and __settimeofday__ can get and set  
-the time as well as a timezone. ''tv'' is a  
-__timeval__ struct, as specified in  
-/usr/include/sys/time.h:  
-  
-  
-struct timeval {  
-long tv_sec; /* seconds */  
-long tv_usec; /* microseconds */  
-};  
- The ''tv_sec'' member of the struct is the number of seconds since the Epoch (see time(2)), and ''tv_usec'' is the amount of microseconds past the current ''tv_sec'' value.  
-  
+The ''tv_sec'' member of the struct is the number of seconds since the Epoch (see time(2)), and ''tv_usec'' is the amount of microseconds past the current ''tv_sec'' value. 
  
 The ''tz'' argument is a __timezone__ : 
  
-  
- struct timezone {  
-int tz_minuteswest; /* minutes W of Greenwich */  
-int tz_dsttime; /* type of dst correction */  
-}; 
+ struct timezone {  
+ int tz_minuteswest; /* minutes W of Greenwich */  
+ int tz_dsttime; /* type of dst correction */  
+ }; 
 The use of the timezone struct is obsolete; the ''tz_dsttime'' field has never been used under Linux - it has not been and will not be supported by libc or glibc. Each and every occurrence of this field in the kernel source (other than the declaration) is a bug. Thus, the following is purely of historic interest. 
  
+The field ''tz_dsttime'' contains a symbolic constant (values are given below) that indicates in which part of the year Daylight Saving Time is in force. (Note: its value is constant throughout the year - it does not indicate that DST is in force, it just selects an algorithm.) The daylight saving time algorithms defined are as follows :  
  
-The field ''tz _dsttime'' contains a symbolic constant  
-(values are given below) that indicates in which part of the  
-year Daylight Saving Time is in force. (Note: its value is  
-constant throughout the year - it does not indicate that DST  
-is in force, it just selects an algorithm.) The daylight  
-saving time algorithms defined are as follows :  
+ __DST_NONE__ /* not on dst */  
+ __DST_USA__ /* USA style dst */  
+ __DST_AUST__ /* Australian style dst */  
+ __ DST_WET__ /* Western European dst */  
+ __DST_MET__ /* Middle European dst */  
+ __DST_EET__ /* Eastern European dst */  
+ __DST_CAN__ /* Canada */  
+ __DST_GB__ /* Great Britain and Eire */  
+ __DST_RUM__ /* Rumania */  
+ __DST_TUR__ /* Turkey */  
+ __DST_AUSTALT__ /* Australian style with shift in 1986 */  
  
+Of course it turned out that the period in which Daylight Saving Time is in force cannot be given by a simple algorithm, one per country; indeed, this period is determined by unpredictable political decisions. So this method of representing time zones has been abandoned.  
  
-__DST_NONE__ /* not on dst */__  
-DST_USA__ /* USA style dst */__  
-DST_AUST__ /* Australian style dst */__  
-DST_WET__ /* Western European dst */__  
-DST_MET__ /* Middle European dst */__  
-DST_EET__ /* Eastern European dst */__  
-DST_CAN__ /* Canada */__  
-DST_GB__ /* Great Britain and Eire */__  
-DST_RUM__ /* Rumania */__  
-DST_TUR__ /* Turkey */__  
-DST_AUSTALT__ /* Australian style with shift in 1986  
-*/  
+The following macros are defined to operate on a struct timeval :  
  
+ #define timerisset(tvp)\  
+ ((tvp)->tv_sec || (tvp)->tv_usec)  
+ #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)  
+ #define timerclear(tvp)\  
+ ((tvp)->tv_sec = (tvp)->tv_usec = 0)  
  
-Of course it turned out that the period in which Daylight  
-Saving Time is in force cannot be given by a simple  
-algorithm, one per country; indeed, this period is  
-determined by unpredictable political decisions. So this  
-method of representing time zones has been abandoned. Under  
-Linux, in a call to __settimeofday__ the  
-''tz_dsttime'' field should be zero.  
  
-  
-Under Linux there is some peculiar `warp clock' semantics  
-associated to the __settimeofday__ system call if on the  
-very first call (after booting) that has a non-NULL  
-''tz'' argument, the ''tv'' argument is NULL and the  
-''tz_minuteswest'' field is nonzero. In such a case it is  
-assumed that the CMOS clock is on local time, and that it  
-has to be incremented by this amount to get UTC system time.  
-No doubt it is a bad idea to use this feature.  
-  
-  
-The following macros are defined to operate on a struct  
-timeval :  
-  
-  
-#define timerisset(tvp)\  
-((tvp)-  
 If either ''tv'' or ''tz'' is null, the corresponding structure is not set or returned. 
  
-  
-Only the super user may use  
-__settimeofday__.  
 !!RETURN VALUE 
+gettimeofday(2) return 0 for success, or -1 for failure (in which case ''errno'' is set appropriately).  
  
-  
-__gettimeofday__ and __settimeofday__ return 0 for  
-success, or -1 for failure (in which case ''errno'' is  
-set appropriately).  
 !!ERRORS 
+;[EINVAL]: Timezone (or something else) is invalid.  
+;[EFAULT]: One of ''tv'' or ''tz'' pointed outside your accessible address space.  
  
-  
-__EPERM__  
-  
-  
-__settimeofday__ is called by someone other than the  
-superuser.  
-  
-  
-__EINVAL__  
-  
-  
-Timezone (or something else) is invalid.  
-  
-  
-__EFAULT__  
-  
-  
-One of ''tv'' or ''tz'' pointed outside your  
-accessible address space.  
 !!NOTE 
+The defines for __timercmp__, __timerisset__, __timerclear__, __timeradd__, __timersub__ are (since glibc2.2.2) only available if ___BSD_SOURCE__ is defined (either explicitly, or implicitly, by not defining _POSIX_SOURCE or compiling with the -ansi flag).  
  
-  
-The prototype for __settimeofday__ and the defines for  
-__timercmp__, __timerisset__, __timerclear__,  
-__timeradd__, __timersub__ are (since glibc2.2.2) only  
-available if ___BSD_SOURCE__ is defined (either  
-explicitly, or implicitly, by not defining _POSIX_SOURCE or  
-compiling with the -ansi flag).  
 !!CONFORMING TO 
+SVr4, BSD 4.3  
  
-  
-SVr4, BSD 4.3  
 !!SEE ALSO 
-  
-  
- date(1), adjtimex(2), time(2),  
- ctime(3), ftime(3)  
-----  
+date(1), adjtimex(2), time(2), ctime(3), ftime(3) 
This page is a man page (or other imported legacy content). We are unable to automatically determine the license status of this page.