iPXE
Functions
efi_time.c File Reference

EFI time source. More...

#include <string.h>
#include <errno.h>
#include <time.h>
#include <ipxe/time.h>
#include <ipxe/efi/efi.h>

Go to the source code of this file.

Functions

 FILE_LICENCE (GPL2_OR_LATER_OR_UBDL)
 
static time_t efi_get_time (void)
 Get current time in seconds. More...
 
 PROVIDE_TIME (efi, time_now, efi_get_time)
 

Detailed Description

EFI time source.

Definition in file efi_time.c.

Function Documentation

◆ FILE_LICENCE()

FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL  )

◆ efi_get_time()

static time_t efi_get_time ( void  )
static

Get current time in seconds.

Return values
timeTime, in seconds

Definition at line 43 of file efi_time.c.

43  {
45  EFI_TIME time;
46  struct tm tm;
47  EFI_STATUS efirc;
48  int rc;
49 
50  /* Get current time and date */
51  if ( ( efirc = rs->GetTime ( &time, NULL ) ) != 0 ) {
52  rc = -EEFI ( efirc );
53  DBGC ( rs, "EFITIME could not get system time: %s\n",
54  strerror ( rc ) );
55  /* Nothing meaningful we can return */
56  return 0;
57  }
58 
59  /* Construct broken-down time */
60  memset ( &tm, 0, sizeof ( tm ) );
61  tm.tm_sec = time.Second;
62  tm.tm_min = time.Minute;
63  tm.tm_hour = time.Hour;
64  tm.tm_mday = time.Day;
65  tm.tm_mon = ( time.Month - 1 );
66  tm.tm_year = ( time.Year - 1900 );
67  DBGC ( rs, "EFITIME is %04d-%02d-%02d %02d:%02d:%02d\n",
68  ( tm.tm_year + 1900 ), ( tm.tm_mon + 1 ),
70 
71  /* Convert to seconds since the Epoch */
72  return mktime ( &tm );
73 }
struct arbelprm_rc_send_wqe rc
Definition: arbel.h:14
int tm_min
Minutes [0,59].
Definition: time.h:19
#define EEFI(efirc)
Convert an EFI status code to an iPXE status code.
Definition: efi.h:171
int tm_mday
Day of month [1,31].
Definition: time.h:23
#define DBGC(...)
Definition: compiler.h:505
int tm_year
Years since 1900.
Definition: time.h:27
int tm_mon
Month of year [0,11].
Definition: time.h:25
time_t mktime(struct tm *tm)
Calculate seconds since the Epoch.
Definition: time.c:117
EFI Runtime Services Table.
Definition: UefiSpec.h:1866
char * strerror(int errno)
Retrieve string representation of error number.
Definition: strerror.c:78
EFI_GET_TIME GetTime
Definition: UefiSpec.h:1875
Broken-down time.
Definition: time.h:15
EFI Time Abstraction: Year: 1900 - 9999 Month: 1 - 12 Day: 1 - 31 Hour: 0 - 23 Minute: 0 - 59 Second:...
Definition: UefiBaseType.h:70
EFI_RUNTIME_SERVICES * RuntimeServices
A pointer to the EFI Runtime Services Table.
Definition: UefiSpec.h:2077
RETURN_STATUS EFI_STATUS
Function return status for EFI API.
Definition: UefiBaseType.h:31
int tm_sec
Seconds [0,60].
Definition: time.h:17
EFI_SYSTEM_TABLE * efi_systab
int tm_hour
Hour [0,23].
Definition: time.h:21
uint64_t time
Current time.
Definition: ntlm.h:20
#define NULL
NULL pointer (VOID *)
Definition: Base.h:321
void * memset(void *dest, int character, size_t len) __nonnull

References DBGC, EEFI, efi_systab, EFI_RUNTIME_SERVICES::GetTime, memset(), mktime(), NULL, rc, EFI_SYSTEM_TABLE::RuntimeServices, strerror(), time, tm::tm_hour, tm::tm_mday, tm::tm_min, tm::tm_mon, tm::tm_sec, and tm::tm_year.

◆ PROVIDE_TIME()

PROVIDE_TIME ( efi  ,
time_now  ,
efi_get_time   
)