  timespec    <linux/time .h>  
.

struct timespec (

time_t tv_sec; /* seconds */

long tv_nsec; /* nanoseconds */
};

 xtime.tv_sec   ,    1 
1970  (UTC, Universal Coordinated Time,   ).
   epoch ( ).   Unix- -
       .   xtime. tv_nsec -
  ,     .

    xtime    xtime lock.
     -,   , 
   9, "   ".

    xtime   
    .

write seqlock(Sxtime lock);

/*    xtime ... */

write sequnlock (&xtirne_lock) ;

   xtime    read
seqbegin()  read_seqretry ()  .

do {

unsigned long lost;

seq = read_seqbegin(&xtime_lock);

usec = timer->get_offset();

lost = jiffies - wall_jiffies;

if (lost)

usec += lost * (1000000 / HZ);

sec = xtime.tv sec;

usec += (xtime.tv nsec / 1000);

} while (read_seqretry(Sxtime lock, seq));

     ,     ,   
    .      
    xtime     ,
       
.

       -
    gettimeofday (),    
sys_gettimeofday ()  .

asmlinkage long sys gettimeofday(struct timeval *tv, struct timezone *tz)

222  10