aboutsummaryrefslogtreecommitdiff
path: root/include
Commit message (Collapse)AuthorAgeFilesLines
* 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
* libc: add mempcpy(3) and wmempcpy(3)Konstantin Belousov2021-07-152-0/+6
| | | | | | | Reviewed by: markj Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D31180
* Change strmode argument type to mode_tAlfonso Gregory2021-06-291-1/+7
| | | | | | | | Finally, we have the correct function definition for strmode. NetBSD/OpenBSD did this many years ago. This code is weird sign extension safe. Reviewed by: imp@ Pull Request: https://github.com/freebsd/freebsd-src/pull/493
* Reduce code duplication in machine/_types.hAlex Richardson2021-06-141-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | Many of these typedefs are the same across all architectures or can be set based on an architecture-independent compiler-provided macro (e.g. __SIZEOF_SIZE_T__). These macros have been available since GCC 4.6 and Clang sometime before 3.0 (godbolt.org does not have any older clang versions installed). I originally considered using the compiler-provided `__FOO_TYPE__` directly. However, in order to do so we have to check that those match the previous typedef exactly (not just that they have the same size) since any change would be an ABI break. For example, changing `long` to `long long` results in different C++ name mangling. Additionally, Clang and GCC disagree on the underlying type for some of (u)int*_fast_t types, so this change only moves the definitions that are identical across all architectures and does not touch those types. This de-deduplication will allow us to have a smaller diff downstream in CheriBSD: we only have to only change the (u)intptr_t definition in sys/_types.h in CheriBSD instead of having to change machine/_types.h for all CHERI-enabled architectures (currently RISC-V, AArch64 and MIPS). Reviewed By: imp, kib Differential Revision: https://reviews.freebsd.org/D29895
* an: Remove driverEmmanuel Vadot2021-06-111-1/+1
| | | | | | | | | Last an(4) devices have been End Of Life and End Of Sale in 2007. Time to remove this driver. Differential Revision: https://reviews.freebsd.org/D30679 Reviewed by: imp (earlier version), emaste (earlier version) Sponsored by: Diablotin Systems
* Fix build with WITHOUT_AUDIT=yes in src.confEmmanuel Vadot2021-04-151-5/+2
| | | | | | | | Always install the audit related includes are some part of the source always requires them. Reported by: many Fixes: 8c3eaf244a417a4
* Only symlink cryptodev.h into /usr/include/crypto/John Baldwin2021-03-191-4/+1
| | | | | | | I missed updating the symlink side in the earlier commit. Fixes: 283352dd4f6a3bb2f3c7cb45ce5dca3d86f5e3f4 MFC after: 1 week
* base: remove if_wg(4) and associated utilities, manpageKyle Evans2021-03-171-7/+2
| | | | | | | | | | | | After length decisions, we've decided that the if_wg(4) driver and related work is not yet ready to live in the tree. This driver has larger security implications than many, and thus will be held to more scrutiny than other drivers. Please also see the related message sent to the freebsd-hackers@ and freebsd-arch@ lists by Kyle Evans <kevans@FreeBSD.org> on 2021/03/16, with the subject line "Removing WireGuard Support From Base" for additional context.
* Revert "include: Remove symlink installation"Emmanuel Vadot2021-03-161-9/+108
| | | | This reverts commit 0006530aa14b9df56f88df7d819fae89b115d865.
* Revert "include: Tag directly the last headers"Emmanuel Vadot2021-03-161-8/+8
| | | | This reverts commit 839fc8cdf9b6bafe120e7da8a4b78950ad7295c4.
* include: Tag directly the last headersEmmanuel Vadot2021-03-161-8/+8
| | | | | | | | | We cannot easily used the TAG here and we don't yet have something to install even .h from a diretory in bsd.prog.mk Reviewed by: bapt Differential Revision: https://reviews.freebsd.org/D29170 MFC after: 2 weeks
* include: Remove symlink installationEmmanuel Vadot2021-03-161-108/+9
| | | | | | | | | | | | | | headers could be installed as symlink to the source tree instead of copies. Remove the possibility to do that. This make the makefile easier to read and to maintain and also don't duplicate code. While here remove some directories from LSBUDIRS as we already install them using the INCS stuff. Reviewed by: bapt Differential Revision: https://reviews.freebsd.org/D29167 MFC after: 2 weeks
* pkgbase: Install all cam includes with INCSEmmanuel Vadot2021-03-161-3/+54
| | | | | | | | Now they are correctly taggued and put into the -dev package Reviewed by: bapt Differential Revision: https://reviews.freebsd.org/D29166 MFC after: 2 weeks
* pkgbase: Install all BSM includes with INCSEmmanuel Vadot2021-03-161-2/+25
| | | | | | | | Now they are correctly taggued and put them into the libbsm package Reviewed by: bapt Differential Revision: https://reviews.freebsd.org/D29165 MFC after: 2 weeks
* Stop installing kernel-only crypto headers to /usr/include/crypto.John Baldwin2021-03-161-15/+1
| | | | | | | | The only user-facing header from OCF is <crypto/cryptodev.h>. PR: 254167 (exp-run) MFC after: 1 week Sponsored by: Chelsio Communications
* if_wg: import latest fixup work from the wireguard-freebsd projectKyle Evans2021-03-151-2/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is the culmination of about a week of work from three developers to fix a number of functional and security issues. This patch consists of work done by the following folks: - Jason A. Donenfeld <Jason@zx2c4.com> - Matt Dunwoodie <ncon@noconroy.net> - Kyle Evans <kevans@FreeBSD.org> Notable changes include: - Packets are now correctly staged for processing once the handshake has completed, resulting in less packet loss in the interim. - Various race conditions have been resolved, particularly w.r.t. socket and packet lifetime (panics) - Various tests have been added to assure correct functionality and tooling conformance - Many security issues have been addressed - if_wg now maintains jail-friendly semantics: sockets are created in the interface's home vnet so that it can act as the sole network connection for a jail - if_wg no longer fails to remove peer allowed-ips of 0.0.0.0/0 - if_wg now exports via ioctl a format that is future proof and complete. It is additionally supported by the upstream wireguard-tools (which we plan to merge in to base soon) - if_wg now conforms to the WireGuard protocol and is more closely aligned with security auditing guidelines Note that the driver has been rebased away from using iflib. iflib poses a number of challenges for a cloned device trying to operate in a vnet that are non-trivial to solve and adds complexity to the implementation for little gain. The crypto implementation that was previously added to the tree was a super complex integration of what previously appeared in an old out of tree Linux module, which has been reduced to crypto.c containing simple boring reference implementations. This is part of a near-to-mid term goal to work with FreeBSD kernel crypto folks and take advantage of or improve accelerated crypto already offered elsewhere. There's additional test suite effort underway out-of-tree taking advantage of the aforementioned jail-friendly semantics to test a number of real-world topologies, based on netns.sh. Also note that this is still a work in progress; work going further will be much smaller in nature. MFC after: 1 month (maybe)
* Remove xform_poly1305.h from the build, it is not necessary.Scott Long2021-03-051-2/+1
|
* Remove __NO_TLS.Konstantin Belousov2021-02-231-2/+2
| | | | | | | | | All supported platforms support thread-local vars and __thread. Reviewed by: emaste Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D28796
* Fix make includes path to nvpair.hAlex Richardson2021-01-191-1/+1
| | | | Fixes a typo introduced in 9e5787d2284e187abb5b654d924394a65772e004
* include: Delete stale symlinks using find(1) instead of a shell loop.Alex Richardson2021-01-191-14/+7
| | | | | | | This reduces the number of execve() syscalls during make includes by 88. Reviewed By: jhb Differential Revision: https://reviews.freebsd.org/D27622
* pccard: Remove wi(4) driverWarner Losh2021-01-081-1/+1
| | | | | | | | | Remove wi(4). pccard is going away, and wi only supports PC Card devices, though it has a minor amount of glue to also support PCI cards. However, removing the one without removing the other is hard, so the whole driver is being removed. Relnotes: Yes
* hid: Import hidraw(4) - driver for access to raw HID device dataVladimir Kondratyev2021-01-071-2/+4
| | | | | | | | | | | | This driver provides raw access to HID devices through uhid(4)-compatible interface and is based on pre-8.x uhid(4) code. Unlike uhid(4) it does not take devices in to monopoly ownership and allows parallel access from other drivers. hidraw supports Linux's hidraw-compatible interface as well. Reviewed by: hselasky Differential revision: https://reviews.freebsd.org/D27992
* Factor-out hardware-independent part of USB HID support to new moduleVladimir Kondratyev2021-01-071-2/+9
| | | | | | | | It will be used by the upcoming HID-over-i2C implementation. Should be no-op, except hid.ko module dependency is to be added to affected drivers. Reviewed by: hselasky, manu Differential revision: https://reviews.freebsd.org/D27867
* include: Use printf(1) instead of shell loops for header symlinksAlex Richardson2021-01-071-97/+52
| | | | | | | | | | | | | | Using a shell for loop means we have to spawn a separate install(1) process for each header that is symlinked. This patch uses printf(1) to generate an argument list that has been prefixed with the correct number of ../ and then uses a single install(1) invocation. This reduces the number of execve() calls during make includes from 2442 (with D27622) to 1382. Running `make symlinks` in include/ now spawns 214 processes instead of 1276 without this patch. Reviewed By: jhb Differential Revision: https://reviews.freebsd.org/D27723
* include: Use INCSGROUPS for a few filesEmmanuel Vadot2021-01-041-65/+128
| | | | | | | | | Instead of using install directly use INCSGROUPS for them. All those files are the ones we installed when the directory have more .h files that we don't want to install so they aren't using the LSUBDIR stuff. Reviewed by: bapt Differential Revision: https://reviews.freebsd.org/D27612
* include: Tag the last includes files as part of the -dev packageEmmanuel Vadot2021-01-041-22/+22
| | | | | Reviewed by: bapt Differential Revision: https://reviews.freebsd.org/D27618
* Add tcgetwinsize(3) and tcsetwinsize(3) to termiosKonstantin Belousov2020-12-251-0/+6
| | | | | | | | | | | | | | These functions get/set tty winsize respectively, and are trivial wrappers around corresponding termio ioctls. The functions are expected to be a part of POSIX.1 issue 8: https://www.austingroupbugs.net/view.php?id=1151#c3856. They are currently available in NetBSD and in musl libc. PR: 251868 Submitted by: Soumendra Ganguly <soumendraganguly@gmail.com> MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D27650
* Change POSIX compliance level for visibility of strerror_l(3).Konstantin Belousov2020-12-171-1/+1
| | | | | | | | | | | | | Third-party code tests for strerror_l(3) without specifying _POSIX_SOURCE, and then expects that the function is prototyped with _POSIX_SOURCE set to 200112. Reported and tested by: antoine Sponsored by: The FreeBSD Foundation MFC after: 13 days Notes: svn path=/head/; revision=368723
* Implement strerror_l().Konstantin Belousov2020-12-161-0/+1
| | | | | | | | | | | | | | Only for the arches that provide user-mode TLS. PR: 251651 Requested by: yuri Discussed with: emaste, jilles, tijl Sponsored by: The FreeBSD Foundation Differential revision: https://reviews.freebsd.org/D27495 MFC after: 2 weeks Notes: svn path=/head/; revision=368692
* Add collation version support to querylocale(3).Thomas Munro2020-11-081-0/+1
| | | | | | | | | | | | | | | | | | | | | | | Provide a way to ask for an opaque version string for a locale_t, so that potential changes in sort order can be detected. Similar to ICU's ucol_getVersion() and Windows' GetNLSVersionEx(), this API is intended to allow databases to detect when text order-based indexes might need to be rebuilt. The CLDR version is extracted from CLDR source data by the Makefile under tools/tools/locale, written into the machine-generated Makefile under shared/colldef, passed to localedef -V, and then written into LC_COLLATE file headers. The initial version is 34.0. tools/tools/locale was recently updated to pull down 35.0, but the output hasn't been committed under share/colldef yet, so that will provide the first observable change when it happens. Other versioning schemes are possible in future, because the format is unspecified. Reviewed by: bapt, 0mp, kib, yuripv (albeit a long time ago) Differential Revision: https://reviews.freebsd.org/D17166 Notes: svn path=/head/; revision=367476
* Remove obsolete check for GCC < 3 and support for Intel CompilerWarner Losh2020-10-242-4/+1
| | | | | | | | | | | | | | We no longer support old versions of GCC. Remove this check by assuming it's false. That will make the entire expression false. Also remove support for Intel compiler, it's badly bitrotted. Technically, this removes support for C89 and K&R from compilers that don't define _Bool in those compilation environments as well. I'm unaware of any working compiler today for which that would be relevant (pcc has it and tcc sadly isn't working for other reasons), though if one pops up in ports, I'll work to resolve the issue. Notes: svn path=/head/; revision=367028
* Add search of LOCALBASE/share/calendar for calendars supplied by a port.Stefan Eßer2020-10-231-1/+4
| | | | | | | | | | | | | | | | | Calendar files in LOCALBASE override similarily named ones in the base system. This could easily be changed if the base system calendars should have precedence, but it could lead to a violation of POLA since then the port's files were ignored unless those in base have been deleted. There was no definition of _PATH_LOCALBASE in paths.h, but verbatim uses of /usr/local existed for _PATH_DEFPATH. Use _PATH_LOCALBASE here to ease a consistent modification of this prefix. Reviewed by: imp, pfg Differential Revision: https://reviews.freebsd.org/D26882 Notes: svn path=/head/; revision=366962
* Further refinements of ptsname_r(3) interface:Xin LI2020-10-201-4/+10
| | | | | | | | | | | | | | | | | - Hide ptsname_r under __BSD_VISIBLE for now as the specification is not finalized at this time. - Keep Symbol.map sorted. - Avoid the interposing of ptsname_r(3) from an user application from breaking ptsname(3) by making the implementation a static method and call the static function from ptsname(3) instead. Reported by: kib Reviewed by: kib, jilles MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D26845 Notes: svn path=/head/; revision=366866
* Implement ptsname_r.Xin LI2020-10-171-0/+1
| | | | | | | | | | MFC after: 2 weeks PR: 250062 Reviewed by: jilles, 0mp, Ray <i maskray me> Differential Revision: https://reviews.freebsd.org/D26647 Notes: svn path=/head/; revision=366781
* [PowerPC64LE] Ensure nvram is built on powerpc64le.Brandon Bergren2020-09-131-1/+1
| | | | | | | | | | Fix some cases where conditionals that were trying to exclude powerpcspe were also excluding powerpc64le. Sponsored by: Tag1 Consulting, Inc. Notes: svn path=/head/; revision=365694
* getlogin_r: fix the type of lenKyle Evans2020-09-091-1/+1
| | | | | | | | | | | | | | | | | | | | | | getlogin_r is specified by POSIX to to take a size_t len, not int. Fix our version to do the same, bump the symbol version due to ABI change and provide compat. This was reported to break compilation of Ruby 2.8. Some discussion about the necessity of the ABI compat did take place in the review. While many 64-bit platforms would likely be passing it in a 64-bit register and zero-extended and thus, not notice ABI breakage, some do sign-extend (e.g. mips). PR: 247102 Submitted by: Bertram Scharpf <software@bertram-scharpf.de> (original) Submitted by: cem (ABI compat) MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D26335 Notes: svn path=/head/; revision=365506
* Merge OpenZFS support in to HEAD.Matt Macy2020-08-251-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The primary benefit is maintaining a completely shared code base with the community allowing FreeBSD to receive new features sooner and with less effort. I would advise against doing 'zpool upgrade' or creating indispensable pools using new features until this change has had a month+ to soak. Work on merging FreeBSD support in to what was at the time "ZFS on Linux" began in August 2018. I first publicly proposed transitioning FreeBSD to (new) OpenZFS on December 18th, 2018. FreeBSD support in OpenZFS was finally completed in December 2019. A CFT for downstreaming OpenZFS support in to FreeBSD was first issued on July 8th. All issues that were reported have been addressed or, for a couple of less critical matters there are pull requests in progress with OpenZFS. iXsystems has tested and dogfooded extensively internally. The TrueNAS 12 release is based on OpenZFS with some additional features that have not yet made it upstream. Improvements include: project quotas, encrypted datasets, allocation classes, vectorized raidz, vectorized checksums, various command line improvements, zstd compression. Thanks to those who have helped along the way: Ryan Moeller, Allan Jude, Zack Welch, and many others. Sponsored by: iXsystems, Inc. Differential Revision: https://reviews.freebsd.org/D25872 Notes: svn path=/head/; revision=364746
* <regex.h>: reserve a regcomp field for REG_POSIXKyle Evans2020-07-311-0/+1
| | | | | | | | | For libc regcomp, this will be a nop. libregex will take this to mean that it needs to turn off GNU extensions, effectively switching it back to the POSIX-compliant libc implementation at runtime. Notes: svn path=/head/; revision=363734
* Make CLOCK_REALTIME and TIMER_ABSTIME available for XOPEN_SOURCE >= 500.Konstantin Belousov2020-07-141-6/+8
| | | | | | | | | | | | Reported by: jbeich PR: 247701 Reviewed by: jilles Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D25554 Notes: svn path=/head/; revision=363193
* Install extra TCP stack header files: They are needed to compile a userlandOlivier Cochard2020-07-081-0/+1
| | | | | | | | | | | component of TCP Blackbox Recorder as example. Approved by: rrs Sponsored by: Netflix Differential Revision: https://reviews.freebsd.org/D25584 Notes: svn path=/head/; revision=363032
* Add pthread_getname_np() and pthread_setname_np() aliases forKonstantin Belousov2020-06-101-0/+3
| | | | | | | | | | | | | | | pthread_get_name_np() and pthread_set_name_np(). This re-applies r361770 after compatibility fixes. Reviewed by: antoine, jkim, markj Tested by: antoine (exp-run) Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D25117 Notes: svn path=/head/; revision=362032
* Revert r361770 "Add pthread_getname_np() and pthread_setname_np() aliases" ↵Konstantin Belousov2020-06-041-2/+0
| | | | | | | | | | | | for now. It is not compatible enough with Linux. Requested by: antoine, jkim Sponsored by: The FreeBSD Foundation Notes: svn path=/head/; revision=361784
* Add pthread_getname_np() and pthread_setname_np() aliasesKonstantin Belousov2020-06-031-0/+2
| | | | | | | | | | | | | | for pthread_get_name_np() and pthread_set_name_np(), to be compatible with Linux. PR: 238404 Proposed and reviewed by: markj Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D25117 Notes: svn path=/head/; revision=361770
* Oops, I didn't notice the "cd" is needed for each install line.Rick Macklem2020-05-311-0/+1
| | | | Notes: svn path=/head/; revision=361682
* Update the Makefile to copy rpcsec_tls.h to /usr/include/rpc.Rick Macklem2020-05-311-1/+3
| | | | Notes: svn path=/head/; revision=361679
* Implement RTLD_DEEPBIND.Konstantin Belousov2020-05-151-0/+2
| | | | | | | | | | | PR: 246462 Tested by: Martin Birgmeier <d8zNeCFG@aon.at> Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D24841 Notes: svn path=/head/; revision=361073
* Add memalign(3), mostly for glibc compatibility.Konstantin Belousov2020-05-141-0/+3
| | | | | | | | | | Reviewed by: emaste, imp (previous version) Sponsored by: The FreeBSD Foundation MFC after: 2 weeks Differential revision: https://reviews.freebsd.org/D24307 Notes: svn path=/head/; revision=361060
* Make include/malloc.h usable again.Konstantin Belousov2020-05-121-5/+5
| | | | | | | | | | | | | | | | | | Lot of third-party Linux code uses #include <malloc.h>, expecting to find the malloc extensions there. Instead of trying to fight them, accept that attempt to deprecate the header causes more troubles than solves potential portability issues, and provide our jemalloc extensions. PR: 155429 Reviewed by: imp, jhibbits, dab, hselasky, philip, emaste, jilles Exp-run by: antoine (PR 245366) Sponsored by: The FreeBSD Foundation MFC after: 2 weeks Differential revision: https://reviews.freebsd.org/D24297 Notes: svn path=/head/; revision=360984
* Clear namespace pollution in include/malloc_np.hKonstantin Belousov2020-05-121-15/+21
| | | | | | | | | | | | | | | | | Do not include stdbool.h, it makes the header incompatible with some third-party code that typedefs bool manually. Remove inclusion of strings.h, which typically conflicts with the use of symbol 'index'. Separate inclusion of sys/cdefs.h is not needed because sys/types.h already handles that. Exp-run by: antoine (PR 245366) Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D24297 Notes: svn path=/head/; revision=360983