Date: Wed, 16 Oct 2019 20:21:09 +0000 From: co...@sdf.org Message-ID: <20191016202109.ga15...@sdf.org>
| > and define _POSIX_RTSIG_MAX to 8 in limits.h | | What is POSIX thinking with that requirement...? That this value is a number that simply specifies the minimum requirement for any system (any supporting the real time extension - does NetBSD really do that, I know that we have real time signal numbers defined, but is the rest of the real time extension implementged?) This isn't really intended to reflect anything that exists, and the only time an application should ever use it would be if it wanted to write code in a way that is guaranteed to work on all implementations (doesn't assume more real time signals than some implementation might provide) without bothering to write the code in a way that it adapts to the number actuallu available. The intro to the section that defines this (and many other similar) says: Minimum Values The <limits.h> header shall define the following symbolic constants with the values shown. These are the most restrictive values for certain features on an implementation conforming to this volume of POSIX.1-2017. Related symbolic constants are defined elsewhere in this volume of POSIX.1-2017 which reflect the actual implementation and which need not be as restrictive. For each of these limits, a conforming implementation shall provide a value at least this large or shall have no limit. A strictly conforming application must not require a larger value for correct operation. The "these limits" in the penultimate sentence there refers to the "Related symbolic constants are defined elsewhere..." definitions. As an example of a similar value (with a similar purpose) {_POSIX_ARG_MAX} Maximum length of argument to the exec functions including environment data. Value: 4 096 And sure enough in <limits.h> we have: #define _POSIX_ARG_MAX 4096 That doesn't mean we only allow 4K bytes of args, just that POSIX guarantees that that many will work anywhere, and if an app wants. it can simply assume that - but nothing bigger. In general apps query the actual values allowed, rather than using these low end required minimums. kre