summaryrefslogtreecommitdiffstats
path: root/include
Commit message (Collapse)AuthorAgeFilesLines
* stdio.h: Fix function-type typedef style and use _types.h __ssize_tcem2016-05-121-4/+4
| | | | | | | | | | | | I'm still not sure why only Pypy runs into the error with the function typedefs. Fix it anyway. Use __ssize_t instead of ssize_t for the types; it's possible for the size_t type to not be visible if at the wrong POSIX_VISIBLE level. A final (crossing my fingers) follow-up to r299456. Sponsored by: EMC / Isilon Storage Division
* Pollute more places with off64_t and add __off64_tcem2016-05-121-1/+1
| | | | | | | | | | | Despite the private namespace, several broken ports depend on the __off64_t name for the type. Export it exactly the same way off_t and __off_t are exported. A follow-up to r299456. Suggested by: php56 Sponsored by: EMC / Isilon Storage Division
* libc: Add fopencookie(3) wrapper around funopen(3)cem2016-05-111-0/+17
| | | | | | Reviewed by: jhb, oshogbo Sponsored by: EMC / Isilon Storage Division Differential Revision: https://reviews.freebsd.org/D6282
* Improve performance and functionality of the bitstring(3) apiasomers2016-05-041-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Two new functions are provided, bit_ffs_at() and bit_ffc_at(), which allow for efficient searching of set or cleared bits starting from any bit offset within the bit string. Performance is improved by operating on longs instead of bytes and using ffsl() for searches within a long. ffsl() is a compiler builtin in both clang and gcc for most architectures, converting what was a brute force while loop search into a couple of instructions. All of the bitstring(3) API continues to be contained in the header file. Some of the functions are large enough that perhaps they should be uninlined and moved to a library, but that is beyond the scope of this commit. sys/sys/bitstring.h: Convert the majority of the existing bit string implementation from macros to inline functions. Properly protect the implementation from inadvertant macro expansion when included in a user's program by prefixing all private macros/functions and local variables with '_'. Add bit_ffs_at() and bit_ffc_at(). Implement bit_ffs() and bit_ffc() in terms of their "at" counterparts. Provide a kernel implementation of bit_alloc(), making the full API usable in the kernel. Improve code documenation. share/man/man3/bitstring.3: Add pre-exisiting API bit_ffc() to the synopsis. Document new APIs. Document the initialization state of the bit strings allocated/declared by bit_alloc() and bit_decl(). Correct documentation for bitstr_size(). The original code comments indicate the size is in bytes, not "elements of bitstr_t". The new implementation follows this lead. Only hastd assumed "elements" rather than bytes and it has been corrected. etc/mtree/BSD.tests.dist: tests/sys/Makefile: tests/sys/sys/Makefile: tests/sys/sys/bitstring.c: Add tests for all existing and new functionality. include/bitstring.h Include all headers needed by sys/bitstring.h lib/libbluetooth/bluetooth.h: usr.sbin/bluetooth/hccontrol/le.c: Include bitstring.h instead of sys/bitstring.h. sbin/hastd/activemap.c: Correct usage of bitstr_size(). sys/dev/xen/blkback/blkback.c Use new bit_alloc. sys/kern/subr_unit.c: Remove hard-coded assumption that sizeof(bitstr_t) is 1. Get rid of unrb.busy, which caches the number of bits set in unrb.map. When INVARIANTS are disabled, nothing needs to know that information. callapse_unr can be adapted to use bit_ffs and bit_ffc instead. Eliminating unrb.busy saves memory, simplifies the code, and provides a slight speedup when INVARIANTS are disabled. sys/net/flowtable.c: Use the new kernel implementation of bit-alloc, instead of hacking the old libc-dependent macro. sys/sys/param.h Update __FreeBSD_version to indicate availability of new API Submitted by: gibbs, asomers Reviewed by: gibbs, ngie MFC after: 4 weeks Sponsored by: Spectra Logic Corp Differential Revision: https://reviews.freebsd.org/D6004
* include: minor spelling fixes.pfg2016-04-302-2/+2
| | | | No functional change.
* MFHgjb2016-04-161-8/+8
|\ | | | | | | Sponsored by: The FreeBSD Foundation
| * Rework META_TARGETS so that it automatically adds META_DEPS to the targets.bdrewery2016-04-141-8/+8
| | | | | | | | | | | | | | | | This will only be done if the target is defined, so if the target is defined after bsd.sys.mk is included then it needs to manually add ${META_DEPS} still. Sponsored by: EMC / Isilon Storage Division
* | MFHgjb2016-04-042-1/+2
|\ \ | |/ | | | | Sponsored by: The FreeBSD Foundation
| * For C++, expose long long types and functions (lldiv_t, llabs, lldiv,dim2016-03-231-1/+1
| | | | | | | | | | | | | | etc) in stdlib.h. These will be needed for newer versions of libc++, which uses them for defining overloaded versions of abs() and div(). MFC after: 1 week
| * Implement suggestion by jhb@ to have _PATH_FIRMWARE instead of hardimp2016-03-231-0/+1
| | | | | | | | coding it to be "/usr/share/firmware".
* | MFHgjb2016-03-141-33/+5
|\ \ | |/ | | | | Sponsored by: The FreeBSD Foundation
| * META_MODE: Simplify the META_COOKIE handling to use .USE/.USEBEFORE.bdrewery2016-03-111-10/+4
| | | | | | | | | | | | | | Extend it to other cases of meta mode cookies so they get the proper rm cookie behavior when a .meta file detects it needs to rebuild and fails. Sponsored by: EMC / Isilon Storage Division
| * DIRDEPS_BUILD: None of this is needed anymore.bdrewery2016-03-111-22/+2
| | | | | | | | | | | | | | | | | | This file is using stage-install, so all of the .dirdep files are properly handled. The cookie handling also properly handles rebuilds with .meta files. DESTDIR from bsd.sys.mk is also respected for staging. This logic came in r239572. Sponsored by: EMC / Isilon Storage Division
| * DIRDEPS_BUILD: Remove the cookie when target is out-of-date.bdrewery2016-03-111-9/+7
| | | | | | | | | | | | | | | | | | | | | | The meta file may decide the target is out of date but nothing ensures that the *next* build will build this target if it fails this time for some reason; it is still out-of-date until it succeeds. Convert the include/ cookie usage to the global versions. Sponsored by: EMC / Isilon Storage Division
* | MFHgjb2016-03-062-9/+6
|\ \ | |/ | | | | Sponsored by: The FreeBSD Foundation
| * xdr: Fix xdr_rpc* defines.pfg2016-03-041-9/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | The defines for xdr_rpc* in xdr.h are wrong. It could be very well that Solaris did strip the '_t' from xdr_u_int32_t, but Solaris has a xdr_u_int32 function, we don't have this. So all of this defines will lead to an unresolved symbol. This explains why we do not use these functions in FreeBSD while they are used in Illumos/Solaris. Obtained from: linux libtirpc (git 7864122e61ffe4db1aa8ace89117358a1e3a391b) MFC after: 3 weeks
| * Add sunrpc compat define for xp_sock.pfg2016-03-031-0/+1
| | | | | | | | | | | | | | | | | | SunRPC is using xp_sock in SVCXPRT, while TI-RPC is using xp_fd. Add a compatibility define. Illumos has something similar for the non-kernel case. Obtained from: linux-nfs project (git 0d94036c3a0d4c24d22bf6a8c40ac6625d972c29)
* | MFHgjb2016-03-024-3/+10
|\ \ | |/ | | | | Sponsored by: The FreeBSD Foundation
| * Update jemalloc to 4.1.0.jasone2016-02-291-0/+7
| | | | | | | | | | | | | | | | | | | | Add missing Symbol.map entry for __aligned_alloc. Add weak-->strong symbol binding for {malloc_stats_print,mallctl,mallctlnametomib,mallctlbymib} --> {__malloc_stats_print,__mallctl,__mallctlnametomib,__mallctlbymib}. These bindings complete the set necessary to allow applications to replace all malloc-related symbols.
| * Implement process-shared locks support for libthr.so.3, withoutkib2016-02-282-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | breaking the ABI. Special value is stored in the lock pointer to indicate shared lock, and offline page in the shared memory is allocated to store the actual lock. Reviewed by: vangyzen (previous version) Discussed with: deischen, emaste, jhb, rwatson, Martin Simmons <martin@lispworks.com> Tested by: pho Sponsored by: The FreeBSD Foundation
| * RPC: update the getrpcbyname() definition to include a const qualifier.pfg2016-02-261-1/+1
| | | | | | | | | | | | | | Add const qualifier making getrpcbyname() and getrpcbyname_r() prototypes match those used in latest Sun RPC code (TI-RPC 2.3). Obtained from: NetBSD
* | MFHgjb2016-02-151-1/+4
|\ \ | |/ | | | | Sponsored by: The FreeBSD Foundation
| * Hide ucontext_t and mcontext_t when neither POSIX nor XSI features arekib2016-02-131-0/+2
| | | | | | | | | | | | | | | | | | enabled in the compilation environment, i.e. for ANSI C use of #include <signal.h>. Requested and reviewed by: bde Sponsored by: The FreeBSD Foundation MFC after: 13 days
| * POSIX states that #include <signal.h> shall make both mcontext_t andkib2016-02-121-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ucontext_t available. Our code even has XXX comment about this. Add a bit of compliance by moving struct __ucontext definition into sys/_ucontext.h and including it into signal.h and sys/ucontext.h. Several machine/ucontext.h headers were changed to use namespace-safe types (like uint64_t->__uint64_t) to not depend on sys/types.h. struct __stack_t from sys/signal.h is made always visible in private namespace to satisfy sys/_ucontext.h requirements. Apparently mips _types.h pollutes global namespace with f_register_t type definition. This commit does not try to fix the issue. PR: 207079 Reported and tested by: Ting-Wei Lan <lantw44@gmail.com> Sponsored by: The FreeBSD Foundation MFC after: 2 weeks
* | Ensure include/ is properly tagged in the METALOG.gjb2016-02-081-41/+43
|/ | | | | Noticed by: des Sponsored by: The FreeBSD Foundation
* Provide new socket option TCP_CCALGOOPT, which stands for TCP congestionglebius2016-01-221-0/+1
| | | | | | | | | | | | | | | control algorithm options. The argument is variable length and is opaque to TCP, forwarded directly to the algorithm's ctl_output method. Provide new includes directory netinet/cc, where algorithm specific headers can be installed. The new API doesn't yet have any in tree consumers. The original code written by lstewart. Reviewed by: rrs, emax Sponsored by: Netflix Differential Revision: https://reviews.freebsd.org/D711
* - Add the definition of CHARCLASS_NAME_MAX, as per POSIX.1-2001.kevlo2016-01-091-2/+5
| | | | | | | | - Avoid namespace pollution and move definitions of _POSIX2_CHARCLASS_NAME_MAX and _POSIX2_COLL_WEIGHTS_MAX into the .2001 section. With input from bde. Submitted by bde
* Add sbin and /usr/local directories to _PATH_DEFPATH.jilles2016-01-051-2/+2
| | | | | | | | | | | | | | | | | Set _PATH_DEFPATH to /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin. This is the path in the default class in the default /etc/login.conf, excluding ~/bin which would not be expanded properly in a string constant. For normal logins, _PATH_DEFPATH is overridden by /etc/login.conf, ~/.login_conf or shell startup files. _PATH_DEFPATH is still used as a default by execlp(), execvp(), posix_spawnp() and sh if PATH is not set, and by cron. Especially the latter is a common trap (most recently in PR 204813). PR: 204813 Reviewed by: secteam (delphij), alfred
* Replace implementation of hsearch() by one that scales.ed2015-12-271-4/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Traditionally the hcreate() function creates a hash table that uses chaining, using a fixed user-provided size. The problem with this approach is that this often either wastes memory (table too big) or yields bad performance (table too small). For applications it may not always be easy to estimate the right hash table size. A fixed number only increases performance compared to a linked list by a constant factor. This problem can be solved easily by dynamically resizing the hash table. If the size of the hash table is at least doubled, this has no negative on the running time complexity. If a dynamically sized hash table is used, we can also switch to using open addressing instead of chaining, which has the advantage of just using a single allocation for the entire table, instead of allocating many small objects. Finally, a problem with the existing implementation is that its deterministic algorithm for hashing makes it possible to come up with fixed patterns to trigger an excessive number of collisions. We can easily solve this by using FNV-1a as a hashing algorithm in combination with a randomly generated offset basis. Measurements have shown that this implementation is about 20-25% faster than the existing implementation (even if the existing implementation is given an excessive number of buckets). Though it allocates more memory through malloc() than the old implementation (between 4-8 pointers per used entry instead of 3), process memory use is similar to the old implementation as if the estimated size was underestimated by a factor 10. This is due to the fact that malloc() needs to perform less bookkeeping. Reviewed by: jilles, pfg Obtained from: https://github.com/NuxiNL/cloudlibc Differential Revision: https://reviews.freebsd.org/D4644
* Let tsearch()/tdelete() use an AVL tree.ed2015-12-221-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The existing implementations of POSIX tsearch() and tdelete() don't attempt to perform any balancing at all. Testing reveals that inserting 100k nodes into a tree sequentially takes approximately one minute on my system. Though most other BSDs also don't use any balanced tree internally, C libraries like glibc and musl do provide better implementations. glibc uses a red-black tree and musl uses an AVL tree. Red-black trees have the advantage over AVL trees that they only require O(1) rotations after insertion and deletion, but have the disadvantage that the tree has a maximum depth of 2*log2(n) instead of 1.44*log2(n). My take is that it's better to focus on having a lower maximum depth, for the reason that in the case of tsearch() the invocation of the comparator likely dominates the running time. This change replaces the tsearch() and tdelete() functions by versions that create an AVL tree. Compared to musl's implementation, this version is different in two different ways: - We don't keep track of heights; just balances. This is sufficient. This has the advantage that it reduces the number of nodes that are being accessed. Storing heights requires us to also access all of the siblings along the path. - Don't use any recursion at all. We know that the tree cannot 2^64 elements in size, so the height of the tree can never be larger than 96. Use a 128-bit bitmask to keep track of the path that is computed. This allows us to iterate over the same path twice, meaning we can apply rotations from top to bottom. Inserting 100k nodes into a tree now only takes 0.015 seconds. Insertion seems to be twice as fast as glibc, whereas deletion has about the same performance. Unlike glibc, it uses a fixed amount of memory. I also experimented with both recursive and iterative bottom-up implementations of the same algorithm. This iterative top-down version performs similar to the recursive bottom-up version in terms of speed and code size. For some reason, the iterative bottom-up algorithm was actually 30% faster for deletion, but has a quadratic memory complexity to keep track of all the parent pointers. Reviewed by: jilles Obtained from: https://github.com/NuxiNL/cloudlibc Differential Revision: https://reviews.freebsd.org/D4412
* addrinfo.ai_family is an address family, not a protocol family.ume2015-12-201-1/+1
| | | | | PR: 162434 MFC after: 1 week
* Add AI_V4MAPPED and AI_ALL support for getaddrinfo(3).ume2015-12-181-1/+1
| | | | | | | We need to change netdb.h to make it actually enabled. PR: 198092 MFC after: 1 week
* resolver: preserve binary compatibility; reduce header pollutionvangyzen2015-12-141-5/+1
| | | | | | | | | | | | | | In r289315, I added new fields to res_state. This broke binary backward compatibility. It also broke some ports (and possibly other code) by requiring the definition of time_t and struct timespec. Fix these problems by moving the new fields into __res_state_ext. Suggested by: ume Reviewed by: ume MFC after: 3 days Sponsored by: Dell Inc. Differential Revision: https://reviews.freebsd.org/D4472
* resolver: fix the build of some ports, broken by r289315vangyzen2015-12-081-0/+1
| | | | | | | | | | | r289315 required time_t and struct timespec to be defined before including <resolv.h>. This broke the build of net-mgmt/sx, at least. Include <sys/timespec.h> in resolv.h to fix this with minimal pollution. Reported by: Raphael Kubo da Costa <rakuco> MFC after: 3 days Sponsored by: Dell Inc.
* Move obscure lib/ installation of /usr/lib/include symlink to include/.bdrewery2015-12-041-0/+2
| | | | | | | | | This avoids the need for an afterinstall: hook and a check for LIBRARIES_ONLY. It also now respects INCLUDEDIR. This came in r249484. Sponsored by: EMC / Isilon Storage Division
* Replace ln -s calls with INSTALL_SYMLINKbdrewery2015-12-041-18/+18
| | | | Sponsored by: EMC / Isilon Storage Division
* Stop building vers.c in include/ and only build the needed osreldate.h.bdrewery2015-11-252-8/+4
| | | | | | | | | | | | | Because of how osreldate.h was being built with newvers.sh, which always spat out a vers.c dependent on SVN or git, the meta mode build was considering osreldate.h to depend on the current git or SVN index. This would lead to entire tree rebuilds when modifying git's index. There's no reason to be generating vers.c here so just skip it. While here, in mk-osreldate.sh rename PARAM_H to proper PARAMFILE (which newvers.sh already has a default for) and remove unneeded export. Sponsored by: EMC / Isilon Storage Division
* META MODE: Fix changing what "MACHINE=host" means when computing dirdeps for ↵bdrewery2015-11-181-1/+1
| | | | | | | | | | | | | include/. The _SKIP_BUILD is used while computing DIRDEPS. If MACHINE=host is passed in then this logic was replacing 'MACHINE' with a literal value of the host arch, which then caused the dirdeps graph to be wrong since it no longer had the literal 'host' for any of include's dependencies. This is a NOP currently since include/ is not usually built with MACHINE=host. Sponsored by: EMC / Isilon Storage Division
* Rename META_MODE option to DIRDEPS_BUILDsjg2015-11-141-3/+3
| | | | | | | | | This allows META_FILES option to be renamed META_MODE. Also add META_COOKIE_TOUCH for use in targets that can benefit from a cookie when in meta mode. Differential Revision: https://reviews.freebsd.org/D4153 Reviewed by: bdrewery
* Merge from head r290483bapt2015-11-071-2/+2
|\
| * Rename __sentinel to __null_sentinelpfg2015-11-051-2/+2
| | | | | | | | | | | | GCC 5 uses a conflicting __sentinel definition in include/c++/bits/stl_algo.h Reported by: matteo
* | Merge from headbapt2015-11-011-0/+3
|\ \ | |/
| * Add _flags2 per jhb@ suggestion since no room left in _flags.ache2015-10-281-0/+3
| | | | | | | | | | | | Rewrite O_APPEND flag checking using new __S2OAP flag. MFC after: 3 weeks
* | Merge from headbapt2015-10-192-1/+5
|\ \ | |/
| * Add more SUBDIR_PARALLEL.bdrewery2015-10-151-0/+1
| | | | | | | | | | MFC after: 3 weeks Sponsored by: EMC / Isilon Storage Division
| * resolver: automatically reload /etc/resolv.confvangyzen2015-10-141-1/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On each resolver query, use stat(2) to see if the modification time of /etc/resolv.conf has changed. If so, reload the file and reinitialize the resolver library. However, only call stat(2) if at least two seconds have passed since the last call to stat(2), since calling it on every query could kill performance. This new behavior is enabled by default. Add a "reload-period" option to disable it or change the period of the test. Document this behavior and option in resolv.conf(5). Polish the man page just enough to appease igor. https://lists.freebsd.org/pipermail/freebsd-arch/2015-October/017342.html Reviewed by: kp, wblock Discussed with: jilles, imp, alfred MFC after: 1 month Relnotes: yes Sponsored by: Dell Inc. Differential Revision: https://reviews.freebsd.org/D3867
* | Commit log from Dragonfly:bapt2015-10-134-11/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | FreeBSD extended ctypes to include numbers (e.g. isnumber()) but never actually implemented it. The isnumber() function was equivalent to the isdigit() function in every case. Now that DragonFly's ctype source files have number definitions, the number ctype can finally be implemented. It's given a new flag _CTYPE_N. The isalnum() and iswalnum() functions have been changed to use this flag rather than the _CTYPE_D digit flag. While isalnum(), isnumber(), and their wide equivalents now return different values in locale cases, the ishexnumber() and iswhexnumber() functions are unchanged. They are still aliases for isxdigit() and iswxdigit(). Also change ctype.h for isdigit and isxdigit to use sbistype like the other functions. Obtained from: dragonfly
* | Merge from headbapt2015-10-131-9/+9
|\ \ | |/
| * Mute this cookie as wellbdrewery2015-10-031-1/+1
| |
| * Avoid make compatibility mode issues with creating cookies from r287844 and ↵bdrewery2015-10-031-5/+3
| | | | | | | | | | | | | | | | r287848. Also hide the cookie creation. Suggested by: imp, Daniel O'Connor
OpenPOWER on IntegriCloud