summaryrefslogtreecommitdiffstats
path: root/lib
Commit message (Collapse)AuthorAgeFilesLines
...
* Add a feature_present(3) function which checks to see if a named kerneljhb2008-01-103-2/+137
| | | | | | feature is present by checking the kern.features sysctl MIB. MFC after: 1 week
* Add a new file descriptor type for IPC shared memory objects and use it tojhb2008-01-085-335/+161
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | implement shm_open(2) and shm_unlink(2) in the kernel: - Each shared memory file descriptor is associated with a swap-backed vm object which provides the backing store. Each descriptor starts off with a size of zero, but the size can be altered via ftruncate(2). The shared memory file descriptors also support fstat(2). read(2), write(2), ioctl(2), select(2), poll(2), and kevent(2) are not supported on shared memory file descriptors. - shm_open(2) and shm_unlink(2) are now implemented as system calls that manage shared memory file descriptors. The virtual namespace that maps pathnames to shared memory file descriptors is implemented as a hash table where the hash key is generated via the 32-bit Fowler/Noll/Vo hash of the pathname. - As an extension, the constant 'SHM_ANON' may be specified in place of the path argument to shm_open(2). In this case, an unnamed shared memory file descriptor will be created similar to the IPC_PRIVATE key for shmget(2). Note that the shared memory object can still be shared among processes by sharing the file descriptor via fork(2) or sendmsg(2), but it is unnamed. This effectively serves to implement the getmemfd() idea bandied about the lists several times over the years. - The backing store for shared memory file descriptors are garbage collected when they are not referenced by any open file descriptors or the shm_open(2) virtual namespace. Submitted by: dillon, peter (previous versions) Submitted by: rwatson (I based this on his version) Reviewed by: alc (suggested converting getmemfd() to shm_open())
* sem_post() requires to return -1 on error.davidxu2008-01-071-2/+2
|
* Enable both sbrk(2)- and mmap(2)-based memory acquisition methods byjasone2008-01-032-19/+20
| | | | | | | | | default. This has the disadvantage of rendering the datasize resource limit irrelevant, but without this change, legitimate uses of more memory than will fit in the data segment are thwarted by default. Fix chunk_alloc_mmap() to work correctly if initial mapping is not chunk-aligned and mapping extension fails.
* Crib {be,le}{16,32,64}{dec,enc} from src/sys/sys/endian.h and use it insteaddes2008-01-032-57/+164
| | | | | | of home-rolled [iu][248] in the ZIP support code. Approved by: kientzle
* Add an internal utility function to simplify the many, many places wheredes2008-01-033-25/+24
| | | | | | | | the number of bytes read is actually not important as long as we have at least what we ask for. Illustrate its benefits by using it throughout the ZIP support code, except for the few cases where it doesn't apply. Approved by: kientzle
* Extensive improvements to the libarchive_test test program thatkientzle2008-01-0129-789/+3321
| | | | | | | | | | | | | | | | | | | | | | exercises and verifies the libarchive APIs: * Improved error reporting; hexdumps are now provided for many file/memory content differences. * Overall status more clearly counts "tests" and "assertions" * Reference files can now be stored on disk instead of having to be compiled into the test program itself. A couple of tests have been converted to this more natural structure. * Several memory leaks corrected so that leaks within libarchive itself can be more easily detected and diagnosed. * New test: GNU tar compatibility * New test: Zip compatibility * New test: Zero-byte writes to a compressed archive entry * New test: archive_entry_strmode() format verification * New test: mtree reader * New test: write/read of large (2G - 1TB) entries to tar archives (thanks to recent performance work, this test only requires a few seconds) * New test: detailed format verification of cpio odc and newc writers * Many minor additions/improvements to existing tests as well.
* The mtree.5 file has been moved to src/usr.sbin/mtree.kientzle2008-01-012-271/+0
|
* Fix a major chunk-related memory leak in chunk_dealloc_dss_record(). [1]jasone2007-12-311-65/+56
| | | | | | | | Clean up DSS-related locking and protect all pertinent variables with dss_mtx (remove dss_chunks_mtx). This fixes race conditions that could cause chunk leaks. Reported by: [1] kris
* Fix a bug related to sbrk() calls that could cause address space leaks.jasone2007-12-311-186/+268
| | | | | | | | | | | | | | | | | | | | | | | | | This is a long-standing bug, but until recent changes it was difficult to trigger, and even then its impact was non-catastrophic, with the exception of revision 1.157. Optimize chunk_alloc_mmap() to avoid the need for unmapping pages in the common case. Thanks go to Kris Kennaway for a patch that inspired this change. Do not maintain a record of previously mmap'ed chunk address ranges. The original intent was to avoid the extra system call overhead in chunk_alloc_mmap(), which is no longer a concern. This also allows some simplifications for the tree of unused DSS chunks. Introduce huge_mtx and dss_chunks_mtx to replace chunks_mtx. There was no compelling reason to use the same mutex for these disjoint purposes. Avoid memset() for huge allocations when possible. Maintain two trees instead of one for tracking unused DSS address ranges. This allows scalable allocation of multi-chunk huge objects in the DSS. Previously, multi-chunk huge allocation requests failed if the DSS could not be extended.
* - Update build glue for 5.6-20071222rafan2007-12-302-23/+54
|
* Update libarchive to 2.4.10. This includes a number of improvementskientzle2007-12-3031-245/+2118
| | | | | | | | | | | | | | | | | | | | | | | | that I've been working on but put off committing until after the RELENG_7 branch, including: * New manpages: cpio.5 mtree.5 * New archive_entry_strmode() * New archive_entry_link_resolver() * New read support: mtree format * Internal API change: read format auction only runs once * Running the auction only once allowed simplifying a lot of bid logic. * Cpio robustness: search for next header after a sync error * Support device nodes on ISO9660 images * Eliminate a lot of unnecessary copies for uncompressed archives * Corrected handling of new GNU --sparse --posix formats * Correctly handle a zero-byte write to a compressed archive * Fixed memory leaks Many of these improvements were motivated by the upcoming bsdcpio front-end. There have also been extensive improvements to the libarchive_test test harness, which I'll commit separately.
* - Update kvm_deadfiles to be compatible with the new system which has nojeff2007-12-301-44/+87
| | | | | | | | global list of all files. - Mark kvm_getfiles() as broken since the live version exports struct xfile with no filelist at the head and does so incorrectly and the deadfiles version exports struct file with a filelist at the head. It is not known if either version works or complies to the manpage.
* Back out premature commit of previous version.jasone2007-12-281-183/+113
|
* Maintain two trees instead of one (old_chunks --> old_chunks_{ad,szad}) injasone2007-12-281-113/+183
| | | | | | | | | order to support re-use of multi-chunk unused regions within the DSS for huge allocations. This generalization is important to correct function when mmap-based allocation is disabled. Avoid zeroing re-used memory in the DSS unless it really needs to be zeroed.
* Release chunks_mtx for all paths through chunk_dealloc().jasone2007-12-281-1/+4
| | | | Reported by: kris
* Add the 'D' and 'M' run time options, and use them to control whetherjasone2007-12-272-315/+492
| | | | | | | | | | | | | | | | | | memory is acquired from the system via sbrk(2) and/or mmap(2). By default, use sbrk(2) only, in order to support traditional use of resource limits. Additionally, when both options are enabled, prefer the data segment to anonymous mappings, in order to coexist better with large file mappings in applications on 32-bit platforms. This change has the potential to increase memory fragmentation due to the linear nature of the data segment, but from a performance perspective this is mitigated by the use of madvise(2). [1] Add the ability to interpret integer prefixes in MALLOC_OPTIONS processing. For example, MALLOC_OPTIONS=lllllllll can now be specified as MALLOC_OPTIONS=9l. Reported by: [1] rwatson Design review: [1] alc, peter, rwatson
* Fix a typo in regards to the ENOENT error.jhb2007-12-271-1/+1
| | | | | | PR: docs/118929 Submitted by: mymtom of hotmail MFC after: 3 days
* Clean up some of the pts(4) vs pty(4) stuff in grantpt(3) and friends:jhb2007-12-211-22/+23
| | | | | | | | | | - Use PTY* for all pty(4) related constants. - Use PTMX* for all pts(4) related constants. - Consistently use _PATH_DEV PTMX rather than "/dev/ptmx". - Revert 1.7 and properly fix it by using the correct prefix string for pts(4) masters. MFC after: 3 days
* Adjust for OpenPAM Hydrangea.des2007-12-214-7/+8
|
* Invoke revoke(2) on the slave pty in the pts(4) case (new_openpty()) tojhb2007-12-201-1/+13
| | | | | | | | kick off any other users on the device line before using it since openpty(3) is documented to do this. Note that grantpt(3) does not call revoke(2), it only adjusts permissions and ownership. MFC after: 3 days
* call underscore version of pthread_cleanup_pop instead.davidxu2007-12-201-1/+1
|
* Remove vfork() overloading, it is no longer needed.davidxu2007-12-202-11/+0
|
* Grumble. DO declare logbl(), DON'T declare logl() just yet.das2007-12-201-0/+2
| | | | | | | bde is going to commit logl() Real Soon Now. I'm just trying to slow him down with merge conflicts. Noticed by: bde
* Remove the declaration of logl(). The relevant bits haven't beendas2007-12-201-2/+0
| | | | | | | committed yet, but the declaration leaked in when I added nan() and friends. Reported by: pav
* Add missing dependencies on Makefile (fixes NO_CLEAN builds).ru2007-12-191-4/+4
|
* Reduce lock contention for simple cases.imp2007-12-191-16/+22
| | | | | | # this really should be done with pthread_once, but I've debugged this code. Reviewed by: arch@
* Add note about other systems.imp2007-12-191-0/+3
|
* As several people pointed out, I did all the ctype casts the wrongdes2007-12-194-28/+36
| | | | | | | way (not for the first time...) Noticed by: bde, ru ++ MFC after: 1 week
* Move all the xprintf-related symbols to FBSDprivate_1.0.das2007-12-181-9/+13
| | | | Discussed with: deischen, kan, phk
* Since nan() is supposed to work the same as strtod("nan(...)", NULL),das2007-12-188-50/+85
| | | | | | | | | | | | my original implementation made both use the same code. Unfortunately, this meant libm depended on a vendor header at compile time and previously- unexposed vendor bits in libc at runtime. Hence, I just wrote my own version of the relevant vendor routine. As it turns out, mine has a factor of 8 fewer of lines of code, and is a bit more readable anyway. The strtod() and *scanf() routines still use vendor code. Reviewed by: bde
* Document NO_PROXY / no_proxy.des2007-12-181-1/+17
| | | | MFC after: 3 weeks
* Add support for the NO_PROXY / no_proxy environment variable as used bydes2007-12-184-8/+63
| | | | | | | | | lynx, curl etc. Note that this patch differs significantly from that in the PR, as the submitter refined it after submitting the PR. PR: 110388 Submitted by: Alexander Pohoyda <alexander.pohoyda@gmx.net> MFC after: 3 weeks
* Old patch I had lying around: correctly cast the argument to is*().des2007-12-183-24/+25
| | | | | | IWBNI gcc could warn about this the way it warns about printf() abuse. MFC after: 1 week
* Use fixed point integer math instead of floating point math whenjasone2007-12-181-42/+47
| | | | | | | | | | calculating run sizes. Use of the floating point unit was a potential pessimization to context switching for applications that do not otherwise use floating point math. [1] Reformat cpp macro-related comments to improve consistency. Submitted by: das
* Fix logical bug in the bzip2 reading code, which results in bogus EIOsobomax2007-12-182-2/+48
| | | | | | | | | | | | | | | | | | | | | returned on a perfectly valid bzip2 stream whose decompressed size is multiple of read-ahead buffer size. Reproduce the problem is easy: create some power-of-two sized file (truncate -s 1m file will do), bzip2 it and try to load it as md_image from loader. See how it fails. The bug doesn't affect gzip code (which most of bzip2-reading code was copied from) probably due to the fact that libgzip doesn't report Z_STREAM_END with the last block, but requires extra call to inflate() to retrieve it and has some extra data in the input stream at that time. However, apply similar fix to gzipfs.c just in the case the API will change in the future to do what bzip2 code does. Add some ifdef'ed code to enable testing bzipfs.c from witin normal FreeBSD environment as opposed to the restricted loader one, so that one can use gdb and whatnot. Sponsored by: Sippy Software, Inc., http://www.sippysoft.com/ MFC in: 7 days
* Catch up with vfprintf.c,v 1.77.das2007-12-181-0/+1
|
* Remove z_abs(). The z_*() functions were in libf77, and for some reasondas2007-12-182-8/+0
| | | | | | | | someone thought it would be a good idea to copy z_abs() to libm in 1994. However, it's never been declared or documented anywhere, and I'm reasonably confident that nobody uses it. Discussed with: bde, deischen, kan
* Oops, the previous commit was not needed -- the file was committed butbde2007-12-171-1/+1
| | | | not checked out due to my checkout error.
* Translate from the i386 so that this compiles and runs.bde2007-12-171-1/+1
| | | | | | | I hope that this and the i386 version of it will not be needed, but this is currently about 16 cycles or 36% faster than the C version, and the i386 version is about 8 cycles or 19% faster than the C version, due to poor optimization of the C version.
* Moved logging out of the nss_method_lookup() in order not tobushman2007-12-171-9/+13
| | | | flood logs with failed fallback method lookup attempts.
* Don't try to build s_nanl.c before it is committed.bde2007-12-171-1/+1
|
* Add logbl(3) to libm.das2007-12-179-32/+184
|
* Add function prototypes.davidxu2007-12-171-1/+7
|
* Refactor features a bit in order to make it possible to disable lazyjasone2007-12-171-52/+127
| | | | | | | | | deallocation and dynamic load balancing via the MALLOC_LAZY_FREE and MALLOC_BALANCE knobs. This is a non-functional change, since these features are still enabled when possible. Clean up a few things that more pedantic compiler settings would cause complaints over.
* Document the fact that we have nan(3) now, and make some minor clarificationsdas2007-12-171-10/+14
| | | | in other places.
* Remove hacks to allow libkse to export its symbols in the LIBTHREAD_1_0deischen2007-12-16102-481/+0
| | | | | version namespace which was needed before the library version was bumped.
* Implement and document nan(), nanf(), and nanl(). This commitdas2007-12-168-8/+302
| | | | | | | adds two new directories in msun: ld80 and ld128. These are for long double functions specific to the 80-bit long double format used on x86-derived architectures, and the 128-bit format used on sparc64, respectively.
* Export gdtoa's __ULto{x,Q}_D2A routine in a private namespace sodas2007-12-165-0/+17
| | | | libm can use it.
* Arrange so that the NaN returned by strtod("nan", NULL) is the same asdas2007-12-165-27/+27
| | | | the NaN returned by strtod("nan()", NULL).
OpenPOWER on IntegriCloud