aboutsummaryrefslogtreecommitdiff
path: root/include
Commit message (Collapse)AuthorAgeFilesLines
* include: Fix typosElyes Haouas2023-02-224-4/+4
| | | | Signed-off-by: Elyes Haouas <ehaouas@noos.fr>
* Revert "stdlib.h: Fix qsort_r compatibility with GCC 12."John Baldwin2023-01-271-6/+0
| | | | | | | This reverts commit 43703bc489ec504b947b869045c492ed38c1a69c. Reviewed by: jrtc27 Differential Revision: https://reviews.freebsd.org/D38216
* byteswap.h: Add a glibc/linux compatible byteswap.hWarner Losh2023-01-202-1/+43
| | | | | | | | | | | | For endian.h to work instead of sys/endian.h, some software needs byteswap.h available. It must define {__,}byteswap_{16,32,64}. Included sys/_endian.h to get an appropriate __byteswap16, etc and defines the new macros in terms of them. Enhance _endian.h to allow it to be included from here too. Sponsored by: Netflix Reviewed by: markj Differential Revision: https://reviews.freebsd.org/D32051
* linux: For better compatibility, provide compatible endian.hWarner Losh2023-01-202-2/+45
| | | | | | | | | | | | | | | | | | | | | | | | | | Add endian.h. This includes sys/endian.h and then adds extra defines that glibc defines with double underscores for our _{BIG,BYTE,LITTLE,PDP}_ENDIAN macros. We also define __FLOAT_WORD_ORDER to be the same as _BYTE_ENDIAN since FreeBSD doesn't currently define this, and the default with glibc is exactly this for our platforms. Move common parts of endian.h and sys/endian.h into sys/_endian.h to limit namespace pollution from endian.h All this gives us good compatibility with Linux. There may be one or two upstreams that haven't integrated the patches I tried to send up. There are some minor differences: o The extra glibc macros are not defined. These are all controlled with either __ at the start, or only defined when glibc is being built. We also don't define macros that are used internally in glibc that would pollute the namespace. o For complete compatibility, this change must also be paired with providing a glibc-compatible byteswap.h. Sponsored by: Netflix Reviewed by: mhorne, markj, jhb Differential Revision: https://reviews.freebsd.org/D31962
* stdlib.h: Fix qsort_r compatibility with GCC 12.John Baldwin2023-01-191-0/+6
| | | | | | | | | | | GCC 12 (unlike GCC 9) does not match a function argument passed to the old qsort_r() API (as is used in the qsort_r_compat test) to a function pointer type via __generic. It treats the function type as a distinct type from a function pointer. As a workaround, add a second definition of qsort_r for GCC 12 which uses the bare function type. Reviewed by: emaste Differential Revision: https://reviews.freebsd.org/D37410
* include: put includes into -dev packagesKyle Evans2022-11-101-7/+7
| | | | | | | | | | | | | | | | | | | The includes build is kind of funky, as we support either copying or symlinking files into /usr/include. For `copies`, we were supplying the include/ ${TAG_ARGS}, which puts packages into `FreeBSD-runtime`, without any consideration to the fact that we're installing headers. Let's copy the approach that the `symlinks` target uses for now, and add ",dev" to the TAG_ARGS so that headers at least end up in FreeBSD-runtime-dev, which is more appropriate. Some of these includes are actually technically supposed to be in *other* packages and their INCSGROUP's PACKAGE setting is actually correct, but this is less trivial to solve. This is a bandaid to fix the immediate problem of some headers ending up in two different packages. PR: 267526 Reviewed by: dfr, manu Differential Revision: https://reviews.freebsd.org/D37256
* libc: Don't warn about RRSIG replies.Dag-Erling Smørgrav2022-11-091-0/+18
| | | | | | PR: 213178 MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D37303
* getaddrinfo: distinguish missing addrs from unresolvable namesMike Karels2022-11-021-0/+1
| | | | | | | | | | | | | | | | | | | Rework getaddrinfo(3) to return different error values for unresolvable names (same as before, EAI_NONAME) and those without a requested addr (EAI_ADDRFAMILY) when using DNS. This is implemented via an added error in the nsswitch layer, NS_ADDRFAMILY, which is used only by getaddrinfo(). The error is passed through nsdispatch(3), but that routine has no changes to handle this error. The error originates in the getaddrinfo DNS layer called via nsdispatch(), and is processed by the search layer that calls nsdispatch(). While here, add a little style to returns near those that were modified. Reviewed in https://reviews.freebsd.org/D37139 with related changes. Reviewed by: bz MFC after: 1 month
* netdb.h: re-enable EAI_ADDRFAMILY, EAI_NODATAMike Karels2022-11-021-4/+7
| | | | | | | | | | | | | | | | | | EAI_ADDRFAMILY and EAI_NODATA are not in RFC 3493, but are available and used in many other systems. It is desirable to have at least one of them in order to distinguish between names that do not resolve and those that do not have the requested address type. A change to getaddrinfo() will use EAI_ADDRFAMILY. Both were "#if 0"; re-enable, conditioned on __BSD_VISIBLE, and update comments. Also add comments and __BSD_VISIBLE conditional for the last three EAI errors, which are not in the RFC or POSIX. Note, all of these are available in NetBSD and OpenBSD, and EAI_ADDRFAMILY and EAI_NODATA are available in Linux (glibc). Reviewed in https://reviews.freebsd.org/D37139 with related changes. Reviewed by: bz MFC after: 1 month
* Import the WireGuard driver from zx2c4.com.John Baldwin2022-10-281-2/+7
| | | | | | | | | | | | | | | This commit brings back the driver from FreeBSD commit f187d6dfbf633665ba6740fe22742aec60ce02a2 plus subsequent fixes from upstream. Relative to upstream this commit includes a few other small fixes such as additional INET and INET6 #ifdef's, #include cleanups, and updates for recent API changes in main. Reviewed by: pauamma, gbe, kevans, emaste Obtained from: git@git.zx2c4.com:wireguard-freebsd @ 3cc22b2 Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D36909
* netlink: add headers installationAlexander V. Chernikov2022-10-011-1/+2
|
* Alter the prototype of qsort_r(3) to match POSIX, which adopted theEd Schouten2022-09-301-2/+36
| | | | | | | | | | | | | | | | | | | | | | | | | | | | glibc-based interface. Unfortunately, the glibc maintainers, despite knowing the existence of the FreeBSD qsort_r(3) interface in 2004 and refused to add the same interface to glibc based on grounds of the lack of standardization and portability concerns, has decided it was a good idea to introduce their own qsort_r(3) interface in 2007 as a GNU extension with a slightly different and incompatible interface. With the adoption of their interface as POSIX standard, let's switch to the same prototype, there is no need to remain incompatible. C++ and C applications written for the historical FreeBSD interface get source level compatibility when building in C++ mode, or when building with a C compiler with C11 generics support, provided that the caller passes a fifth parameter of qsort_r() that exactly matches the historical FreeBSD comparator function pointer type and does not redefine the historical qsort_r(3) prototype in their source code. Symbol versioning is used to keep old binaries working. MFC: never Relnotes: yes Reviewed by: cem, imp, hps, pauamma Differential revision: https://reviews.freebsd.org/D17083
* corrected RFC numbers in comments to proper onesHajimu UMEMOTO2022-09-291-2/+2
|
* libc rpc: Fix mismatches in prototypes for array bounds.John Baldwin2022-09-281-5/+6
| | | | | | | | | | | | Various RPC functions used a bare pointer in function prototypes to describe fixed-length buffer arguments but used a fixed-length array in the function definition. The manual page for these functions describes the parameters as being fixed-length buffers, so update the prototypes to match the definitions. Reviewed by: imp, emaste Reported by: GCC -Warray-parameter Differential Revision: https://reviews.freebsd.org/D36757
* libc: Add strverscmp(3) and versionsort(3)Aymeric Wibo2022-08-252-0/+2
| | | | | | | | | | | | | | | Add a strverscmp(3) function to libc, a GNU extension I implemented by reading its glibc manual page. It orders strings following a much more natural ordering (e.g. "ent1 < ent2 < ent10" as opposed to "ent1 < ent10 < ent2" with strcmp(3)'s lexicographic ordering). Also add versionsort(3) for use as scandir(3)'s compar argument. Update manual page for scandir(3) and add one for strverscmp(3). Reviewed by: pstef, gbe, kib MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D35807
* libc: add scandirat(3)Konstantin Belousov2022-08-241-0/+5
| | | | | | | Reviewed by: emaste, imp, kevans, markj, Aymeric Wibo <obiwac@gmail.com> Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D36301
* include/i386: fix release buildsBrooks Davis2022-06-131-0/+8
| | | | | | | | | | | | | Add a target to ensure the presence of /usr/include/i386 before we try to install files. In the buildworld/installworld path it gets created different ways, but for distribute (used in releases) we need it in the subdir. (Creating of this the x86, pc, powerpc directories is far too complex. We should look for ways to simplify it.) Reported by: lwhsu Fixes: a09ea2bbc3053d3b2afdb2f7444e5e57a96bb891
* rpcbind: get contact addr from xprt membersDmitry Ovsyannikov2022-06-131-0/+4
| | | | | | | | | | | | | | | | Addition to D31491 in order to actually resolve the top root cause. Currently rpcbind gets contact address from connectionless xprt->xp_p2 member of a transport and will fail to get it when working over connection oriented transport, leading to a guess game in terms of contact address on rpcinfo requests like RPCBPROC_GETVERSADDR or RPCBPROC_GETADDRLIST and poor returns which may influence a user of a call and specifically reported on OSX clients, which tend to not provide address hint from rpcinfo request to a server. MFC after: 1 week Sponsored by: Dell EMC Isilon Differential Revision: https://reviews.freebsd.org/D35220
* amd64: -m32 support for machine/md_var.hBrooks Davis2022-06-131-0/+1
| | | | | | | | | | Install the i386 md_var.h under /usr/include/i386 on amd64 and include when targeting i386. This is a mostly kernel-only header required by procstat's ZFS support. It is pulled in by the i386 machine/counter.h. Reviewed by: jhb, imp
* amd64: -m32 support for machine/counter.hBrooks Davis2022-06-131-0/+1
| | | | | | | | | Install the i386 counter.h under /usr/include/i386 on amd64 and include when targeting i386. This is a kernel-only header required by procstat's ZFS support. Reviewed by: jhb, imp
* amd64: -m32 support for machine/pcpu_aux.hBrooks Davis2022-06-131-1/+2
| | | | | | | | | Install the i386 pcpu_aux.h under /usr/include/i386 on amd64 and include when targeting i386. This is a kernel-only header that is required by procstat's ZFS support. Reviewed by: jhb, imp
* amd64: -m32 support for machine/pcpu.hBrooks Davis2022-06-131-0/+4
| | | | | | | | | | Install the i386 pcpu.h under /usr/include/i386 on amd64 and include when targeting i386. This is a kernel-only header and should not be required, but procstat's zfs support includes this with _KERNEL defined. Reviewed by: jhb, imp
* amd64: -m32 support for machine/vmparam.hBrooks Davis2022-06-131-1/+2
| | | | | | | Install the i386 vmparam.h under /usr/include/i386 on amd64 and include when targeting i386. Reviewed by: jhb, imp
* amd64: -m32 support for machine/proc.hBrooks Davis2022-06-131-0/+1
| | | | | | | Install the i386 proc.h under /usr/include/i386 on amd64 and include when targeting i386. Reviewed by: jhb, imp
* amd64: -m32 support for machine/pmap.hBrooks Davis2022-06-131-0/+1
| | | | | | | Install the i386 pmap.h under /usr/include/i386 on amd64 and include when targeting i386. Reviewed by: jhb, imp
* amd64: -m32 support for machine/segments.hBrooks Davis2022-06-131-1/+2
| | | | | | | Install the i386 segments.h under /usr/include/i386 on amd64 and include when targeting i386. Reviewed by: jhb, imp
* amd64: -m32 support for machine/atomic.hBrooks Davis2022-06-131-0/+1
| | | | | | | Install the i386 atomic.h under /usr/include/i386 on amd64 and include when targeting i386. Reviewed by: jhb, imp
* amd64: -m32 support for machine/asm(macros).hBrooks Davis2022-06-131-0/+2
| | | | | | | Install the i386 versions under /usr/include/i386 on amd64 and include when targeting i386. Reviewed by: jhb, imp
* amd64: -m32 support for machine/profile.hBrooks Davis2022-06-131-1/+2
| | | | | | | Install the i386 profile.h under /usr/include/i386 on amd64 and include when targeting i386. Reviewed by: jhb, imp
* amd64: -m32 support for machine/cpufunc.hBrooks Davis2022-06-131-1/+2
| | | | | | | Install the i386 cpufunc.h under /usr/include/i386 on amd64 and include when targeting i386. Reviewed by: jhb, imp
* amd64: add an i386 include directoryBrooks Davis2022-06-132-0/+14
| | | | | | | | | | | | | | This directory will hold i386-specific headers that are needed for -m32 support on amd64 and where the amd64 and i386 cases have too little in common for combining them to make sense. Files to be installed will come in later commits. With the currently required set of files, this could be done with another INCGROUP in include/Makefile, but at least one file that might want -m32 support (ieeefp.h) conflicts with a files installed in /usr/include. Reviewed by: jhb, imp
* Create a new GEOM utility, gunion(8).Kirk McKusick2022-03-011-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The gunion(8) utility is used to track changes to a read-only disk on a writable disk. Logically, a writable disk is placed over a read-only disk. Write requests are intercepted and stored on the writable disk. Read requests are first checked to see if they have been written on the top (writable disk) and if found are returned. If they have not been written on the top disk, then they are read from the lower disk. The gunion(8) utility can be especially useful if you have a large disk with a corrupted filesystem that you are unsure of how to repair. You can use gunion(8) to place another disk over the corrupted disk and then attempt to repair the filesystem. If the repair fails, you can revert all the changes in the upper disk and be back to the unchanged state of the lower disk thus allowing you to try another approach to repairing it. If the repair is successful you can commit all the writes recorded on the top disk to the lower disk. Another use of the gunion(8) utility is to try out upgrades to your system. Place the upper disk over the disk holding your filesystem that is to be upgraded and then run the upgrade on it. If it works, commit it; if it fails, revert the upgrade. Further details can be found in the gunion(8) manual page. Reviewed by: Chuck Silvers, kib (earlier version) tested by: Peter Holm Differential Revision: https://reviews.freebsd.org/D32697
* Install unwind.h into /usr/includeJohn Baldwin2022-02-101-160/+0
| | | | | | | | | | | | Install headers from LLVM's libunwind in place of the headers from libcxxrt and allow C applications to use the library. As part of this, remove include/unwind.h and switch libthr over to using the installed unwind.h. Reviewed by: dim, emaste MFC after: 10 days Differential Revision: https://reviews.freebsd.org/D34065
* Change the return value of _Unwind_GetCFA in include/unwind.h.John Baldwin2022-01-271-1/+1
| | | | | | | | | | I tested the original commit as part of a series that culminates in removing this header and installing LLVM libunwind's unwind.h in its place so missed updating this header as was done in b84693501af6. Pointy hat to: jhb Reported by: kevans Fixes: 3a502289d316 Use uintptr_t for return type of _Unwind_GetCFA.
* Use an unsigned 64-bit integer for exception class.John Baldwin2022-01-271-2/+2
| | | | | | | | | | This matches the type in other unwind headers (LLVM libunwind, libcxxrt, glibc). NB: include/unwind.h is not installed but is only used by libthr Reviewed by: imp, dim, emaste Differential Revision: https://reviews.freebsd.org/D34049
* ipfilter: Move kernel bits to netpfilCy Schubert2021-12-201-2/+2
| | | | | | | | | | | | | | | | Through fixes and improvements our ipfilter sources have diverged enough to warrant move from contrib into sys/netpil. Now that I'm planning on implementing MSS clamping as in iptables it makes more sense to move ipfilter to netpfil. This is the first of three commits the ipfilter move. Suggested by glebius on two occaions. Suggested by and discussed with: glebius Reviewed by: glebius, kp (for #network) MFC after: 1 month Differential Revision: https://reviews.freebsd.org/D33510
* sched.h: Use pid_t type for pid argumentDavid CARLIER2021-12-171-1/+1
| | | | | MFC after: 1 week Differential revision: https://reviews.freebsd.org/D33533
* Remove 'All Rights Reserved' from xlocale FreeBSD Foundation copyrightsEd Maste2021-12-1611-11/+0
| | | | Sponsored by: The FreeBSD Foundation
* swapoff: add one more variant of the syscallKonstantin Belousov2021-12-091-1/+1
| | | | | | | Requested and reviewed by: brooks Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D33343
* sys/bitset.h: reduce visibility of BIT_* macrosStefan Eßer2021-12-051-4/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add two underscore characters "__" to names of BIT_* and BITSET_* macros to move them to the implementation name space and to prevent a name space pollution due to BIT_* macros in 3rd party programs with conflicting parameter signatures. These prefixed macro names are used in kernel header files to define macros in e.g. sched.h, sys/cpuset.h and sys/domainset.h. If C programs are built with either -D_KERNEL (automatically passed when building a kernel or kernel modules) or -D_WANT_FREENBSD_BITSET (or this macros is defined in the source code before including the bitset macros), then all macros are made visible with their previous names, too. E.g., both __BIT_SET() and BIT_SET() are visible with either of _KERNEL or _WANT_FREEBSD_BITSET defined. The main reason for this change is that some 3rd party sources including sched.h have been found to contain conflicting BIT_* macros. As a work-around, parts of shed.h have been made conditional and depend on _WITH_CPU_SET_T being set when sched.h is included. Ports that expect the full functionality provided by sched.h need to be built with -D_WITH_CPU_SET_T. But this leads to conflicts if BIT_* macros are defined in that program, too. This patch set makes all of sched.h visible again without this parameter being passed and without any name space pollution due to BIT_* macros becoming visible when sched.h is included. This patch set will be backported to the STABLE branches, but ports will need to use -D_WITH_CPU_SET_T as long as there are supported releases that do not contain these patches. Reviewed by: kib, markj MFC after: 1 month Relnotes: yes Differential Revision: https://reviews.freebsd.org/D33235
* posix_spawn: add closefrom non-portable actionKonstantin Belousov2021-11-301-0/+2
| | | | | | | | | | Namely posix_spawn_file_actions_addclosefrom_np, in the form it is provided by glibc. Reviewed by: kevans, ngie (previous version) Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D33143
* posix_spawn: add chdir-related non-portable actionsKonstantin Belousov2021-11-301-0/+7
| | | | | | | | | | Namely posix_spawn_file_actions_addchdir_np and posix_spawn_file_actions_addfchdir_np. Reviewed by: kevans, ngie (previous version) Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D33143
* sched.h: Hide all Linux compat sched_* functions under _WITH_CPU_SET_TKonstantin Belousov2021-11-131-4/+3
| | | | | | | | | | | | | | | | | Instead of only hiding cpu_set_t compat typedef itself. Too many software packages assume that sched_getaffinity() presence implies full source compatibility with glibc. We can (and should) handle missing CPU_* macros, but then there are incompatible BIT_* uses which cannot be fixed in src/. So hide everything under _WITH_CPU_SET_T, in particular, do not expose sched_getcpu(), sched_get/setaffinity(), as well as CPU_* and BIT_* macros. Consumers that want sched* functions must opt-in. Reported by: portmgr (antoine) Sponsored by: The FreeBSD Foundation MFC after: 1 week
* Add sched_getcpu()Konstantin Belousov2021-11-101-0/+1
| | | | | | | | | for compatibility with Linux. Reviewed by: jhb Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D32901
* Add sched_get/setaffinity(3)Konstantin Belousov2021-11-101-0/+7
| | | | | | | | | for compatibility with Linux. Reviewed by: jhb Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D32901
* Add real sched.hKonstantin Belousov2021-11-102-2/+49
| | | | | | | | | | | | | | It is required by IEEE Std 1003.1-2008 AKA POSIX. Put some Linux compatibility stuff under BSD_VISIBLE namespace, in particular, sys/cpuset.h definitions. Also, if user really want Linux compatibility, she can request cpu_set_t typedef with _WITH_CPU_SET_T define. Reviewed by: jhb Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D32901
* libc: add clearenv functionMariusz Zaborski2021-11-071-0/+2
| | | | | | | | | | The clearenv(3) function allows us to clear all environment variable in one shot. This may be useful for security programs that want to control the environment or what variables are passed to new spawned programs. Reviewed by: scf, markj (secteam), 0mp (manpages) Differential Revision: https://reviews.freebsd.org/D28223
* Implementations of cexpl()Steve Kargl2021-11-051-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The change implements cexpl() for both ld80 and ld128 architectures. Testing was done on x86_64 and aarch64 systems. Along the way sincos[fl]() use an optimization that reduces the argument to being done one rather than twice. This optimization actually pointed to a bug in the ld128 version of sincosl(), which is now fixed. In addition, the minmax polynomial coefficients for sincosl() have been updated. A concise log of the file-by-file changes follows. * include/complex.h: . Add a prototype for cexpl(). * lib/msun/Makefile: . Add s_cexpl.c to the build. . Setup a link for cexpl.3 to cexp.3. * lib/msun/Symbol.map: . Expose cexpl symbol in libm shared library. * lib/msun/ld128/s_cexpl.c: * Implementation of cexpl() for 128-bit long double architectures. Tested on an aarch64 system. * lib/msun/ld80/s_cexpl.c: * Implementation of cexpl() for Intel 80-bit long double. * lib/msun/man/cexp.3: . Document cexpl(). * lib/msun/man/complex.3: . Add a BUGS section about cpow[fl]. * lib/msun/src/s_cexp.c: . Include float.h for weak references on 53-bit long double targets. . Use sincos() to reduce argument reduction cost. * lib/msun/src/s_cexpf.c: . Use sincosf() to reduce argument reduction cost. * lib/msun/src/k_sincosl.h: . Catch up with the new minmax polynomial coefficients for the kernel for the 128-bit cosl() implementation. . BUG FIX: *cs was used where *sn should have been. This means that sinl() was no computed correctly when iy != 0. * lib/msun/src/s_cosl.c: . Include fpmath.h to get access to IEEEl2bits. . Replace M_PI_4 with pio4, a 64-bit or 113-bit approximation for pi / 4. PR: 216862 MFC after: 1 week
* Add _Fork()Konstantin Belousov2021-08-031-0/+1
| | | | | | | | | | | | | | | | | | | | | Current POSIX standard requires fork() to be async-signal safe. Neither our implementation, nor implementations in other operating systems are, and practically it is impossible to make fork() async-signal safe without too much efforts. Also, that would put undue requirement that all atfork handlers should be async-signal safe as well, which contradicts its main use. As result, Austin Group dropped the requirement, and added a new function _Fork() that should be async-signal safe, but it does not call atfork handlers. Basically, _Fork() can be implemented as a raw syscall. Release of glibc 2.34 added _Fork(), do the same for FreeBSD. Clarify threading behavior for fork() in the manpage. Reviewed by: markj Sponsored by: The FreeBSD Foundation MFC after: 2 weeks Differential revision: https://reviews.freebsd.org/D31378
* time.h: reduce CLOCK_ namespace pollution, move to _clock_id.hWarner Losh2021-07-301-29/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Attempt to comply with the strict namespace pollution requirements of _POSIX_C_SOURCE. Add guards to limit visitbility of CLOCK_ and TIMER_ defines as appropriate. Only define the CLOCK_ variables relevant to the specific standards. Move all the sharing to sys/_clock_id.h and make time.h and sys/time.h both include that rather than copy due to the now large number of clocks and compat defines. Please note: The old time.h previously used these newer dates: CLOCK_REALTIME 199506 CLOCK_MONOTONIC 200112 CLOCK_THREAD_CPUTIME_ID 200112 CLOCK_PROCESS_CPUTIME_ID 200112 but glibc defines all of these for 199309. glibc uses this date for all these values, however, only CLOCK_REALTIME was in IEEE 1003.1b. Add a comment about this to document it. A large number of programs and libraries assume that these will be defined for _POSIX_C_SOURCE = 199309. In addition, leak CLOCK_UPTIME_FAST for the pocl package until it can be updated to use a simple CLOCK_MONOTONIC. Reviewed by: kib Sponsored by: Netflix Differential Revision: https://reviews.freebsd.org/D31056