missing parts to time64 switchover

Submitted by Rich Felker on Nov. 1, 2019, 8:04 p.m.

Details

Message ID 20191101200453.GO16318@brightrain.aerifal.cx
State New
Series "missing parts to time64 switchover"
Headers show

Commit Message

Rich Felker Nov. 1, 2019, 8:04 p.m.
On Fri, Nov 01, 2019 at 10:56:17AM -0400, Rich Felker wrote:
> The time64 switchover I had been testing and hoped to push yesterday
> turned out to be missing the ioctl and sockopt bits, which I
> eventually remembered I'd omitted in the late-summer i386-only draft
> because making a bunch more archs have arch variants for these did not
> seem fun. So, I've worked out some changes to allow top-level socket.h
> to do a lot more. The msghdr move is pretty much orthogonal, aside
> from interaction with x32.
> 
> It's probably not perfect at this point, but I think it's an
> improvement, and short of errors good enough to commit. It brings
> things closer to a state of only needing arch-specific bits for archs
> that actually do weird things, rather than repeating things that are
> universal to all 32-bit archs or all 64-bit archs on a per-arch basis.
> 
> These patches should apply ok on the last time64 switchover draft
> posted to the list. But I'm posting them more for the sake of a (very
> brief) comment period about what they're doing, and to have a record
> of them as individual patches -- some of them will be squashed since
> they yield ABI-inconsistent revisions if left split.

I left out the first patch of this series, attached. Unfortunately it
had a bug: without changes to the bits headers, it caused
SO_TIMESTAMP* definitions to disappear from archs that define their
own SO_RCVTIMEO (powerpc* and mips*).

It will be fixed by separating these out into 2 groups with separate
#ifdefs.

Rich
From 057a15f272f28c97b44a266227b1c834db566777 Mon Sep 17 00:00:00 2001
From: Rich Felker <dalias@aerifal.cx>
Date: Thu, 31 Oct 2019 16:48:30 -0400
Subject: [PATCH] make time-related socket options overridable by arch bits
 files

---
 include/sys/socket.h | 14 ++++++++------
 1 file changed, 8 insertions(+), 6 deletions(-)

Patch hide | download patch | download mbox

diff --git a/include/sys/socket.h b/include/sys/socket.h
index 318a98ef..04077654 100644
--- a/include/sys/socket.h
+++ b/include/sys/socket.h
@@ -182,8 +182,6 @@  struct linger {
 #define SO_PEERCRED     17
 #define SO_RCVLOWAT     18
 #define SO_SNDLOWAT     19
-#define SO_RCVTIMEO     20
-#define SO_SNDTIMEO     21
 #define SO_ACCEPTCONN   30
 #define SO_PEERSEC      31
 #define SO_SNDBUFFORCE  32
@@ -192,6 +190,14 @@  struct linger {
 #define SO_DOMAIN       39
 #endif
 
+#ifndef SO_RCVTIMEO
+#define SO_RCVTIMEO     20
+#define SO_SNDTIMEO     21
+#define SO_TIMESTAMP    29
+#define SO_TIMESTAMPNS  35
+#define SO_TIMESTAMPING 37
+#endif
+
 #define SO_SECURITY_AUTHENTICATION              22
 #define SO_SECURITY_ENCRYPTION_TRANSPORT        23
 #define SO_SECURITY_ENCRYPTION_NETWORK          24
@@ -203,14 +209,10 @@  struct linger {
 #define SO_GET_FILTER           SO_ATTACH_FILTER
 
 #define SO_PEERNAME             28
-#define SO_TIMESTAMP            29
 #define SCM_TIMESTAMP           SO_TIMESTAMP
-
 #define SO_PASSSEC              34
-#define SO_TIMESTAMPNS          35
 #define SCM_TIMESTAMPNS         SO_TIMESTAMPNS
 #define SO_MARK                 36
-#define SO_TIMESTAMPING         37
 #define SCM_TIMESTAMPING        SO_TIMESTAMPING
 #define SO_RXQ_OVFL             40
 #define SO_WIFI_STATUS          41