NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: kern/58929: POSIX.1-2024 compliance: posix_close, POSIX_CLOSE_RESTART
The following reply was made to PR kern/58929; it has been noted by GNATS.
From: Robert Elz <kre%munnari.OZ.AU@localhost>
To: Taylor R Campbell <riastradh%NetBSD.org@localhost>
Cc: gnats-bugs%NetBSD.org@localhost, netbsd-bugs%NetBSD.org@localhost
Subject: Re: kern/58929: POSIX.1-2024 compliance: posix_close, POSIX_CLOSE_RESTART
Date: Sun, 22 Dec 2024 10:45:54 +0700
Date: Sat, 21 Dec 2024 22:07:19 +0000
From: Taylor R Campbell <riastradh%NetBSD.org@localhost>
Message-ID: <20241221220723.04ECB84E92%mail.netbsd.org@localhost>
| So, in order to deal with POSIX.1-2024 having addressed the problem of
| its own failure to adequately specify semantics by breaking
| compatibility with every major OS on the planet, it looks like we'll
| have to do some symbol magic under _POSIX_C_SOURCE -- something like
| this:
Surely all we need is...
| /* include/unistd.h */
|
| #if (_POSIX_C_SOURCE >= 202408L) && !defined(_NETBSD_SOURCE)
| int posix_close(int, int);
| #define POSIX_CLOSE_RESTART 0
| #endif
| int close(int);
| int
| posix_close(int d, int flag)
| {
| const int ret = close(d);
|
| _DIAGASSERT(ret == 0 || errno != EINTR);
|
| if (ret == 0 && flag != 0) {
| errno = EINVAL;
| ret = -1;
| }
| return ret;
| }
Along with:
Index: sys_descrip.c
===================================================================
RCS file: /cvsroot/src/sys/kern/sys_descrip.c,v
retrieving revision 1.40
diff -u -r1.40 sys_descrip.c
--- sys_descrip.c 16 Apr 2022 07:59:02 -0000 1.40
+++ sys_descrip.c 22 Dec 2024 03:36:00 -0000
@@ -519,7 +519,7 @@
printf("%s[%d]: close(%d) returned ERESTART\n",
l->l_proc->p_comm, (int)l->l_proc->p_pid, fd);
#endif
- error = EINTR;
+ error = 0;
}
return error;
where that 0 could be EINPROGRESS if anyone really believes that
conveys any information anyone would ever use (what? how?)
kre
Home |
Main Index |
Thread Index |
Old Index