Several system calls allow User Mode processes to read and modify the time and date and to create timers. Let’s briefly review these and discuss how the kernel handles them.
Processes in User Mode can get the current time and date by means of several system calls:
Returns the number of elapsed seconds since midnight at the start of January 1, 1970 (UTC).
Returns, in a data structure of type
number of elapsed seconds since midnight of January 1, 1970 (UTC) and
the number of elapsed milliseconds in the last second.
Returns, in a data structure named
number of elapsed seconds since midnight of January 1, 1970 (UTC) (a
second data structure named
timezone is not
The former system calls are superseded by
gettimeofday( ), but they are still included in Linux for backward
compatibility. We don’t discuss them further.
gettimeofday( ) system call is implemented by
sys_gettimeofday( ) function. To compute the
current date and time of the day, this function invokes
do_gettimeofday( ), which executes the following
Disables the interrupts and acquires the
xtime_lock read/write spin lock for reading.
Gets the number of microseconds elapsed in the last second by using
the function whose address is stored in
usec = do_gettimeoffset( );
If the CPU has a Time Stamp Counter, the