All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v4] getrlimit.2: old_getrlimit/ugetrlimit and RLIM_INFINITY discrepancies
@ 2021-07-30  0:15 Eugene Syromyatnikov
  0 siblings, 0 replies; only message in thread
From: Eugene Syromyatnikov @ 2021-07-30  0:15 UTC (permalink / raw)
  To: linux-man; +Cc: Alejandro Colomar

Historically, Linux didn't follow SUS with respect to RLIM_INFINITY
signedness; it was changed during 2.4 development cycle, but in somewhat
peculiar and arch-dependent fashion due to backward compatibility
concerns.

Signed-off-by: Eugene Syromyatnikov <evgsyr@gmail.com>
---
 man2/getrlimit.2 | 34 ++++++++++++++++++++++++++++++++++
 1 file changed, 34 insertions(+)

diff --git a/man2/getrlimit.2 b/man2/getrlimit.2
index 648fd3c..df392a5 100644
--- a/man2/getrlimit.2
+++ b/man2/getrlimit.2
@@ -646,6 +646,40 @@ The name of the glibc wrapper function is
 .BR prlimit ();
 the underlying system call is
 .BR prlimit64 ().
+The corresponding infinity value constant is provided in
+.I <linux/resource.h>
+as
+.BR RLIM64_INFINITY.
+.PP
+Linux 2.2 and earlier versions used signed types for limits;
+that was changed
+(along with the value of
+.BR RLIM_INFINITY )
+.\" http://repo.or.cz/davej-history.git/blobdiff/129f8758d8c41e0378ace0b6e2f56bbb8a1ec694..15305d2e69c3a838bacd78962c07077d2821f255:/include/linux/resource.h
+during the 2.4 development cycle,
+as it was not compatible with the Single UNIX Specification.
+However, in order to preserve backward compatibility,
+the routine
+.IR sys_old_getrlimit
+was implemented for the
+.B __NR_getrlimit
+syscall slot,
+with infinity checks being performed against a literal 0x7fffffff value,
+and
+.I sys_getrlimit
+has been exposed under a new name,
+.BR ugetrlimit ().
+Most newer architectures do not have the latter, with
+.BR getrlimit ()
+providing the conforming implementation.
+However, several architectures decided not to change the
+.B RLIM_INFINITY
+value: 32-bit MIPS and SPARC
+(but not 64-bit variants, that switched to the new value of (~0UL))
+retained the old 0x7fffffff value,
+and Alpha retained 0x7ffffffffffffffful.
+.\" ...along with a request to call when one runs into it:
+.\" https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/alpha/include/uapi/asm/resource.h#n15
 .SH BUGS
 In older Linux kernels, the
 .B SIGXCPU
-- 
2.1.4


^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2021-07-30  0:15 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-07-30  0:15 [PATCH v4] getrlimit.2: old_getrlimit/ugetrlimit and RLIM_INFINITY discrepancies Eugene Syromyatnikov

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.