From 064c6ef830f7e904545f13e5297e056597530ab1 Mon Sep 17 00:00:00 2001 From: Marcin Niestroj Date: Mon, 15 Mar 2021 23:16:42 +0100 Subject: [PATCH] libc: minimal: implement time() API Implement time() API by using clock_gettime(CLOCK_REALTIME, ...). Signed-off-by: Marcin Niestroj --- lib/libc/minimal/CMakeLists.txt | 2 ++ lib/libc/minimal/include/time.h | 2 ++ lib/libc/minimal/source/time/time.c | 28 +++++++++++++++++++ .../net/civetweb/common/src/libc_extensions.c | 5 ---- 4 files changed, 32 insertions(+), 5 deletions(-) create mode 100644 lib/libc/minimal/source/time/time.c diff --git a/lib/libc/minimal/CMakeLists.txt b/lib/libc/minimal/CMakeLists.txt index 2c7afb115b2..b8f9475ef96 100644 --- a/lib/libc/minimal/CMakeLists.txt +++ b/lib/libc/minimal/CMakeLists.txt @@ -20,3 +20,5 @@ zephyr_library_sources( source/stdout/fprintf.c source/time/gmtime.c ) + +zephyr_library_sources_ifdef(CONFIG_POSIX_CLOCK source/time/time.c) diff --git a/lib/libc/minimal/include/time.h b/lib/libc/minimal/include/time.h index 2de85621d16..946f1a83a53 100644 --- a/lib/libc/minimal/include/time.h +++ b/lib/libc/minimal/include/time.h @@ -52,6 +52,8 @@ struct tm *gmtime(const time_t *timep); struct tm *gmtime_r(const time_t *_MLIBC_RESTRICT timep, struct tm *_MLIBC_RESTRICT result); +time_t time(time_t *tloc); + #ifdef __cplusplus } #endif diff --git a/lib/libc/minimal/source/time/time.c b/lib/libc/minimal/source/time/time.c new file mode 100644 index 00000000000..dbb21a3cec2 --- /dev/null +++ b/lib/libc/minimal/source/time/time.c @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2021 Golioth, Inc. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include + +/* clock_gettime() prototype */ +#include + +time_t time(time_t *tloc) +{ + struct timespec ts; + int ret; + + ret = clock_gettime(CLOCK_REALTIME, &ts); + if (ret < 0) { + /* errno is already set by clock_gettime */ + return (time_t) -1; + } + + if (tloc) { + *tloc = ts.tv_sec; + } + + return ts.tv_sec; +} diff --git a/samples/net/civetweb/common/src/libc_extensions.c b/samples/net/civetweb/common/src/libc_extensions.c index c92c8b11144..5e9e23b4ccf 100644 --- a/samples/net/civetweb/common/src/libc_extensions.c +++ b/samples/net/civetweb/common/src/libc_extensions.c @@ -159,11 +159,6 @@ long long strtoll(const char *str, char **endptr, int base) return (long long)strtol(str, endptr, base); } -time_t time(time_t *t) -{ - return 0; -} - /* * Most of the wrappers below are copies of the wrappers in net/sockets.h, * but they are available only if CONFIG_NET_SOCKETS_POSIX_NAMES is enabled