* [PATCH 3/4] Synchronize <sys/time.h> with FreeBSD
2019-09-24 7:01 [PATCH 0/4] Synchronize <sys/time.h>, etc. with FreeBSD Sebastian Huber
@ 2019-09-24 7:01 ` Sebastian Huber
2019-09-24 7:01 ` [PATCH 1/4] Fix sbttons for values > 2s Sebastian Huber
` (4 subsequent siblings)
5 siblings, 0 replies; 8+ messages in thread
From: Sebastian Huber @ 2019-09-24 7:01 UTC (permalink / raw)
To: newlib
This change is based on the FreeBSD commit:
Author: asomers <asomers@FreeBSD.org>
Date: Mon Jul 30 15:46:40 2018 +0000
Make timespecadd(3) and friends public
The timespecadd(3) family of macros were imported from NetBSD back in
r35029. However, they were initially guarded by #ifdef _KERNEL. In the
meantime, we have grown at least 28 syscalls that use timespecs in some
way, leading many programs both inside and outside of the base system to
redefine those macros. It's better just to make the definitions public.
Our kernel currently defines two-argument versions of timespecadd and
timespecsub. NetBSD, OpenBSD, and FreeDesktop.org's libbsd, however, define
three-argument versions. Solaris also defines a three-argument version, but
only in its kernel. This revision changes our definition to match the
common three-argument version.
Bump _FreeBSD_version due to the breaking KPI change.
Discussed with: cem, jilles, ian, bde
Differential Revision: https://reviews.freebsd.org/D14725
---
newlib/libc/include/sys/time.h | 27 +++++++++++++++++++++++++++
1 file changed, 27 insertions(+)
diff --git a/newlib/libc/include/sys/time.h b/newlib/libc/include/sys/time.h
index 103f56660..370c13406 100644
--- a/newlib/libc/include/sys/time.h
+++ b/newlib/libc/include/sys/time.h
@@ -340,6 +340,33 @@ tvtosbt(struct timeval _tv)
return (((sbintime_t)_tv.tv_sec << 32) + ustosbt(_tv.tv_usec));
}
+
+/* Operations on timespecs */
+#define timespecclear(tvp) ((tvp)->tv_sec = (tvp)->tv_nsec = 0)
+#define timespecisset(tvp) ((tvp)->tv_sec || (tvp)->tv_nsec)
+#define timespeccmp(tvp, uvp, cmp) \
+ (((tvp)->tv_sec == (uvp)->tv_sec) ? \
+ ((tvp)->tv_nsec cmp (uvp)->tv_nsec) : \
+ ((tvp)->tv_sec cmp (uvp)->tv_sec))
+
+#define timespecadd(tsp, usp, vsp) \
+ do { \
+ (vsp)->tv_sec = (tsp)->tv_sec + (usp)->tv_sec; \
+ (vsp)->tv_nsec = (tsp)->tv_nsec + (usp)->tv_nsec; \
+ if ((vsp)->tv_nsec >= 1000000000L) { \
+ (vsp)->tv_sec++; \
+ (vsp)->tv_nsec -= 1000000000L; \
+ } \
+ } while (0)
+#define timespecsub(tsp, usp, vsp) \
+ do { \
+ (vsp)->tv_sec = (tsp)->tv_sec - (usp)->tv_sec; \
+ (vsp)->tv_nsec = (tsp)->tv_nsec - (usp)->tv_nsec; \
+ if ((vsp)->tv_nsec < 0) { \
+ (vsp)->tv_sec--; \
+ (vsp)->tv_nsec += 1000000000L; \
+ } \
+ } while (0)
#endif /* __BSD_VISIBLE */
/*
--
2.16.4
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 1/4] Fix sbttons for values > 2s
2019-09-24 7:01 [PATCH 0/4] Synchronize <sys/time.h>, etc. with FreeBSD Sebastian Huber
2019-09-24 7:01 ` [PATCH 3/4] Synchronize <sys/time.h> " Sebastian Huber
@ 2019-09-24 7:01 ` Sebastian Huber
2019-09-24 7:01 ` [PATCH 4/4] Move timeval macros to <sys/time.h> Sebastian Huber
` (3 subsequent siblings)
5 siblings, 0 replies; 8+ messages in thread
From: Sebastian Huber @ 2019-09-24 7:01 UTC (permalink / raw)
To: newlib
From: imp <imp@FreeBSD.org>
Add test against negative times. Add code to cope with larger values
properly.
Discussed with: bde@ (quite some time ago, for an earlier version)
---
newlib/libc/include/sys/time.h | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/newlib/libc/include/sys/time.h b/newlib/libc/include/sys/time.h
index c760adfbd..103f56660 100644
--- a/newlib/libc/include/sys/time.h
+++ b/newlib/libc/include/sys/time.h
@@ -33,7 +33,7 @@
* SUCH DAMAGE.
*
* @(#)time.h 8.5 (Berkeley) 5/4/95
- * $FreeBSD: head/sys/sys/time.h 340664 2018-11-20 07:11:23Z imp $
+ * $FreeBSD: head/sys/sys/time.h 346176 2019-04-13 04:46:35Z imp $
*/
#ifndef _SYS_TIME_H_
@@ -191,8 +191,15 @@ sbttobt(sbintime_t _sbt)
static __inline int64_t
sbttons(sbintime_t _sbt)
{
+ uint64_t ns;
- return ((1000000000 * _sbt) >> 32);
+ ns = _sbt;
+ if (ns >= SBT_1S)
+ ns = (ns >> 32) * 1000000000;
+ else
+ ns = 0;
+
+ return (ns + (1000000000 * (_sbt & 0xffffffffu) >> 32));
}
static __inline sbintime_t
--
2.16.4
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 0/4] Synchronize <sys/time.h>, etc. with FreeBSD
@ 2019-09-24 7:01 Sebastian Huber
2019-09-24 7:01 ` [PATCH 3/4] Synchronize <sys/time.h> " Sebastian Huber
` (5 more replies)
0 siblings, 6 replies; 8+ messages in thread
From: Sebastian Huber @ 2019-09-24 7:01 UTC (permalink / raw)
To: newlib
Sebastian Huber (3):
Synchronize <sys/_timespec.h> with FreeBSD
Synchronize <sys/time.h> with FreeBSD
Move timeval macros to <sys/time.h>
imp (1):
Fix sbttons for values > 2s
newlib/libc/include/sys/_timespec.h | 6 ++--
newlib/libc/include/sys/_timeval.h | 35 ++------------------
newlib/libc/include/sys/time.h | 66 +++++++++++++++++++++++++++++++++++--
3 files changed, 71 insertions(+), 36 deletions(-)
--
2.16.4
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 4/4] Move timeval macros to <sys/time.h>
2019-09-24 7:01 [PATCH 0/4] Synchronize <sys/time.h>, etc. with FreeBSD Sebastian Huber
2019-09-24 7:01 ` [PATCH 3/4] Synchronize <sys/time.h> " Sebastian Huber
2019-09-24 7:01 ` [PATCH 1/4] Fix sbttons for values > 2s Sebastian Huber
@ 2019-09-24 7:01 ` Sebastian Huber
2019-09-24 7:01 ` [PATCH 2/4] Synchronize <sys/_timespec.h> with FreeBSD Sebastian Huber
` (2 subsequent siblings)
5 siblings, 0 replies; 8+ messages in thread
From: Sebastian Huber @ 2019-09-24 7:01 UTC (permalink / raw)
To: newlib
In FreeBSD, NetBSD, and OpenBSD these macros are defined in
<sys/time.h>.
---
newlib/libc/include/sys/_timeval.h | 35 +++--------------------------------
newlib/libc/include/sys/time.h | 28 ++++++++++++++++++++++++++++
2 files changed, 31 insertions(+), 32 deletions(-)
diff --git a/newlib/libc/include/sys/_timeval.h b/newlib/libc/include/sys/_timeval.h
index 676a0b894..6b250c0d0 100644
--- a/newlib/libc/include/sys/_timeval.h
+++ b/newlib/libc/include/sys/_timeval.h
@@ -1,4 +1,6 @@
/*-
+ * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+ *
* Copyright (c) 2002 Mike Barcroft <mike@FreeBSD.org>
* All rights reserved.
*
@@ -23,7 +25,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $FreeBSD$
+ * $FreeBSD: head/sys/sys/_timeval.h 326256 2017-11-27 15:01:59Z pfg $
*/
#ifndef _SYS__TIMEVAL_H_
@@ -53,37 +55,6 @@ struct timeval {
time_t tv_sec; /* seconds */
suseconds_t tv_usec; /* and microseconds */
};
-
-#if __BSD_VISIBLE
-#ifndef _KERNEL /* NetBSD/OpenBSD compatible interfaces */
-
-#define timerclear(tvp) ((tvp)->tv_sec = (tvp)->tv_usec = 0)
-#define timerisset(tvp) ((tvp)->tv_sec || (tvp)->tv_usec)
-#define timercmp(tvp, uvp, cmp) \
- (((tvp)->tv_sec == (uvp)->tv_sec) ? \
- ((tvp)->tv_usec cmp (uvp)->tv_usec) : \
- ((tvp)->tv_sec cmp (uvp)->tv_sec))
-#define timeradd(tvp, uvp, vvp) \
- do { \
- (vvp)->tv_sec = (tvp)->tv_sec + (uvp)->tv_sec; \
- (vvp)->tv_usec = (tvp)->tv_usec + (uvp)->tv_usec; \
- if ((vvp)->tv_usec >= 1000000) { \
- (vvp)->tv_sec++; \
- (vvp)->tv_usec -= 1000000; \
- } \
- } while (0)
-#define timersub(tvp, uvp, vvp) \
- do { \
- (vvp)->tv_sec = (tvp)->tv_sec - (uvp)->tv_sec; \
- (vvp)->tv_usec = (tvp)->tv_usec - (uvp)->tv_usec; \
- if ((vvp)->tv_usec < 0) { \
- (vvp)->tv_sec--; \
- (vvp)->tv_usec += 1000000; \
- } \
- } while (0)
-#endif
-#endif /* __BSD_VISIBLE */
-
#endif /* _TIMEVAL_DEFINED */
#endif /* !_SYS__TIMEVAL_H_ */
diff --git a/newlib/libc/include/sys/time.h b/newlib/libc/include/sys/time.h
index 370c13406..84a429bf2 100644
--- a/newlib/libc/include/sys/time.h
+++ b/newlib/libc/include/sys/time.h
@@ -367,6 +367,34 @@ tvtosbt(struct timeval _tv)
(vsp)->tv_nsec += 1000000000L; \
} \
} while (0)
+
+#ifndef _KERNEL /* NetBSD/OpenBSD compatible interfaces */
+
+#define timerclear(tvp) ((tvp)->tv_sec = (tvp)->tv_usec = 0)
+#define timerisset(tvp) ((tvp)->tv_sec || (tvp)->tv_usec)
+#define timercmp(tvp, uvp, cmp) \
+ (((tvp)->tv_sec == (uvp)->tv_sec) ? \
+ ((tvp)->tv_usec cmp (uvp)->tv_usec) : \
+ ((tvp)->tv_sec cmp (uvp)->tv_sec))
+#define timeradd(tvp, uvp, vvp) \
+ do { \
+ (vvp)->tv_sec = (tvp)->tv_sec + (uvp)->tv_sec; \
+ (vvp)->tv_usec = (tvp)->tv_usec + (uvp)->tv_usec; \
+ if ((vvp)->tv_usec >= 1000000) { \
+ (vvp)->tv_sec++; \
+ (vvp)->tv_usec -= 1000000; \
+ } \
+ } while (0)
+#define timersub(tvp, uvp, vvp) \
+ do { \
+ (vvp)->tv_sec = (tvp)->tv_sec - (uvp)->tv_sec; \
+ (vvp)->tv_usec = (tvp)->tv_usec - (uvp)->tv_usec; \
+ if ((vvp)->tv_usec < 0) { \
+ (vvp)->tv_sec--; \
+ (vvp)->tv_usec += 1000000; \
+ } \
+ } while (0)
+#endif
#endif /* __BSD_VISIBLE */
/*
--
2.16.4
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 2/4] Synchronize <sys/_timespec.h> with FreeBSD
2019-09-24 7:01 [PATCH 0/4] Synchronize <sys/time.h>, etc. with FreeBSD Sebastian Huber
` (2 preceding siblings ...)
2019-09-24 7:01 ` [PATCH 4/4] Move timeval macros to <sys/time.h> Sebastian Huber
@ 2019-09-24 7:01 ` Sebastian Huber
2019-10-14 6:57 ` [PATCH 0/4] Synchronize <sys/time.h>, etc. " Sebastian Huber
2019-11-02 15:26 ` Corinna Vinschen
5 siblings, 0 replies; 8+ messages in thread
From: Sebastian Huber @ 2019-09-24 7:01 UTC (permalink / raw)
To: newlib
---
newlib/libc/include/sys/_timespec.h | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/newlib/libc/include/sys/_timespec.h b/newlib/libc/include/sys/_timespec.h
index 7609e4a46..f810b008f 100644
--- a/newlib/libc/include/sys/_timespec.h
+++ b/newlib/libc/include/sys/_timespec.h
@@ -1,4 +1,6 @@
/*-
+ * SPDX-License-Identifier: BSD-3-Clause
+ *
* Copyright (c) 1982, 1986, 1993
* The Regents of the University of California. All rights reserved.
*
@@ -10,7 +12,7 @@
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
- * 4. Neither the name of the University nor the names of its contributors
+ * 3. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
@@ -28,7 +30,7 @@
*
* @(#)time.h 8.5 (Berkeley) 5/4/95
* from: FreeBSD: src/sys/sys/time.h,v 1.43 2000/03/20 14:09:05 phk Exp
- * $FreeBSD$
+ * $FreeBSD: head/sys/sys/_timespec.h 326023 2017-11-20 19:43:44Z pfg $
*/
#ifndef _SYS__TIMESPEC_H_
--
2.16.4
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 0/4] Synchronize <sys/time.h>, etc. with FreeBSD
2019-09-24 7:01 [PATCH 0/4] Synchronize <sys/time.h>, etc. with FreeBSD Sebastian Huber
` (3 preceding siblings ...)
2019-09-24 7:01 ` [PATCH 2/4] Synchronize <sys/_timespec.h> with FreeBSD Sebastian Huber
@ 2019-10-14 6:57 ` Sebastian Huber
2019-10-31 7:05 ` Sebastian Huber
2019-11-02 15:26 ` Corinna Vinschen
5 siblings, 1 reply; 8+ messages in thread
From: Sebastian Huber @ 2019-10-14 6:57 UTC (permalink / raw)
To: newlib
Ping.
On 24/09/2019 09:00, Sebastian Huber wrote:
> Sebastian Huber (3):
> Synchronize <sys/_timespec.h> with FreeBSD
> Synchronize <sys/time.h> with FreeBSD
> Move timeval macros to <sys/time.h>
>
> imp (1):
> Fix sbttons for values > 2s
>
> newlib/libc/include/sys/_timespec.h | 6 ++--
> newlib/libc/include/sys/_timeval.h | 35 ++------------------
> newlib/libc/include/sys/time.h | 66 +++++++++++++++++++++++++++++++++++--
> 3 files changed, 71 insertions(+), 36 deletions(-)
>
--
Sebastian Huber, embedded brains GmbH
Address : Dornierstr. 4, D-82178 Puchheim, Germany
Phone : +49 89 189 47 41-16
Fax : +49 89 189 47 41-09
E-Mail : sebastian.huber@embedded-brains.de
PGP : Public key available on request.
Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 0/4] Synchronize <sys/time.h>, etc. with FreeBSD
2019-10-14 6:57 ` [PATCH 0/4] Synchronize <sys/time.h>, etc. " Sebastian Huber
@ 2019-10-31 7:05 ` Sebastian Huber
0 siblings, 0 replies; 8+ messages in thread
From: Sebastian Huber @ 2019-10-31 7:05 UTC (permalink / raw)
To: newlib
Would someone mind having a look at this. I would like to build a new
set of RTEMS tools after the Newlib update.
--
Sebastian Huber, embedded brains GmbH
Address : Dornierstr. 4, D-82178 Puchheim, Germany
Phone : +49 89 189 47 41-16
Fax : +49 89 189 47 41-09
E-Mail : sebastian.huber@embedded-brains.de
PGP : Public key available on request.
Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 0/4] Synchronize <sys/time.h>, etc. with FreeBSD
2019-09-24 7:01 [PATCH 0/4] Synchronize <sys/time.h>, etc. with FreeBSD Sebastian Huber
` (4 preceding siblings ...)
2019-10-14 6:57 ` [PATCH 0/4] Synchronize <sys/time.h>, etc. " Sebastian Huber
@ 2019-11-02 15:26 ` Corinna Vinschen
5 siblings, 0 replies; 8+ messages in thread
From: Corinna Vinschen @ 2019-11-02 15:26 UTC (permalink / raw)
To: Sebastian Huber; +Cc: newlib
[-- Attachment #1: Type: text/plain, Size: 628 bytes --]
On Sep 24 09:00, Sebastian Huber wrote:
> Sebastian Huber (3):
> Synchronize <sys/_timespec.h> with FreeBSD
> Synchronize <sys/time.h> with FreeBSD
> Move timeval macros to <sys/time.h>
>
> imp (1):
> Fix sbttons for values > 2s
>
> newlib/libc/include/sys/_timespec.h | 6 ++--
> newlib/libc/include/sys/_timeval.h | 35 ++------------------
> newlib/libc/include/sys/time.h | 66 +++++++++++++++++++++++++++++++++++--
> 3 files changed, 71 insertions(+), 36 deletions(-)
>
> --
> 2.16.4
Looks good, please push.
Thanks,
Corinna
--
Corinna Vinschen
Cygwin Maintainer
Red Hat
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2019-11-02 15:26 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-09-24 7:01 [PATCH 0/4] Synchronize <sys/time.h>, etc. with FreeBSD Sebastian Huber
2019-09-24 7:01 ` [PATCH 3/4] Synchronize <sys/time.h> " Sebastian Huber
2019-09-24 7:01 ` [PATCH 1/4] Fix sbttons for values > 2s Sebastian Huber
2019-09-24 7:01 ` [PATCH 4/4] Move timeval macros to <sys/time.h> Sebastian Huber
2019-09-24 7:01 ` [PATCH 2/4] Synchronize <sys/_timespec.h> with FreeBSD Sebastian Huber
2019-10-14 6:57 ` [PATCH 0/4] Synchronize <sys/time.h>, etc. " Sebastian Huber
2019-10-31 7:05 ` Sebastian Huber
2019-11-02 15:26 ` Corinna Vinschen
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).