#
331722 |
|
29-Mar-2018 |
eadler |
Revert r330897:
This was intended to be a non-functional change. It wasn't. The commit message was thus wrong. In addition it broke arm, and merged crypto related code.
Revert with prejudice.
This revert skips files touched in r316370 since that commit was since MFCed. This revert also skips files that require $FreeBSD$ property changes.
Thank you to those who helped me get out of this mess including but not limited to gonzo, kevans, rgrimes.
Requested by: gjb (re)
|
#
330897 |
|
14-Mar-2018 |
eadler |
Partial merge of the SPDX changes
These changes are incomplete but are making it difficult to determine what other changes can/should be merged.
No objections from: pfg
|
#
329175 |
|
12-Feb-2018 |
kevans |
MFC Loader Fixes 2017q4p7: r324844,r326089,r326926,r326440,r326484,r326494, r326588,r326708,r326784,r326914,r327390,r328446,r326090,r326143,r326144, r326182,r326384,r326421,r326440,r326441,r326442,r326443,r326444,r326445, r326446,r326447,r326448,r326484,r326485,r326486,r326487,r326488,r326490, r326491,r326492,r326493,r326494,r326495,r326504,r326507,r326509,r326584, r326585,r326586,r326587,r326588,r326589,r326590,r326591,r326592,r326593, r326594,r326600,r326616,r326671,r326707,r326708,r326709,r326710,r326711, r326712,r326714,r326720,r326768,r326772,r326784,r326792,r326812,r326854, r326855,r326856,r326858,r326886,r326887,r326914,r326926,r326927,r326960, r326961,r326962,r326963,r327351,r327453,r327390,r327523,r327524,r326489, r327880,r328437,r328438,r328439,r328441,r328446,r328448,r328449,r328612, r328613,r328615
While here, undo our libfdt hack of not including <stdlib.h> if we're compiling _STANDALONE.
r324844: When building standalone, don't define errno. Let the definition from stand.h override. This is similar to what we do in the kernel.
r326089: loader.efi: efipart does not recognize partitionless disks
r326090: net_parse_rootpath() has no parameters
r326143: Fix theoretical integer overflow issues. If the product here is
r326144: Mark the func pointer as __dead2. It looks up loader_main, which
r326182: Modify all FreeBSD bootloaders on PowerPC AIM (Book-S) systems
r326384: Use const pointers to avoid casting away constness.
r326421: loader.efi: efipart should exclude iPXE stub block protocol
r326440: Remove stale dependency on ufsread.c
r326441: Minor flags cleanup
r326442: Cleanup CFALGS usage here
r326443: We don't need both _STAND and _STANDALONE, use the latter.
r326444: Move geli to common DO32 stuff
r326445: Fix random() and srandom() prototypes to match the standard.
r326446: Undefine _STANDALONE since this is test code.
r326447: Tweaks to the beri boot loader so that it builds w/o warnings.
r326448: Fix all warnings related to geli and ZFS support on x86.
r326484: Const poison the propname.
r326485: Delcare md_load in libofw.h. Make all prototypes match for ofw
r326486: Include machine/md_var to pick up __syncicache prototype.
r326487: Cast mdp (a vm_offset_t) to void * to match prototype.
r326488: e_entry can be smaller than a pointer. Cast it to an intptr_t
r326490: Declare our strange brand of main().
r326491: Disconnet ps3 from the build. There's too many warnings to fix.
r326492: Cast void * pointer to char * so the arg matches the %s format.
r326493: Provide a md_load64 prototype.
r326494: Mark two things as unused (since they are only sometimes used)
r326495: Now it's safe to bump WARNS to 1.
r326504: Switch to proper MK_LOADER_GELI tests.
r326507: increase maximum size of zfsboot
r326509: loader.efi: add note about iPXE into the efipart.c
r326584: When building standalone, include stand.h rather than the kernel
r326585: Include ficl.h before anything else
r326586: No need to include the userland md5.h, the kernel one is just fine.
r326587: Use the kernel relative paths, rather than the userland relative paths
r326588: Need to include skein in the include path
r326589: Make sure we include the right path for skein.h
r326590: Prefer stdint.h to inttypes.h
r326591: This isn't NetBSD specific code. Include these for any kernel /
r326592: Don't inherit CFLAGS. This a specialized test program.
r326593: Stop building with the standard system headers.
r326594: Now that we offer a semi-sane standards-ish set of #include files, stop hacking includes with sed.
r326600: Since this is contrib code, create an upstreamable version of my
r326616: dhcp_try_rfc1048() is not used any more
r326671: Avoid setting -Wno-tentative-definition-incomplete-type with gcc.
r326707: Add partial support signal.h functioanlity. Pull in machine/signal.h
r326708: Remove _KERNEL hack now that errno.h does the right thing when built standalone.
r326709: Provide implementations for iscntrl, ispunct and isgraph.
r326710: Put the files we're copying over into a few variables and clean hings up.
r326711: Const poison a couple of interfaces.
r326712: Create interp class.
r326714: boot1.c needs EFI_ZFS_BOOT too, so add it globally.
r326720: This path belongs in ficl/Makefile, not the common defines for users
r326768: Fix a comment to be more accurate
r326772: Fix regression with lua import
r326784: Revert part of 362772. It was causing problems for includes
r326792: Attempt to unbreak buildworld
r326812: Revert r326792, r326784, r326772, r326712
r326854: libefi: make efichar.h more usable in stand code
r326855: Cargo cut a fix for the regressions r326585 caused.
r326856: Fix comments after bump in size.
r326858: Revert r326855: Cargo cut a fix for the regressions r326585 caused.
r326886: Panic in sbrk if setheap hasn't been called yet. This is preferable o a mysterious crash
r326887: Remove the 'mini libstand in libstand' that util.[ch] provided.
r326914: Move loader-only defines to loader.mk from defs.mk
r326926: Move loader help file definitions to being 100% inside of loader.mk.
r326927: libficl is only ever used in a loader (never a boot) program. Move it.
r326960: Simplify things a little. The RETURN macro isn't required.
r326961: Interact is always called with NULL. Simplify code a little
r326962: Hoist btx include stuff to i386/Makefile.inc
r326963: No need to use relative paths like this here.
r327351: Fix ubldr. uboot/lib uses defines for the loader.
r327453: Add a validbcd() routine that uses the bcd2bin_data[] array
r327390: Garbage-collect loader.ps3. It is currently disconnected from the build and kboot replaces.
r327523: Don't clobber system LDFLAGS for beri boot loaders.
r327524: Use 'extern uint8_t' instead of 'extern void' for external symbols.
r326489: Allow this file to be used in libsa without warning...
r327880: Move getsecs() prototype to stand.h from net.h so it can be used
r328437: Split panic routine
r328438: Implement abort() as a call to panic.
r328439: Provide abs form stdlib.h.
r328441: abort() should be marked __dead2 since it won't return.
r328446: Now that exit is __dead2, we need to tag ub_exit() as __dead2.
r328448: Make exit() never return until host_exit can be written.
r328449: Tag unreachable places as such. I left the while (1); in place
r328612: Move strtold wrapper from strtol.c to its own strtold.c.
r328613: Kill copies of strtol and strtoul.
r328615: Update stand.h for changes for strto*l
PR: 223969
|
#
319404 |
|
01-Jun-2017 |
tuexen |
MFC r317512:
armv8 has support for optional CRC32C instructions. This patch checks if they are available and if that is true make use of them. Thank you very much to Andrew Turner for providing help and review the patch!
Reviewed by: andrew Differential Revision: https://reviews.freebsd.org/D10499
|
#
317149 |
|
19-Apr-2017 |
markj |
MFC r313006 (by cem), r315983 (by bde): Add an SSE4.2 implementation of crc32 for x86.
|
#
302408 |
|
07-Jul-2016 |
gjb |
Copy head@r302406 to stable/11 as part of the 11.0-RELEASE cycle. Prune svn:mergeinfo from the new branch, as nothing has been merged here.
Additional commits post-branch will follow.
Approved by: re (implicit) Sponsored by: The FreeBSD Foundation |
#
298714 |
|
27-Apr-2016 |
jkim |
Merge ACPICA 20160422.
|
#
296999 |
|
17-Mar-2016 |
jhibbits |
Add ummax()/ummin() to libkern.
This is committed in isolation from a larger patch so that it can be MFC'd separately if needed.
|
#
292680 |
|
24-Dec-2015 |
jhibbits |
Extend Book-E to support >4GB RAM
Summary: With some additional changes for AIM, that could also support much larger physmem sizes. Given that 32-bit AIM is more or less obsolete, though, it's not worth it at this time.
Differential Revision: https://reviews.freebsd.org/D4345
|
#
289765 |
|
22-Oct-2015 |
cem |
Add libkern ffsll() for parity with flsll()
Sponsored by: EMC / Isilon Storage Division Differential Revision: https://reviews.freebsd.org/D3962
|
#
280279 |
|
20-Mar-2015 |
jhb |
Expand the bitcount* API to support 64-bit integers, plain ints and longs and create a "hidden" API that can be used in other system headers without adding namespace pollution. - If the POPCNT instruction is enabled at compile time, use __builtin_popcount*() to implement __bitcount*(), otherwise fall back to software implementations. - Use the existing bitcount16() and bitcount32() from <sys/systm.h> to implement the non-POPCNT __bitcount16() and __bitcount32() in <sys/types.h>. - For the non-POPCNT __bitcount64(), use a similar SWAR method on 64-bit systems. For 32-bit systems, use two __bitcount32() operations on the two halves. - Use __bitcount32() to provide a __bitcount() that operates on plain ints. - Use either __bitcount32() or __bitcount64() to provide a __bitcountl() that operates on longs. - Add public bitcount*() wrappers for __bitcount*() for use in the kernel in <sys/libkern.h>. - Use __builtinl() instead of __builtin_popcountl() in BIT_COUNT().
Discussed with: bde
|
#
275732 |
|
12-Dec-2014 |
jmg |
Add some new modes to OpenCrypto. These modes are AES-ICM (can be used for counter mode), and AES-GCM. Both of these modes have been added to the aesni module.
Included is a set of tests to validate that the software and aesni module calculate the correct values. These use the NIST KAT test vectors. To run the test, you will need to install a soon to be committed port, nist-kat that will install the vectors. Using a port is necessary as the test vectors are around 25MB.
All the man pages were updated. I have added a new man page, crypto.7, which includes a description of how to use each mode. All the new modes and some other AES modes are present. It would be good for someone else to go through and document the other modes.
A new ioctl was added to support AEAD modes which AES-GCM is one of them. Without this ioctl, it is not possible to test AEAD modes from userland.
Add a timing safe bcmp for use to compare MACs. Previously we were using bcmp which could leak timing info and result in the ability to forge messages.
Add a minor optimization to the aesni module so that single segment mbufs don't get copied and instead are updated in place. The aesni module needs to be updated to support blocked IO so segmented mbufs don't have to be copied.
We require that the IV be specified for all calls for both GCM and ICM. This is to ensure proper use of these functions.
Obtained from: p4: //depot/projects/opencrypto Relnotes: yes Sponsored by: FreeBSD Foundation Sponsored by: NetGate
|
#
271173 |
|
05-Sep-2014 |
benno |
Add support for gdb's memory searching capabilities to our in-kernel gdb server.
Submitted by: Daniel O'Connor <daniel.oconnor@isilon.com> Reviewed by: jhb Sponsored by: EMC Isilon Storage Division
|
#
270096 |
|
17-Aug-2014 |
trasz |
Bring in the new automounter, similar to what's provided in most other UNIX systems, eg. MacOS X and Solaris. It uses Sun-compatible map format, has proper kernel support, and LDAP integration.
There are still a few outstanding problems; they will be fixed shortly.
Reviewed by: allanjude@, emaste@, kib@, wblock@ (earlier versions) Phabric: D523 MFC after: 2 weeks Relnotes: yes Sponsored by: The FreeBSD Foundation
|
#
253719 |
|
27-Jul-2013 |
alfred |
Fix watchdog pretimeout.
The original API calls for pow2ns, however the new APIs from Linux call for seconds.
We need to be able to convert to/from 2^Nns to seconds in both userland and kernel to fix this and properly compare units.
|
#
249631 |
|
18-Apr-2013 |
ache |
Attempt to mitigate poor initialization of arc4 by one-shot reinitialization from yarrow right after good entropy is harvested.
Approved by: secteam (delphij) MFC after: 1 week
|
#
233517 |
|
26-Mar-2012 |
marius |
Remove second consts in r233288 in order to appease C++ compilers. While at it, remove some style(9) bugs in libkern.h.
Submitted by: kan
|
#
233288 |
|
21-Mar-2012 |
marius |
Declare the CRC lookup-tables const as they hardly should change at run-time.
|
#
229366 |
|
03-Jan-2012 |
ed |
Implement extensions on top of standards instead of the other way around.
Now that index() and rindex() have become unused, simply turn them into wrappers around strchr() and strrchr(), respectively.
|
#
229204 |
|
01-Jan-2012 |
ed |
Remove the now unused skpc() function.
It was only used by ufs and ext2 and I have really strong doubts that there are other pieces of code that also use this function. If it turns out that external drivers use this code as well, I'd be happy to migrate or revert.
Bump __FreeBSD_version while there.
|
#
229198 |
|
01-Jan-2012 |
ed |
Introducing memcchr(3).
It seems two of the file system drivers we have in the tree, namely ufs and ext3, use a function called `skpc()'. The meaning of this function does not seem to be documented in FreeBSD, but it turns out one needs to be a VAX programmer to understand what it does.
SPKC is an instruction on the VAX that does the opposite of memchr(). It searches for the non-equal character. Add a new function called memcchr() to the tree that has the following advantages over skpc():
- It has a name that makes more sense than skpc(). Just like strcspn() matches the complement of strspn(), memcchr() is the complement of memchr().
- It is faster than skpc(). Similar to our strlen() in libc, it compares entire words, instead of single bytes. It seems that for this routine this yields a sixfold performance increase on amd64.
- It has a man page.
|
#
228642 |
|
17-Dec-2011 |
avg |
retire libkern gets
Inspired by: bde MFC after: 2 months X-MFC-Note: if deemed a part of KPI, just call cngets internally
|
#
228638 |
|
17-Dec-2011 |
avg |
move GETS_*ECHO* defintions from libkern.h to cons.h
MFC after: 2 months
|
#
226029 |
|
04-Oct-2011 |
jkim |
Add strnlen() to libkern.
|
#
215299 |
|
14-Nov-2010 |
ed |
Add support for asterisk characters when filling in the GELI password during boot.
Change the last argument of gets() to indicate a visibility flag and add definitions for the numerical constants. Except for the value 2, gets() will behave exactly the same, so existing consumers shouldn't break. We only use it in two places, though.
Submitted by: lme (older version)
|
#
208751 |
|
02-Jun-2010 |
raj |
Provide memchr() in the libkern.
This is required by libfdt and will be compiled in conditionally only for FDT-enabled platforms.
Reviewed by: imp Sponsored by: The FreeBSD Foundation
|
#
188605 |
|
14-Feb-2009 |
rrs |
This commit fixes the issue with alias_sctp.c. No longer do we require SCTP to be in the kernel for the lib to be able to handle SCTP. We do this by moving the CRC32c checksum into libkern/crc32.c and then adjusting all routines to use the common methods. Note that this will improve the performance of iSCSI since they were using the old single 256 bit table lookup versus the slicing 8 algorithm (which gives a 4x speed up in CRC32c calculation :-D)
Reviewed by:rwatson, gnn, scottl, paolo MFC after: 4 week? (assuming we MFC the alias_sctp changes)
|
#
183299 |
|
23-Sep-2008 |
obrien |
The kernel implemented 'memcmp' is an alias for 'bcmp'. However, memcmp and bcmp are not the same thing. 'man bcmp' states that the return is "non-zero" if the two byte strings are not identical. Where as, 'man memcmp' states that the return is the "difference between the first two differing bytes (treated as unsigned char values" if the two byte strings are not identical.
So provide a proper memcmp(9), but it is a C implementation not a tuned assembly implementation. Therefore bcmp(9) should be preferred over memcmp(9).
|
#
181748 |
|
15-Aug-2008 |
kmacy |
Add strcspn to libkern for use by xenbus routines. Will add to build in separate commit.
|
#
180514 |
|
14-Jul-2008 |
obrien |
Match the implementation of the inline function from libkern.h.
|
#
168604 |
|
10-Apr-2007 |
wkoszek |
strchr() and strrchr() are already present in the kernel, but with less popular names. Hence:
- comment current index() and rindex() functions, as these serve the same functionality as, respectively, strchr() and strrchr() from userland; - add inlined version of strchr() and strrchr(), as we tend to use them more often; - remove str[r]chr() definitions from ZFS code;
Reviewed by: pjd Approved by: cognet (mentor)
|
#
163913 |
|
02-Nov-2006 |
andre |
Rewrite kern_sendfile() to work in two loops, the inner which turns as many VM pages into mbufs as it can -- up to the free send socket buffer space. The outer loop then drops the whole mbuf chain into the send socket buffer, calls tcp_output() on it and then waits until 50% of the socket buffer are free again to repeat the cycle. This way tcp_output() gets the full amount of data to work with and can issue up to 64K sends for TSO to chop up in the network adapter without using any CPU cycles. Thus it gets very efficient especially with the readahead the VM and I/O system do.
The previous sendfile(2) code simply looped over the file, turned each 4K page into an mbuf and sent it off. This had the effect that TSO could only generate 2 packets per send instead of up to 44 at its maximum of 64K.
Add experimental SF_MNOWAIT flag to sendfile(2) to return ENOMEM instead of sleeping on mbuf allocation failures.
Benchmarking shows significant improvements (95% confidence): 45% less cpu (or 1.81 times better) with new sendfile vs. old sendfile (non-TSO) 83% less cpu (or 5.7 times better) with new sendfile vs. old sendfile (TSO)
(Sender AMD Opteron 852 (2.6GHz) with em(4) PCI-X-133 interface and receiver DELL Poweredge SC1425 P-IV Xeon 3.2GHz with em(4) LOM connected back to back at 1000Base-TX full duplex.)
Sponsored by: TCP/IP Optimization Fundraise 2005 MFC after: 3 month
|
#
161243 |
|
12-Aug-2006 |
pjd |
Add strstr() function to the libkern.
|
#
160424 |
|
17-Jul-2006 |
phk |
Add some casts to make these files more C++ compatible.
Submitted by: Kristen Nielsen <krn@krn.dk>
|
#
151025 |
|
06-Oct-2005 |
pjd |
Backout strtok() addition to libkern, strsep() is enough and strtok() is not safe.
Discussed with: stefanf, njl
|
#
150994 |
|
06-Oct-2005 |
pjd |
Add strtok() and strtok_r() function to libkern.
MFC after: 2 weeks
|
#
148861 |
|
08-Aug-2005 |
pjd |
Add strcasecmp() and strncasecmp() to libkern and connect to the build.
|
#
145609 |
|
28-Apr-2005 |
marcel |
Inline functions belong in <sys/libkern.h>, not in <sys/systm.h>. Move crc32() and crc32_raw() from the latter to the former. Move the declaration of crc32_tab[] to <sys/libkern.h> as well.
Pointed out by: bde@ Tested on: ia64, sparc64
|
#
141665 |
|
10-Feb-2005 |
glebius |
Add strspn() to libkern.
Ok'ed by: rwatson
|
#
141206 |
|
03-Feb-2005 |
pjd |
- Move gets() function to libkern (I want to use it outside vfs_mount.c). - Add buffer size limitations (overflow will not be possible anymore). - Add 'visible' option, which will allow for passphrase reading in the future. - Remove special treatment of '@' and '#', those two are only confusing.
Discussed with: rwatson MFC after: 2 weeks
|
#
132228 |
|
15-Jul-2004 |
glebius |
Copy qsort_r(3) from libc to libkern.
Reviewed by: phk Approved by: julian (mentor)
|
#
127976 |
|
07-Apr-2004 |
imp |
Remove advertising clause from University of California Regent's license, per letter dated July 22, 1999.
Approved by: core
|
#
125888 |
|
16-Feb-2004 |
des |
Back out previous commit; it doesn't seem to do what I thought it does.
|
#
125880 |
|
16-Feb-2004 |
des |
Avoid code duplication on platforms where int and long are the same size.
|
#
124531 |
|
14-Jan-2004 |
des |
Back out previous commit, which as bde@ pointed out is a no-op.
|
#
124515 |
|
14-Jan-2004 |
des |
#include <machine/cpufunc.h>, which may define inline versions of some of the functions in libkern. Without this, parts of the kernel would reference a non-existent (undeclared and undefined) ffs() function; the only reason this didn't break the kernel build is that gcc happens to have a built-in ffs() and incorrectly fails to warn about the lack of prototypes for built-in functions.
|
#
124480 |
|
13-Jan-2004 |
des |
Add C implementations of ffsl(), fls() and flsl().
|
#
111506 |
|
25-Feb-2003 |
rwatson |
Pass a malloc type into the libkern strdup() implementation explicitly, so that callers can specify what malloc pool the resulting memory should come from.
Requested by: phk
|
#
111317 |
|
23-Feb-2003 |
rwatson |
Add an implementation of strdup() to libkern. Allocated memory is of type M_STRING, now defined in malloc.h. Useful when string parsing must occur using the kernel strsep() and we want to avoid toasting the source string.
Obtained from: TrustedBSD Project Sponsored by: DARPA, Network Associates Laboratories
|
#
110605 |
|
09-Feb-2003 |
hsu |
Add restrict keyword to string functions.
Reviewed by: bde
|
#
109447 |
|
17-Jan-2003 |
mdodd |
- Style fixes. - llabs() -> qabs(); long long isn't valid for the kernel.
Submitted by: bde
|
#
109268 |
|
15-Jan-2003 |
mdodd |
- Add inline functions for {ll,l,}abs() to libkern. - Remove hand rolled abs() functions.
|
#
104900 |
|
11-Oct-2002 |
phk |
Slight overhaul of arc4random() and friends.
One bug fixed: Use getmicrouptime() to trigger reseeds so that we cannot be tricked by a clock being stepped backwards.
Express parameters in natural units and with natural names.
Don't use struct timeval more than we need to.
Various stylistic and readability polishing.
Introduce arc4rand(void *ptr, u_int len, int reseed) function which returns a stream of pseudo-random bytes, observing the automatic reseed criteria as well as allowing forced reseeds.
Rewrite arc4random() in terms of arc4rand().
Sponsored by: DARPA & NAI Labs.
|
#
104799 |
|
10-Oct-2002 |
rwatson |
Hook up strsep(3) to libkern following a repo-copy by Peter. This will allow us to avoid nasty by-hand string parsing stuff in a number of places in the kernel, reducing the risk of unexpected consequences for kernel correctness.
|
#
104652 |
|
08-Oct-2002 |
dd |
Import the libc fnmatch() into the kernel. This will be used by, among other things, the DEVFS rule subsystem to match nodes against a path pattern supplied by the user.
fnmatch.c was repo-copied from src/lib/libc/gen/fnmatch.c, and the only changes to it are those necessary to make it compile in the kernel. The relevant parts of fnmatch.h were imported into libkern.h.
Approved by: -arch
|
#
102863 |
|
02-Sep-2002 |
brooks |
Hook up libkern/strlcpy.c and libkern/strlcat.c after repocopy.
Obtained from: OpenBSD Discussed on: -arch
|
#
93008 |
|
23-Mar-2002 |
bde |
Fixed some style bugs in the removal of __P(()). The main ones were not removing tabs before "__P((", and not outdenting continuation lines to preserve non-KNF lining up of code with parentheses. Switch to KNF formatting and/or rewrap the whole prototype in some cases.
|
#
92719 |
|
19-Mar-2002 |
alfred |
Remove __P
|
#
90819 |
|
17-Feb-2002 |
rwatson |
Add a 'strvalid()' call to libkern. Given a character pointer, and buffer length, determine if the pointer is to a valid string. Currently, the only check is whether a '\0' appears in the buffer. This is useful when pulling in a structure from userland that may contain one or more strings, and validity testing must be performed on elements of the structure. When copying normal string arguments, copyinstr() is expected to be used.
|
#
84061 |
|
27-Sep-2001 |
luigi |
namei.h: move "struct componentname" definition outside "struct nameidata", and provide a valid STDC/C++ definition for function NDINIT
queue.h libkern.h: put explicit casts from void * in insque, remque and memset
(for the records, these changes are necessary to let the files compile with g++, which is used to build a FreeBSD module for "Click" -- see www.pdos.lcs.mit.edu/click/ . Given that they have zero impact on our code, it is worthwhile to have them in.
MFC after: 3 days
|
#
74840 |
|
27-Mar-2001 |
ken |
Rewrite of the CAM error recovery code.
Some of the major changes include:
- The SCSI error handling portion of cam_periph_error() has been broken out into a number of subfunctions to better modularize the code that handles the hierarchy of SCSI errors. As a result, the code is now much easier to read.
- String handling and error printing has been significantly revamped. We now use sbufs to do string formatting instead of using printfs (for the kernel) and snprintf/strncat (for userland) as before.
There is a new catchall error printing routine, cam_error_print() and its string-based counterpart, cam_error_string() that allow the kernel and userland applications to pass in a CCB and have errors printed out properly, whether or not they're SCSI errors. Among other things, this helped eliminate a fair amount of duplicate code in camcontrol.
We now print out more information than before, including the CAM status and SCSI status and the error recovery action taken to remedy the problem.
- sbufs are now available in userland, via libsbuf. This change was necessary since most of the error printing code is shared between libcam and the kernel.
- A new transfer settings interface is included in this checkin. This code is #ifdef'ed out, and is primarily intended to aid discussion with HBA driver authors on the final form the interface should take. There is example code in the ahc(4) driver that implements the HBA driver side of the new interface. The new transfer settings code won't be enabled until we're ready to switch all HBA drivers over to the new interface.
src/Makefile.inc1, lib/Makefile: Add libsbuf. It must be built before libcam, since libcam uses sbuf routines.
libcam/Makefile: libcam now depends on libsbuf.
libsbuf/Makefile: Add a makefile for libsbuf. This pulls in the sbuf sources from sys/kern.
bsd.libnames.mk: Add LIBSBUF.
camcontrol/Makefile: Add -lsbuf. Since camcontrol is statically linked, we can't depend on the dynamic linker to pull in libsbuf.
camcontrol.c: Use cam_error_print() instead of checking for CAM_SCSI_STATUS_ERROR on every failed CCB.
sbuf.9: Change the prototypes for sbuf_cat() and sbuf_cpy() so that the source string is now a const char *. This is more in line wth the standard system string functions, and helps eliminate warnings when dealing with a const source buffer.
Fix a typo.
cam.c: Add description strings for the various CAM error status values, as well as routines to look up those strings.
Add new cam_error_string() and cam_error_print() routines for userland and the kernel.
cam.h: Add a new CAM flag, CAM_RETRY_SELTO.
Add enumerated types for the various options available with cam_error_print() and cam_error_string().
cam_ccb.h: Add new transfer negotiation structures/types.
Change inq_len in the ccb_getdev structure to be "reserved". This field has never been filled in, and will be removed when we next bump the CAM version.
cam_debug.h: Fix typo.
cam_periph.c: Modularize cam_periph_error(). The SCSI error handling part of cam_periph_error() is now in camperiphscsistatuserror() and camperiphscsisenseerror().
In cam_periph_lock(), increase the reference count on the periph while we wait for our lock attempt to succeed so that the periph won't go away while we're sleeping.
cam_xpt.c: Add new transfer negotiation code. (ifdefed out)
Add a new function, xpt_path_string(). This is a string/sbuf analog to xpt_print_path().
scsi_all.c: Revamp string handing and error printing code. We now use sbufs for much of the string formatting code. More of that code is shared between userland the kernel.
scsi_all.h: Get rid of SS_TURSTART, it wasn't terribly useful in the first place.
Add a new error action, SS_REQSENSE. (Send a request sense and then retry the command.) This is useful when the controller hasn't performed autosense for some reason.
Change the default actions around a bit.
scsi_cd.c, scsi_da.c, scsi_pt.c, scsi_ses.c: SF_RETRY_SELTO -> CAM_RETRY_SELTO. Selection timeouts shouldn't be covered by a sense flag.
scsi_pass.[ch]: SF_RETRY_SELTO -> CAM_RETRY_SELTO.
Get rid of the last vestiges of a read/write interface.
libkern/bsearch.c, sys/libkern.h, conf/files: Add bsearch.c, which is needed for some of the new table lookup routines.
aic7xxx_freebsd.c: Define AHC_NEW_TRAN_SETTINGS if CAM_NEW_TRAN_CODE is defined.
sbuf.h, subr_sbuf.c: Add the appropriate #ifdefs so sbufs can compile and run in userland.
Change sbuf_printf() to use vsnprintf() instead of kvprintf(), which is only available in the kernel.
Change the source string for sbuf_cpy() and sbuf_cat() to be a const char *.
Add __BEGIN_DECLS and __END_DECLS around function prototypes since they're now exported to userland.
kdump/mkioctls: Include stdio.h before cam.h since cam.h now includes a function with a FILE * argument.
Submitted by: gibbs (mostly) Reviewed by: jdp, marcel (libsbuf makefile changes) Reviewed by: des (sbuf changes) Reviewed by: ken
|
#
70147 |
|
18-Dec-2000 |
assar |
revert addition of strlcpy/strlcat
|
#
70139 |
|
18-Dec-2000 |
assar |
add strlcpy and strlcat to kernel
|
#
65401 |
|
03-Sep-2000 |
peter |
sys/systm.h is incompatable with sys/types.h in userland. (#define major() in sys/types.h for example.)
Reported by: Nickolay Dudorov <nnd@mail.nsk.ru>
|
#
65393 |
|
03-Sep-2000 |
peter |
libkern.h now internally uses the bzero() definition from sys/systm.h. This is kinda important since the bzero symbol on i386 is not a function but a function pointer.. If memset() tried to call it as though it were a function, things would be less than satisfactory. In reality though this was not an actual problem and just caused compile warnings.
|
#
65371 |
|
02-Sep-2000 |
phk |
Bite the bullet and provde memcmp() and memset(), this will be cheaper than all the copy&paste versions we already have :-(
|
#
54411 |
|
10-Dec-1999 |
peter |
Zap c_index() and c_rindex(). Bruce prefers these to implicitly convert a const into a non-const as they do in libc. I feel that defeating the type checking like that quite evil, but that's the way it is.
|
#
53842 |
|
28-Nov-1999 |
dan |
Introduce OpenBSD-like Random PIDs. Controlled by a sysctl knob (kern.randompid), which is currently defaulted off. Use ARC4 (RC4) for our random number generation, which will not get me executed for violating crypto laws; a Good Thing(tm).
Reviewed and Approved by: bde, imp
|
#
53492 |
|
21-Nov-1999 |
peter |
Tempt fate and stop index from converting a const char * into a char *. I've made a seperate version (c_index() etc) that use const/const, but I'm not sure it's worth it considering there is one file in the tree that uses index on const strings (kern_linker.c) and it's easily adjusted to scan the strings directly (and is perhaps more efficient that way).
|
#
50477 |
|
27-Aug-1999 |
peter |
$Id$ -> $FreeBSD$
|
#
22975 |
|
22-Feb-1997 |
peter |
Back out part 1 of the MCFH that changed $Id$ to $FreeBSD$. We are not ready for it yet.
|
#
21673 |
|
14-Jan-1997 |
jkh |
Make the long-awaited change from $Id$ to $FreeBSD$
This will make a number of things easier in the future, as well as (finally!) avoiding the Id-smashing problem which has plagued developers for so long.
Boy, I'm glad we're not using sup anymore. This update would have been insane otherwise.
|
#
18474 |
|
23-Sep-1996 |
peter |
add simple srandom() and prototype
|
#
17974 |
|
31-Aug-1996 |
bde |
Fixed the easy cases of const poisoning in the kernel. Cosmetic.
|
#
17385 |
|
01-Aug-1996 |
wollman |
Declare fls() for the non-inline case. Defer writing the generic version until it actually matters.
|
#
16196 |
|
08-Jun-1996 |
nate |
Bring in the prototype for index() now that's used by default.
|
#
15311 |
|
19-Apr-1996 |
bde |
Don't depend on <sys/types.h> including <sys/cdefs.h>.
|
#
13459 |
|
16-Jan-1996 |
bde |
Moved BCD declarations to the correct header (libkern.h).
Fixed BCD declarations. They didn't match their definitions...
libkern.h, bcd.c: KNFised. `indent' worked 99% perfectly on bcd.c. It worked 99% _imperfectly_ on subr_prf.c.
|
#
12170 |
|
09-Nov-1995 |
phk |
Add qsort prototype. Add userland_sysctl prototype.
|
#
8010 |
|
23-Apr-1995 |
bde |
inline -> __inline.
Headers should always use `__inline' for inline functions to avoid syntax errors when modules that don't even use the offending functions are compiled with `gcc -ansi'.
|
#
7090 |
|
16-Mar-1995 |
bde |
Add and move declarations to fix all of the warnings from `gcc -Wimplicit' (except in netccitt, netiso and netns) and most of the warnings from `gcc -Wnested-externs'. Fix all the bugs found. There were no serious ones.
|
#
4477 |
|
14-Nov-1994 |
bde |
Hide the declaration of ffs() if an inline ffs() is implemented.
I couldn't find a better way to avoid compiler warnings about redundant and/or inconsistent declaration of ffs(). I'd like to be able to declare prototypes in general headers without committing to implementing them as `static inline' or `extern', but there seems to be no way to do this with gcc-2.6.1. E.g.,
int foo(void); static __inline int foo(void) { return 1; }
causes a warning about the linkage mismatch, while the opposite order causes a warning about the redundant declaration.
|
#
2872 |
|
18-Sep-1994 |
bde |
Use new-style declarations for min/max functions so that "gcc -Wstrict-prototypes" doesn't emit warnings about them.
Write each min/max functions on a single line so that the similarity and triviality of the functions is more obvious.
Put the quad min/max functions in the correct place (aphabetical order).
The u_quad min/max functions are missing. Only 3 or 4 of the min/max functions are actually used. sys/socketvar.h ``should use "lmin" but it doesn't exist now''. lmin does exist now, but isn't used. Since we depend on gcc for `inline', perhaps we should depend on it for __typeof and function-expressions and use only macros min() and max() that work for any types (I'm not sure how to handle mixed types).
|
#
2412 |
|
30-Aug-1994 |
dg |
Added qmin and qmax functions to deal with quad_t's.
|
#
1817 |
|
02-Aug-1994 |
dg |
Added $Id$
|
#
1542 |
|
24-May-1994 |
rgrimes |
This commit was generated by cvs2svn to compensate for changes in r1541, which included commits to RCS files with non-trunk default branches.
|
#
1541 |
|
24-May-1994 |
rgrimes |
BSD 4.4 Lite Kernel Sources
|