rtc: return status from preinit function
This commit is contained in:
parent
716d73d982
commit
7e1a699616
3 changed files with 8 additions and 5 deletions
2
rtc.c
2
rtc.c
|
@ -42,7 +42,7 @@ static int driver_initialised = 0;
|
|||
static struct {
|
||||
int (*init)(void);
|
||||
void (*fini)(void);
|
||||
void (*time_pre_init)(void);
|
||||
int (*time_pre_init)(void);
|
||||
void (*time_init)(void (*after_hook)(void*), void *anything);
|
||||
void (*start_measurements)(void);
|
||||
int (*write_parameters)(void);
|
||||
|
|
|
@ -973,7 +973,7 @@ RTC_Linux_WriteParameters(void)
|
|||
etc in this case, since we have fewer requirements regarding the
|
||||
RTC behaviour than we do for the rest of the module. */
|
||||
|
||||
void
|
||||
int
|
||||
RTC_Linux_TimePreInit(void)
|
||||
{
|
||||
int fd, status;
|
||||
|
@ -991,7 +991,7 @@ RTC_Linux_TimePreInit(void)
|
|||
fd = open(CNF_GetRtcDevice(), O_RDONLY);
|
||||
|
||||
if (fd < 0) {
|
||||
return; /* Can't open it, and won't be able to later */
|
||||
return 0; /* Can't open it, and won't be able to later */
|
||||
}
|
||||
|
||||
/* Retry reading the rtc until both read attempts give the same sec value.
|
||||
|
@ -1007,6 +1007,8 @@ RTC_Linux_TimePreInit(void)
|
|||
/* Read system clock */
|
||||
LCL_ReadCookedTime(&old_sys_time, NULL);
|
||||
|
||||
close(fd);
|
||||
|
||||
if (status >= 0) {
|
||||
/* Convert to seconds since 1970 */
|
||||
rtc_tm.tm_sec = rtc_raw.tm_sec;
|
||||
|
@ -1047,10 +1049,11 @@ RTC_Linux_TimePreInit(void)
|
|||
}
|
||||
} else {
|
||||
LOG(LOGS_WARN, LOGF_RtcLinux, "Could not convert RTC reading to seconds since 1/1/1970");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
close(fd);
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* ================================================== */
|
||||
|
|
|
@ -30,7 +30,7 @@
|
|||
|
||||
extern int RTC_Linux_Initialise(void);
|
||||
extern void RTC_Linux_Finalise(void);
|
||||
extern void RTC_Linux_TimePreInit(void);
|
||||
extern int RTC_Linux_TimePreInit(void);
|
||||
extern void RTC_Linux_TimeInit(void (*after_hook)(void *), void *anything);
|
||||
extern void RTC_Linux_StartMeasurements(void);
|
||||
|
||||
|
|
Loading…
Reference in a new issue