Subversion Repositories Kolibri OS

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
4973 right-hear 1
#include 
2
#include 
3
 
4
#define BCD_TO_BIN(val) ((val)=((val)&15) + ((val)>>4)*10)
5
 
6
int gettimeofday(struct timeval *tv, struct timezone *tz)
7
{
8
 struct tm tmblk;
9
 struct timeval tv_tmp;
10
 unsigned long xtmp;
11
 if (!tv) tv = &tv_tmp;
12
 tv->tv_usec=0;
13
 xtmp=__menuet__getsystemclock();
14
 tmblk.tm_sec = (xtmp>>16)&0xff;
15
 tmblk.tm_min = (xtmp>>8)&0xff;
16
 tmblk.tm_hour = xtmp&0xff;
17
 BCD_TO_BIN(tmblk.tm_sec);
18
 BCD_TO_BIN(tmblk.tm_min);
19
 BCD_TO_BIN(tmblk.tm_hour);
20
 __asm__ __volatile__("int $0x40":"=a"(xtmp):"0"(29));
21
 tmblk.tm_mday = (xtmp>>16)&0xff;
22
 tmblk.tm_mon = ((xtmp>>8)&0xff)-1;
23
 tmblk.tm_year = ((xtmp&0xff)+2000)-1900;
24
 tmblk.tm_wday = tmblk.tm_yday = tmblk.tm_gmtoff = 0;
25
 tmblk.tm_zone = 0;
26
 tmblk.tm_isdst = -1;
27
 tv->tv_sec = mktime(&tmblk);
28
 if(tz)
29
 {
30
  struct tm *tmloc = localtime(&(tv->tv_sec));
31
  tz->tz_minuteswest = - tmloc->tm_gmtoff / 60;
32
  tz->tz_dsttime = tmloc->tm_isdst;
33
 }
34
 return 0;
35
}