NAME
todr_attach
,
todr_gettime
, todr_settime
,
clock_ymdhms_to_secs
,
clock_secs_to_ymdhms
—
time-of-day clock support
SYNOPSIS
#include
<dev/clock_subr.h>
void
todr_attach
(todr_chip_handle_t);
int
todr_gettime
(todr_chip_handle_t,
struct timeval *);
int
todr_settime
(todr_chip_handle_t,
struct timeval *);
int
clock_secs_to_ymdhms
(time_t,
struct clock_ymdhms
*);
time_t
clock_ymdhms_to_secs
(struct
clock_ymdhms *);
DESCRIPTION
Thetodr_*
()
functions provide an interface to read, set and control
‘time-of-day
’ devices. A driver for a
‘time-of-day
’ device registers its
todr_chip_handle_t with machine-dependent code using the
todr_attach
()
function. Alternatively, a machine-dependent front-end to a
‘time-of-day
’ device driver may obtain
the todr_chip_handle_t directly.
The
todr_gettime
()
retrieves the current data and time from the TODR device and returns it in
the struct timeval storage provided by the caller.
todr_settime
()
sets the date and time in the TODR device represented by
todr_chip_handle_t according to the
struct timeval argument.
The utilities
clock_secs_to_ymdhms
()
and
clock_ymdhms_to_secs
()
are provided to convert a time value in seconds to and from a structure
representing the date and time as a
⟨year,month,day,weekday,hour,minute,seconds⟩ tuple. This
structure is defined as follows:
struct clock_ymdhms { uint64_t dt_year; /* Year */ u_char dt_mon; /* Month (1-12) */ u_char dt_day; /* Day (1-31) */ u_char dt_wday; /* Day of week (0-6) */ u_char dt_hour; /* Hour (0-23) */ u_char dt_min; /* Minute (0-59) */ u_char dt_sec; /* Second (0-59) */ };
Note: leap years are recognised by these conversion routines.
RETURN VALUES
The todr_*
() functions return 0 if the
requested operation was successful; otherwise an error code from
<sys/errno.h>
shall be
returned. However, behaviour is undefined if an invalid
todr_chip_handle_t is passed to any of these
functions.
The clock_ymdhms_to_secs
() function
returns -1 if the time in seconds would be less that zero or too large to
fit in a time_t. The
clock_secs_to_ymdhms
() function returns 0 on success
or EINVAL
if the time passed is negative.
SEE ALSO
intersil7170(4), mk48txx(4), inittodr(9), resettodr(9), time_second(9)