Commit Graph

43 Commits

Author SHA1 Message Date
riastradh 2b5e567d9c libc: Reintroduce getentropy.
This was introduced two years ago when the getrandom/getentropy API
question was still open, and removed because the discussion was
ongoing.  Now getentropy is more widely adopted and soon to be in
POSIX.  So reintroduce the symbol into libc since we'll be keeping it
anyway.  Discussion of details of the semantics, as interpreted by
NetBSD, is ongoing, but the symbol needs to get in before the
netbsd-10 branch.  The draft POSIX text is
(https://www.opengroup.org/austin/docs/austin_1110.pdf):

    SYNOPSIS
        #include <unistd.h>

        int getentropy(void *buffer, size_t length);

    DESCRIPTION
        The getentropy() function shall write length bytes of data
        starting at the location pointed to by buffer. The output
        shall be unpredictable high quality random data, generated by
        a cryptographically secure pseudo-random number
        generator. The maximum permitted value for the length
        argument is given by the {GETENTROPY_MAX} symbolic constant
        defined in <limits.h>.

    RETURN VALUES
        Upon successful completion, getentropy() shall return 0;
        otherwise, -1 shall be retunred and errno set to indicate the
        error.

    ERRORS
        The getentropy() function shall fail if:

        [EINVAL]        The value of length is greater than
                        {GETENTROPY_MAX}.

        The getentropy() function may fail if:

        [ENOSYS]        The system does not provide the necessary
                        source of entropy.

    RATIONALE
        The getentropy() function is not a cancellation point.

Minor changes from the previous introduction of getentropy into libc:

- Return EINVAL, not EIO, on buflen > 256.
- Define GETENTROPY_MAX in limits.h.

The declaration of getentropy in unistd.h and definition of
GETENTROPY_MAX in limits.h are currently conditional on
_NETBSD_SOURCE.  When the next revision of POSIX is finalized, we can
expose them also under _POSIX_C_SOURCE > 20yymmL as usual -- and this
can be done as a pullup without breaking existing compiled programs.
2022-05-31 13:42:58 +00:00
christos 06dda90b75 remove comment for incomplete x/open impl (kamil) 2019-09-15 23:52:59 +00:00
christos 9dd780b230 Remove the _INCOMPLETE_XOPEN_C063 stuff. 2019-09-15 23:41:00 +00:00
christos c10c4abe0f Realtime signal support from GSoC 2016, Charles Cui. 2016-08-04 06:43:43 +00:00
njoly d1b4525986 According to Opengroup online specifications[1], _POSIX_CPUTIME and
_POSIX_THREAD_CPUTIME options should be present in unistd.h not
limits.h. Move them with other options.

[1] http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/unistd.h.html
2016-07-21 16:01:58 +00:00
christos ea2913a0a2 GSoC 2016: Charles Cui: Add timer related macros
_POSIX_CPUTIME
    _POSIX_THREAD_CPUTIME
    _POSIX_DELAYTIMER_MAX
2016-06-10 23:29:20 +00:00
christos 0196f35dd1 GSoC 2016: Charles Cui: add SEM_NSEMS_MAX 2016-06-10 23:24:33 +00:00
christos 53a91c7008 - GC pts_fired, and fix the comment about MAX_TIMERS
- Bump MAX_TIMERS to 36 so that we have 32 POSIX user timers which is the
  minimum required.
2016-03-08 05:02:55 +00:00
christos 68cdf08b32 We only have 28 timers available. 2016-02-26 17:10:23 +00:00
manu 841339f07f Make PTHREAD_KEYS_MAX dynamically adjustable
NetBSD's PTHREAD_KEYS_MAX is set to 256, which is low compared to
other systems like Linux (1024) or MacOS X (512). As a result some
setups tested on Linux will exhibit problems on NetBSD because of
pthread_keys usage beyond the limit. This happens for instance on
Apache with various module loaded, and in this case no particular
developper can be blamed for going beyond the limit, since several
modules from different sources contribute to the problem.

This patch makes the limit conigurable through the PTHREAD_KEYS_MAX
environement variable. If undefined, the default remains unchanged
(256). In any case, the value cannot be lowered below POSIX-mandated
_POSIX_THREAD_KEYS_MAX (128).

While there:
- use EXIT_FAILURE instead of 1 when calling err(3) in libpthread.
- Reset _POSIX_THREAD_KEYS_MAX to POSIX mandated 128, instead of 256.
2015-05-29 07:37:31 +00:00
manu a76c1cc17f Add most system calls for POSIX extended API set, part 2, with test cases:
faccessat(2), fchmodat(2), fchownat(2), fstatat(2), mkdirat(2), mkfifoat(2),
mknodat(2), linkat(2), readlinkat(2), symlinkat(2), renameat(2), unlinkat(2),
utimensat(2), openat(2).

Also implement O_SEARCH for openat(2)

Still missing:
- some flags for openat(2)
- fexecve(2) implementation
2012-11-18 17:41:51 +00:00
christos 20331437fc make CHAR_{MIN,MAX} work for both -fsigned-char and -funsigned-char 2012-03-28 17:04:41 +00:00
christos d69c1b55d9 Fix pthreads variables:
- Add missing stuff from Issue 6 (some of it commented out)
- Fix _POSIX_THREAD -> PTHREAD variable confusion
- Amend PTHREAD_KEYS_MAX to 256 since this is what libpthread defined internally
2011-10-06 16:02:52 +00:00
manu 2a4490f2fd Add macros to hide OpenGroup extened API set 2 from GNU configure. This
is a temporary  workaround until the implementation is completed.
2011-08-16 07:55:29 +00:00
tnozaki 9efec5bce3 1. MB_LEN_MAX switch MD to MI.
2. unfortunately hppa's MB_LEN_MAX is defined incorrectly 6 instead of 32
   so we have to add more setlocale(3) __RENAME func, __setlocale50.
3. move setlocale1.c and setlocale32.c to lib/libc/compat/locale/*
   prepareing for next libc major crunk.
4. bump libc minor version.
2010-06-07 13:52:28 +00:00
christos e9d445137d Make _POSIX_TZNAME_MAX=6 per SUSv3, from Andy Shevchenko 2008-08-27 08:53:55 +00:00
matt e90b08472f Add _POSIX_HOST_NAME_MAX and _POSIX_SYMLOOP_MAX to <limits.h> and add some
references to them in <sys/param.h>
in <stdio.h> also export v*scanf when _ISOC99_SOURCE is defined

From andy dot shevchenko at gmail dot com.
2008-08-04 17:08:49 +00:00
rmind 9861030b19 - Correct the value of _POSIX_SYMLINK_MAX as defined in standard.
Closes PR/37007 by Ighighi.
- While here, increase _POSIX_CHILD_MAX as suggested by standard.
2007-09-21 01:41:43 +00:00
rmind 2cecf9bbe9 Implementation of POSIX message queues.
Reviewed by: <ad>, <tech-kern>
2007-09-07 18:56:02 +00:00
rmind 0994dd0691 - Create sysctl nodes for AIO.
- Add POSIX defined system variables and constants of AIO_LISTIO_MAX and
  AIO_MAX values.  Both with _POSIX_ASYNCHRONOUS_IO, provide them in
  sysconf(3) and getconf(1) interfaces.
- Clean up sysconf(3) for handling sysctl nodes dynamically.
2007-05-01 01:01:25 +00:00
lukem 246f6fd919 Implement sysconf(3) _SC_GETGR_R_SIZE_MAX and _SC_GETPW_R_SIZE_MAX for
the 1003.1-2001 Thread Safe Functions (TSF) getgrnam_r(3) and getpwnam_r(3).

These are not implemented in sysctl(3) "user.*", since that adds a lot
of complexity in the implementation for no real benefit.
2004-11-10 04:02:52 +00:00
agc 039cc95684 Move UCB-licensed code from 4-clause to 3-clause licence.
Patches provided by Joel Baker in PR 22270, verified by myself.
2003-08-07 09:44:09 +00:00
nathanw c35f5dd38e Add the _POSIX_THREAD and _POSIX_TIMER mandated minimum limits. 2003-07-16 21:03:54 +00:00
bjh21 4be7a2dcf3 Add a new feature-test macro, _NETBSD_SOURCE. If this is defined
by the application, all NetBSD interfaces are made visible, even
if some other feature-test macro (like _POSIX_C_SOURCE) is defined.
<sys/featuretest.h> defined _NETBSD_SOURCE if none of _ANSI_SOURCE,
_POSIX_C_SOURCE and _XOPEN_SOURCE is defined, so as to preserve
existing behaviour.

This has two major advantages:
+ Programs that require non-POSIX facilities but define _POSIX_C_SOURCE
  can trivially be overruled by putting -D_NETBSD_SOURCE in their CFLAGS.
+ It makes most of the #ifs simpler, in that they're all now ORs of the
  various macros, rather than having checks for (!defined(_ANSI_SOURCE) ||
  !defined(_POSIX_C_SOURCE) || !defined(_XOPEN_SOURCE)) all over the place.

I've tried not to change the semantics of the headers in any case where
_NETBSD_SOURCE wasn't defined, but there were some places where the
current semantics were clearly mad, and retaining them was harder than
correcting them.  In particular, I've mostly normalised things so that
_ANSI_SOURCE gets you the smallest set of stuff, then _POSIX_C_SOURCE,
_XOPEN_SOURCE and _NETBSD_SOURCE in that order.

Tested by building for vax, encouraged by thorpej, and uncontested in
tech-userlevel for a week.
2003-04-28 23:16:11 +00:00
christos c6e0fe9a2b oops, erased word accidentally. 2003-01-18 17:12:13 +00:00
christos 32c802c315 avoid TMP_MAX redefinition 2003-01-18 17:10:16 +00:00
kleink 4f7792917a Update for 1003.1-2001 base and XSI changes. 2002-11-18 13:39:33 +00:00
soren b377ecd704 Back out previous - I was confused. 2002-08-04 18:06:54 +00:00
soren f745d16995 Per IEEE 1003.1-2001, omit from <limits.h> those Pathname Variable Values
that may vary between filesystems: _POSIX_LINK_MAX, _POSIX_NAME_MAX, and
_POSIX_PATH_MAX. These are to be obtained from pathconf() instead.
2002-08-04 05:41:58 +00:00
soren c6f042d6fc As of IEEE (POSIX) 1003.1-2001, _POSIX_PATH_MAX must be at least 256 rather
than 255 and is now defined to include the terminating NUL.
2002-08-04 05:22:34 +00:00
kleink c13a492388 1003.1c: add {LOGIN_NAME_MAX}. 1999-09-27 16:24:39 +00:00
kleink aa6fca1b7e Bump NL_TEXTMAX to 2048 (== _POSIX2_LINE_MAX, which is the minimum value
required by XSH5.)
1999-09-06 22:20:50 +00:00
kleink 5cc8c171be Per XSH5, define _XOPEN_IOV_MAX. 1998-08-03 14:32:04 +00:00
kleink 2fc150acf9 For the sake of XPG3 and later, provide TMP_MAX; consistent with the defintion
in <stdio.h>.  Also, rearrange name space protection a bit.
1998-07-08 19:51:25 +00:00
perry b7b7322c68 merge lite-2 1998-02-02 21:07:13 +00:00
jtc e70a51b66e Fix typo: _POSIX_SSIZE_MAX was set to wrong value 1996-10-21 05:10:50 +00:00
cgd 4d2cbfce0a new RCS ID format. 1994-10-26 00:55:40 +00:00
jtc badcc17a6d Add constants required by XPG3 1994-10-05 17:16:29 +00:00
jtc 0132d3aed8 POSIX2_VERSION macro is supposed to live in <unistd.h> 1993-10-12 21:56:55 +00:00
jtc aacd6cfa4e Do not #define the _POSIX_FOO constants if compliling in strict ANSI mode.
Define the _POSIX_SSIZE_MAX, _POSIX_STREAM_MAX, and _POSIX_TZNAME_MAX constants
added in 1003.1-90.
1993-09-24 18:13:15 +00:00
jtc 9568c8896f POSIX_EQUIV_CLASS_MAX was renamed POSIX_COLL_WEIGHTS_MAX in final draft
of POSIX.2.
Added definintion for _POSIX2_VERSION.
1993-09-21 21:55:40 +00:00
mycroft e9d867ef50 Add RCS identifiers. 1993-08-01 17:54:45 +00:00
cgd 61f282557f initial import of 386bsd-0.1 sources 1993-03-21 09:45:37 +00:00