summaryrefslogtreecommitdiffstats
path: root/lib/libc
Commit message (Collapse)AuthorAgeFilesLines
* Use size_t instead of unsigned for pagesize-related values, in order tojasone2007-03-291-4/+8
| | | | | | | | | avoid downcasting issues. In particular, this change fixes posix_memalign(3) for alignments greater than 2^31 on LP64 systems. Make sure that NDEBUG is always set to be compatible with MALLOC_DEBUG. [1] Reported by: [1] Lee Hyo geol <hyogeollee@gmail.com>
* Remove the run promotion/demotion machinery. Replace it with red-blackjasone2007-03-281-430/+219
| | | | | | | | | | | | | | | | | | | | | | | trees that track all non-full runs for each bin. Use the red-black trees to be able to guarantee that each new allocation is placed in the lowest address available in any non-full run. This change completes the transition to allocating from low addresses in order to reduce the retention of sparsely used chunks. If the run in current use by a bin becomes empty, deallocate the run rather than retaining it for later use. The previous behavior had the tendency to spread empty runs across multiple chunks, thus preventing the release of chunks that were completely unused. Generalize base_chunk_alloc() (and rename it to base_pages_alloc()) to handle allocation sizes larger than the chunk size, so that it is possible to support chunk sizes that are smaller than an arena object. Reduce the minimum chunk size from 64kB to 8kB. Optimize tracking of addresses for deleted chunks. Fix a statistics bug for huge allocations.
* Change macro in order to refer to FreeBSD 7.0 instead of 7.0BSD.jasone2007-03-281-2/+2
| | | | Reported by: Michal Mertl <mime@traveller.cz>
* Update the IMPLEMENTATION NOTES section to reflect recent mallocjasone2007-03-281-13/+30
| | | | enhancements.
* Remove some stray roff formatting that caused incorrect rendering.jasone2007-03-281-1/+0
|
* Add a HISTORY section.jasone2007-03-281-0/+5
|
* Fix some subtle bugs for posix_memalign() having to do with integerjasone2007-03-241-18/+43
| | | | | | | | rounding and overflow. Carefully document what the various overflow tests actually detect. The bugs mostly canceled out, such that the worst possible failure cases resulted in non-fatal over-allocations.
* Fix posix_memalign() for large objects. Now that runs are extents ratherjasone2007-03-231-151/+297
| | | | | | | | than binary buddies, the alignment guarantees are weaker, which requires a more complex aligned allocation algorithm, similar to that used for alignment greater than the chunk size. Reported by: matteo
* Use extents rather than binary buddies to track free pages withinjasone2007-03-231-323/+332
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | chunks. This allows runs to be any multiple of the page size. The primary advantage is that large objects are no longer constrained to be 2^n pages, which can dramatically decrease internal fragmentation for large objects. This also allows the sizes for runs that back small objects to be more finely tuned. Free runs are searched for linearly using the chunk page map (with the help of some heuristic optimizations). This changes the allocation policy from "first best fit" to "first fit". A prototype red-black tree implementation for tracking free runs that implemented "first best fit" did not cause a measurable speed or memory usage difference for realistic chunk sizes (though of course it is possible to construct benchmarks that favor one allocation policy over another). Refine the handling of fullness constraints for small runs to be more tunable. Restructure the per chunk page map to contain only two fields per entry, rather than four. Also, increase each entry from 4 to 8 bytes, since it allows for 32-bit integers, without increasing the number of chunk header pages. Relax the maximum chunk size constraint. This is of no practical interest; it is merely fallout from the chunk page map restructuring. Revamp statistics gathering and reporting to be faster, clearer and more informative. Statistics gathering is fast enough now to have little to no impact on application speed, but it still requires approximately two extra pages of memory per arena (per process). This memory overhead may be acceptable for most systems, but we still need to leave statistics gathering disabled by default in RELENG branches. Rename NO_MALLOC_EXTRAS to MALLOC_PRODUCTION in order to make its intent clearer (i.e. it should be defined in RELENG branches).
* Let people in on the magic of INET[6]_ADDRSTRLEN which comes quite handy inmlaier2007-03-211-1/+6
| | | | | | combination with inet_ntop(). Reviewed by: trhodes "works for me"
* Avoid using vsnprintf(3) unless MALLOC_STATS is defined, in order tojasone2007-03-201-152/+233
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | avoid substantial potential bloat for static binaries that do not otherwise use any printf(3)-family functions. [1] Rearrange arena_run_t so that the region bitmask can be minimally sized according to constraints related to each bin's size class. Previously, the region bitmask was the same size for all run headers, which wasted a measurable amount of memory. Rather than making runs for small objects as large as possible, make runs as small as possible such that header overhead stays below a certain bound. There are two exceptions that override the header overhead bound: 1) If the bound is impossible to honor, it is relaxed on a per-size-class basis. Since there is one bit of header overhead per object (plus a constant), it is impossible to achieve a header overhead less than or equal to 1/(# of bits per object). For the current setting of maximum 0.5% header overhead, this relaxation comes into play for {2, 4, 8, 16}-byte objects, for which header overhead is (on 64-bit systems) {7.1, 4.3, 2.2, 1.2}%, respectively. 2) There is still a cap on small run size, still set to 64kB. This comes into play for {1024, 2048}-byte objects, for which header overhead is {1.6, 3.1}%, respectively. In practice, this reduces the run sizes, which makes worst case low-water memory usage due to fragmentation less bad. It also reduces worst case high-water run fragmentation due to non-full runs, but this is only a constant improvement (most important to small short-lived processes). Reduce the default chunk size from 2MB to 1MB. Benchmarks indicate that the external fragmentation reduction makes 1MB the new sweet spot (as small as possible without adversely affecting performance). Reported by: [1] kientzle
* o Add ENVIRONMENT section and mention there that TMPDIR is ignoredmaxim2007-03-161-1/+14
| | | | | | | | when issetugid(3) is true. PR: docs/108346 Obtained from: OpenBSD MFC after: 1 week
* - Sysctl's move to seperate filerrs2007-03-151-6/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | - moved away from ifn/ifa access to sctp_ifa/sctp_ifn built and managed by the add-ip code. - cleaned up add-ip code to use the iterator - made iterator be a thread, which enables auto-asconf now. - rewrote and cleaned up source address selection (also made it use new structures). - Fixed a couple of memory leaks. - DACK now settable as to how many packets to delay as well as time. - connectx() to latest socket API, new associd arg. - Fixed issue with revoking and loosing potential to send when we inflate the flight size. We now inflate the cwnd too and deflate it later when the revoked chunk is sent or acked. - Got rid of some temp debug code - src addr selection moved to a common file (sctp_output.c) - Support for simple VRF's (we have support for multi-vfr via compile switch that is scrubbed from BSD but we won't need multi-vrf until we first get VRF :-D) - Rest of mib work for address information now done - Limit number of addresses in INIT/INIT-ACK to a #def (30). Reviewed by: gnn
* Wordsmithery.bms2007-03-091-1/+1
| | | | Pointed out by: ru
* Document SO_ACCEPTCONN.bms2007-03-081-1/+9
| | | | | Submitted by: Vlad GALU (with changes) MFC after: 3 days
* Fix license. Clause 4 is still required (UCB materiel).bms2007-03-071-6/+5
| | | | | Submitted by: rwatson Pointy hat to: bms
* use 2-clause BSD license as per hoskins strike-off july 22 1999.bms2007-03-071-4/+6
| | | | use wording of FreeBSD License.
* Only reject file descriptors higher than FD_SETSIZE if we are not usingjhb2007-03-051-7/+5
| | | | | | | | | | | | | poll(2) or kqueue(2). Previously we rejected fd's higher than FD_SETSIZE for kevent(2), and larger than sysconf(_SC_OPEN_MAX) for poll(2). However, the check for poll(2) wasn't really needed. open(2) and socket(2) won't return an fd you can't pass to either poll(2) or kevent(2). This fixes a but where gethostbyname() would fail if you had more than 1023 files open in a process. MFC after: 1 week Reviewed by: ume Found by: ps
* Apply my patch properly.ru2007-03-051-1/+1
|
* Fix markup.bms2007-03-051-22/+36
| | | | | Submitted by: ru MFC after: 2 days
* .Xr nit.bms2007-03-051-2/+2
| | | | Submitted by: brueffer
* Update shutdown() manual page to reflect actual behaviour of code.bms2007-03-051-10/+82
| | | | | | | | Add IMPLEMENTATION NOTES section explaining in detail the effect this system call has in common use cases involving PF_INET and PF_INET6 sockets. PR: kern/84761 MFC after: 2 days
* Test cases for back references.delphij2007-03-051-0/+24
| | | | Obtained from: OpenBSD
* Only stop evaluation of a back reference if the match length isdelphij2007-03-051-15/+17
| | | | | | zero and the recursion level is too deep. Obtained from: OpenBSD
* Avoid infinite recursion on:delphij2007-03-051-0/+2
| | | | | | echo "foo foo bar bar bar baz" | sed 's/\([^ ]*\)\( *\1\)*/\1/g' Obtained from: OpenBSD via NetBSD (rev. 1.18)
* Disable RPC exponential back-off for FreeBSD.org systems (IE. hiddensimon2007-03-042-0/+10
| | | | | | | | | | | | | behind _FREEFALL_CONFIG). This is done mainly to make NIS even more resistant to packet loss. This is not enabled by default for "normal" FreeBSD since it might cause the server providing the RPC service to be hit heavily with RPC traffic in case of problems. freefall.FreeBSD.org and hub.FreeBSD.org have been running with a patch similar to this for a couple of weeks. MFC after: 1 week Discussed with: peter
* - Bump _yplib_timeout limit from 10 to 20 seconds to better handlesimon2007-03-041-1/+9
| | | | | | | | | | | | | | | | | | | | | | | packet loss when talking to a NIS server. - Set 1 second retry timeout to further realistically handle UDP packet loss for yp_next packet bursts. If the packet hasn't come back within 1 second its rather unlikely to come back at all. There is still back-off mechanism in RPC so if there is another reason than packet loss for the lack of response within 1 second, the NIS server will not be totally bombarded with requests. This reduces the risk of NIS failing with: yp_next: clnt_call: RPC: Timed out considerably. This is mainly a problem if you have larger NIS maps (like at FreeBSD.org) since enumerations of the lists will cause a UDP packet bursts where a few packets being lost once in a while do happen. MFC after: 1 week Discussed with: peter Problem mainly diagnosed by: peter
* Document the AF_LINK extension which was imported from NetBSD.bms2007-02-281-4/+19
|
* Nuke ascii2addr() and addr2ascii(). They have no consumers anywherebms2007-02-288-441/+123
| | | | | | | | | | | | | | in FreeBSD, and originated from INRIA IPv6. Stub out netstat reference to addr2ascii() I mistakenly introduced. Update misleading man page sections. Merge NetBSD's getnameinfo() AF_LINK extensions for a portable way to print link-layer addresses given a sockaddr_dl(), minus the IEEE 1394 bits which don't map directly to our code. Obtained from: NetBSD (getnameinfo.c) Discussed on: current (March 2006)
* Fix include declaration it was sys/sctp.h should be netinet/sctp.h,rrs2007-02-2613-13/+13
| | | | reported by pluknet@gmail.com.
* Move _posix1e_acl_name_to_id out of acl_support.c and intokientzle2007-02-263-55/+52
| | | | | | | | | acl_from_text.c. Since acl_from_text.c is the only place it is used, we can now make this internal utility function "static." As a bonus, acl_set_fd() no longer pulls in getpwuid() for no reason. MFC after: 7 days
* Don't assert() the TLS allocation requested is big enough; justkientzle2007-02-251-2/+2
| | | | | | fix the argument. In particular, this is a step towards breaking crt1's dependence on stdio.
* Modify chunk_alloc() to prefer mmap()ed memory over sbrk()ed memory.jasone2007-02-221-36/+40
| | | | | | | | | | | This has no impact unless USE_BRK is defined (32-bit platforms), in which case user allocations are allocated via mmap() if at all possible, in order to avoid the possibility of unreclaimable chunks in the data segment. Fix an obscure bug in base_alloc() that could have allowed undefined behavior if an application were to use sbrk() in conjunction with a USE_BRK-enabled malloc.
* Fixes build breakage.. invalid type casts.. and invalidrrs2007-02-221-6/+6
| | | | type for size in one place.
* First cut of the sctp man pages. Still need work.rrs2007-02-2215-1/+1791
|
* Fixes __FreeBSD__ being present (they should not)rrs2007-02-221-6/+4
| | | | and also trailing garbage on undef of magic numbers.
* Adds a performance improvement for when sctp_sendx isrrs2007-02-221-23/+43
| | | | | | | | | called with only one address, we then can call the generic system call. Also fixes some socket api type issues and cleans up the "magic" numbers that were being used in the code. Reviewed by: gnn
* Fix mis-reference of incorrect manual page in ERRORS section.trhodes2007-02-171-1/+1
| | | | Noticed by: Harlan Stenn <stenn@ntp.isc.org>
* New sentence -> new line. While here, fix apostrophe abuse.brueffer2007-02-141-4/+7
|
* Change the date.julian2007-02-131-1/+1
|
* Make the kse man page reflect the removal of the KSEGRP kernel abstraction.julian2007-02-131-54/+30
|
* o s/cgetseq/cgetset/maxim2007-02-111-1/+1
| | | | Obtained from: DragonFly
* Docment the acceptable values for the id parameter.mpp2007-02-011-1/+16
|
* Fix a utrace(2)-related bug in calloc(3).jasone2007-01-311-44/+56
| | | | | | Integrate various pedantic cleanups. Submitted by: Andrew Doran <ad@netbsd.org>
* Remove getobjformat() from libc's symbol map. It probably should have beenpeter2007-01-251-1/+0
| | | | in the private area anyway. Nothing in FreeBSD uses it any more anyway.
* Retire more remnants of a.out support, as threatened in 2002.peter2007-01-253-182/+2
| | | | Laughed-at-by: kris
* Docuemnt exactly which functions access which NSS databases.bms2007-01-221-1/+15
| | | | | | | | Point out that FreeBSD libc has compat stubs for GNU glibc NSS modules which access NSDB_PASSWD/NSDB_GROUP, but not NSDB_HOSTS; based on painful experience porting nss_mdns. Reviewed by: ru
* o Remove duplicate includes.maxim2007-01-203-3/+0
| | | | Obtained from: Slava Semushin via NetBSD
* On FreeBSD/arm, any value > 50 bits will result in a rediculously hugeimp2007-01-191-2/+2
| | | | | | | | | | | number being returned for mktime and timegm calls. Choose 48 because that works well. This does reduce the dynamic range of tm_year from about 2 billion years down to "only" about 9 million years. Please contact me if this restriction poses a problem. Due to the complexity of the code, I admit that I didn't trace down what, exactly, was overflowing with longer bits. This fixes software that we run on the embedded systems we have.
* When we try to set set-gid bit with chmod(2) on a file, which we own, but ourpjd2007-01-161-1/+5
| | | | | | effective group ID (and any of our group) doesn't match the group ID of the file, we get EPERM. This doesn't conform POSIX. POSIX requires that we should return 0, but silently clear the set-gid bit.
OpenPOWER on IntegriCloud