Page MenuHomeFreeBSD

D41524.diff
No OneTemporary

D41524.diff

diff --git a/include/time.h b/include/time.h
--- a/include/time.h
+++ b/include/time.h
@@ -182,9 +182,15 @@
#if defined(__BSD_VISIBLE) || __ISO_C_VISIBLE >= 2011 || \
(defined(__cplusplus) && __cplusplus >= 201703)
#include <sys/_timespec.h>
-/* ISO/IEC 9899:201x 7.27.2.5 The timespec_get function */
+/* ISO/IEC 9899:2011 7.27.2.5 The timespec_get function */
#define TIME_UTC 1 /* time elapsed since epoch */
int timespec_get(struct timespec *ts, int base);
+#if defined (__BSD_VISIBLE) || __ISO_C_VISIBLE >= 2023
+/* ISO/IEC 9899:2024 7.29.1 Components of time */
+#define TIME_MONOTONIC 2 /* monotonic time */
+/* ISO/IEC 9899:2024 7.29.2.7 The timespec_getres function */
+int timespec_getres(struct timespec *, int);
+#endif
#endif
__END_DECLS
diff --git a/lib/libc/gen/Makefile.inc b/lib/libc/gen/Makefile.inc
--- a/lib/libc/gen/Makefile.inc
+++ b/lib/libc/gen/Makefile.inc
@@ -156,6 +156,7 @@
time.c \
times.c \
timespec_get.c \
+ timespec_getres.c \
timezone.c \
tls.c \
ttyname.c \
@@ -319,6 +320,7 @@
time.3 \
times.3 \
timespec_get.3 \
+ timespec_getres.3 \
timezone.3 \
ttyname.3 \
tzset.3 \
diff --git a/lib/libc/gen/timespec_get.3 b/lib/libc/gen/timespec_get.3
--- a/lib/libc/gen/timespec_get.3
+++ b/lib/libc/gen/timespec_get.3
@@ -27,7 +27,7 @@
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
.\" POSSIBILITY OF SUCH DAMAGE.
.\"
-.Dd August 10, 2018
+.Dd August 21, 2023
.Dt TIMESPEC_GET 3
.Os
.Sh NAME
@@ -55,6 +55,14 @@
.Fx ,
this corresponds to
.Dv CLOCK_REALTIME .
+.Pp
+The base
+.Dv TIME_MONOTONIC
+returns a monotonically-increasing time since an unspecified point in the past.
+In
+.Fx ,
+this corresponds to
+.Dv CLOCK_MONOTONIC .
.Sh RETURN VALUES
The
.Nm
@@ -66,7 +74,8 @@
.Sh SEE ALSO
.Xr clock_gettime 2 ,
.Xr gettimeofday 2 ,
-.Xr time 3
+.Xr time 3 ,
+.Xr timespec_getres 3
.Sh STANDARDS
The
.Nm
@@ -76,6 +85,10 @@
.Dv TIME_UTC
conforms to
.St -isoC-2011 .
+.\" The
+.\" .Dv TIME_MONOTONIC
+.\" base conforms to
+.\" -isoC-2023 .
.Sh HISTORY
This interface first appeared in
.Fx 12 .
diff --git a/lib/libc/gen/timespec_get.c b/lib/libc/gen/timespec_get.c
--- a/lib/libc/gen/timespec_get.c
+++ b/lib/libc/gen/timespec_get.c
@@ -44,6 +44,10 @@
if (clock_gettime(CLOCK_REALTIME, ts) == -1)
return 0;
break;
+ case TIME_MONOTONIC:
+ if (clock_gettime(CLOCK_MONOTONIC, ts) == -1)
+ return 0;
+ break;
default:
return 0;
}
diff --git a/lib/libc/gen/timespec_getres.3 b/lib/libc/gen/timespec_getres.3
new file mode 100644
--- /dev/null
+++ b/lib/libc/gen/timespec_getres.3
@@ -0,0 +1,51 @@
+.\"-
+.\" Copyright (c) 2023 Dag-Erling Smørgrav
+.\"
+.\" SPDX-License-Identifier: BSD-2-Clause
+.\"
+.Dd August 21, 2023
+.Dt TIMESPEC_GETRES 3
+.Os
+.Sh NAME
+.Nm timespec_getres
+.Nd get clock resolution
+.Sh LIBRARY
+.Lb libc
+.Sh SYNOPSIS
+.In time.h
+.Ft int
+.Fn timespec_getres "struct timespec *ts" "int base"
+.Sh DESCRIPTION
+If
+.Fa ts
+is non-null and
+.Fa base
+refers to a supported time base as described in
+.Xr timespec_get 3 ,
+the
+.Nm
+function fills in the structure pointed to by
+.Fa ts
+to reflect the resolution of that time base.
+.Sh RETURN VALUES
+The
+.Nm
+function returns the value of
+.Fa base
+if successful and zero otherwise.
+.Sh SEE ALSO
+.Xr clock_getres 2 ,
+.Xr timespec_get 3
+.\" .Sh STANDARDS
+.\" The
+.\" .Nm
+.\" function conforms to
+.\" .St -isoC-2023 .
+.Sh HISTORY
+This interface first appeared in
+.Fx 14 .
+.Sh AUTHORS
+The
+.Nm
+function and this manual page were written by
+.An Dag-Erling Sm\(/orgrav Aq Mt des@FreeBSD.org .
diff --git a/lib/libc/gen/timespec_getres.c b/lib/libc/gen/timespec_getres.c
new file mode 100644
--- /dev/null
+++ b/lib/libc/gen/timespec_getres.c
@@ -0,0 +1,24 @@
+/*-
+ * Copyright (c) 2023 Dag-Erling Smørgrav
+ *
+ * SPDX-License-Identifier: BSD-2-Clause
+ */
+
+#include <time.h>
+
+int
+timespec_getres(struct timespec *ts, int base)
+{
+
+ switch (base) {
+ case TIME_UTC:
+ if (clock_getres(CLOCK_REALTIME, ts) == 0)
+ return (base);
+ break;
+ case TIME_MONOTONIC:
+ if (clock_getres(CLOCK_MONOTONIC, ts) == 0)
+ return (base);
+ break;
+ }
+ return (0);
+}

File Metadata

Mime Type
text/plain
Expires
Tue, Apr 29, 6:17 PM (7 h, 58 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
17844063
Default Alt Text
D41524.diff (4 KB)

Event Timeline