FreeBSD src
Go to file
Ed Maste 88521634e9 libc: Use musl's O(n) memmem and strstr
It is O(n) in the length of the haystack (big) string, and has special
cases for short needle (little) strings, of one to four bytes, to avoid
excessive overhead.

There are a small set of nearly trivial cases where the startup overhead
of the musl implementation makes it slightly slower -- for example, a 31
byte needle that matches the beginning of the haystack.  It's faster for
non-trivial cases, and significantly so for inputs that trigger worst-
case behaviour of the previous implementation.  As an example, in my
tests a 16K needle that matches the end of a 64K haystack is nearly
2000x faster with this implementation.

Reviewed by:	bapt (earlier), ed (earlier)
Obtained from:	musl (snapshot at commit c718f9fc)
Sponsored by:	The FreeBSD Foundation
Differential Revision:	https://reviews.freebsd.org/D2601
2017-03-18 00:51:39 +00:00
bin sh: Get rid of global variable argbackq. 2017-03-16 21:53:55 +00:00
cddl cddl: normalize paths using SRCTOP-relative paths or :H when possible 2017-03-04 11:30:04 +00:00
contrib Add ZFS compressed ARC stats to top(1) 2017-03-17 00:46:50 +00:00
crypto Upgrade to OpenSSH 7.4p1. 2017-03-06 01:37:05 +00:00
etc - Add support for eMMC "partitions". Besides the user data area, i. e. 2017-03-16 22:23:04 +00:00
gnu Fix SUBDIR_DEPEND for gdb on binutils after r307659. 2017-03-15 21:17:45 +00:00
include - Add support for eMMC "partitions". Besides the user data area, i. e. 2017-03-16 22:23:04 +00:00
kerberos5 kerberos5: normalize paths using SRCTOP-relative paths or :H when possible 2017-03-04 11:34:36 +00:00
lib libc: Use musl's O(n) memmem and strstr 2017-03-18 00:51:39 +00:00
libexec Remove unused vmmeter. 2017-03-17 04:16:14 +00:00
release ec2.conf and vmimage.subr can be used from the installation livecd after 2017-03-09 01:26:10 +00:00
rescue Make rescue use SRCTOP 2017-03-12 18:59:09 +00:00
sbin Change the syntax of ipfw's named states. 2017-03-15 13:36:35 +00:00
secure Upgrade to OpenSSH 7.4p1. 2017-03-06 01:37:05 +00:00
share META_MODE: Fix not using .depend files when no OBJDIR is present. 2017-03-17 18:08:36 +00:00
sys Again, fixes regarding style(4), to comments, includes and unused 2017-03-17 22:57:37 +00:00
targets pwait: Add a -t flag to specify a timeout before exiting, and tests. 2017-03-07 22:16:55 +00:00
tests Constrain IPv6 routes to single FIBs when net.add_addr_allfibs=0 2017-03-17 16:50:37 +00:00
tools Redirect standard error from find /rescue to /dev/null 2017-03-14 06:52:54 +00:00
usr.bin Add ZFS compressed ARC stats to top(1) 2017-03-17 00:46:50 +00:00
usr.sbin Revert changes introduced in r314036 on demand by jhb and bapt. 2017-03-17 11:45:46 +00:00
.arcconfig callsign isn't required anymore 2016-09-29 06:19:45 +00:00
.arclint phabricator related changes: 2015-04-20 20:33:22 +00:00
COPYRIGHT Bump copyright year. 2016-12-31 12:41:42 +00:00
LOCKS
MAINTAINERS As suggested by several people, note that I prefer to communicate by email. 2017-03-03 20:23:21 +00:00
Makefile Remove pc98 support completely. 2017-01-28 02:22:15 +00:00
Makefile.inc1 Fix native-xtools after replacement of GNU diff 2017-03-12 03:33:20 +00:00
Makefile.libcompat Use cross-NM (XNM) in compat32 build 2017-01-27 03:43:18 +00:00
ObsoleteFiles.inc Remove /usr/tests/sys/geom/eli/... 2017-03-14 07:09:51 +00:00
README README: remove nonexistent 'games' directory. 2016-05-18 10:43:13 +00:00
README.md Remove hard line breaks from README.md 2017-03-01 15:39:58 +00:00
UPDATING - Add support for eMMC "partitions". Besides the user data area, i. e. 2017-03-16 22:23:04 +00:00

FreeBSD Source:

This is the top level of the FreeBSD source directory. This file was last revised on: FreeBSD

For copyright information, please see the file COPYRIGHT in this directory (additional copyright information also exists for some sources in this tree - please see the specific source directories for more information).

The Makefile in this directory supports a number of targets for building components (or all) of the FreeBSD source tree. See build(7) and http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/makeworld.html for more information, including setting make(1) variables.

The buildkernel and installkernel targets build and install the kernel and the modules (see below). Please see the top of the Makefile in this directory for more information on the standard build targets and compile-time flags.

Building a kernel is a somewhat more involved process. See build(7), config(8), and http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/kernelconfig.html for more information.

Note: If you want to build and install the kernel with the buildkernel and installkernel targets, you might need to build world before. More information is available in the handbook.

The kernel configuration files reside in the sys/<arch>/conf sub-directory. GENERIC is the default configuration used in release builds. NOTES contains entries and documentation for all possible devices, not just those commonly used.

Source Roadmap:

bin				System/user commands.

cddl			Various commands and libraries under the Common Development  
				and Distribution License.

contrib			Packages contributed by 3rd parties.

crypto			Cryptography stuff (see crypto/README).

etc				Template files for /etc.

gnu				Various commands and libraries under the GNU Public License.  
				Please see gnu/COPYING* for more information.

include			System include files.

kerberos5		Kerberos5 (Heimdal) package.

lib				System libraries.

libexec			System daemons.

release			Release building Makefile & associated tools.

rescue			Build system for statically linked /rescue utilities.

sbin			System commands.

secure			Cryptographic libraries and commands.

share			Shared resources.

sys				Kernel sources.

tests			Regression tests which can be run by Kyua.  See tests/README
				for additional information.

tools			Utilities for regression testing and miscellaneous tasks.

usr.bin			User commands.

usr.sbin		System administration commands.

For information on synchronizing your source tree with one or more of the FreeBSD Project's development branches, please see:

http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/synching.html