Better naming of fattime conversion functions, they do convert to timespec

after all.

Add 'utc' argument to control if fattimestamps are on UTC or local timezone
calendar.
This commit is contained in:
Poul-Henning Kamp 2006-10-24 10:27:23 +00:00
parent 2f764f809f
commit 7ea93e912b
2 changed files with 10 additions and 7 deletions

View File

@ -48,9 +48,8 @@
* a century ago, already then. Ironically "NT" was an abbreviation of
* "New Technology". Anyway...
*
* The functions below always assume UTC time, and the calling code
* must apply the local timezone offset as appropriate. Unless special
* conditions apply, the utc_offset() function be used for this.
* The 'utc' argument determines if the resulting FATTIME timestamp
* should b on the UTC or local timezone calendar.
*
* The conversion functions below cut time into four-year leap-second
* cycles rather than single years and uses table lookups inside those
@ -136,12 +135,14 @@ static const struct {
void
timet2fattime(struct timespec *tsp, u_int16_t *ddp, u_int16_t *dtp, u_int8_t *dhp)
timespec2fattime(struct timespec *tsp, int utc, u_int16_t *ddp, u_int16_t *dtp, u_int8_t *dhp)
{
time_t t1;
unsigned t2, l, m;
t1 = tsp->tv_sec;
if (!utc)
t1 -= utc_offset();
if (dhp != NULL)
*dhp = (tsp->tv_sec & 1) * 100 + tsp->tv_nsec / 10000000;
@ -214,7 +215,7 @@ static const uint16_t daytab[64] = {
};
void
fattime2timet(unsigned dd, unsigned dt, unsigned dh, struct timespec *tsp)
fattime2timespec(unsigned dd, unsigned dt, unsigned dh, int utc, struct timespec *tsp)
{
unsigned day;
@ -245,6 +246,8 @@ fattime2timet(unsigned dd, unsigned dt, unsigned dh, struct timespec *tsp)
day += T1980;
tsp->tv_sec += DAY * day;
if (!utc)
tsp->tv_sec += utc_offset();
}
#ifdef TEST_DRIVER

View File

@ -93,8 +93,8 @@ void clock_register(device_t, long);
/* Traditional POSIX base year */
#define POSIX_BASE_YEAR 1970
void timet2fattime(struct timespec *tsp, u_int16_t *ddp, u_int16_t *dtp, u_int8_t *dhp);
void fattime2timet(unsigned dd, unsigned dt, unsigned dh, struct timespec *tsp);
void timespec2fattime(struct timespec *tsp, int utc, u_int16_t *ddp, u_int16_t *dtp, u_int8_t *dhp);
void fattime2timespec(unsigned dd, unsigned dt, unsigned dh, int utc, struct timespec *tsp);
#endif /* _KERNEL */