freebsd-dev/include
Scott Long 52c9ce25d8 Separate the parallel scsi knowledge out of the core of the XPT, and
modularize it so that new transports can be created.

Add a transport for SATA

Add a periph+protocol layer for ATA

Add a driver for AHCI-compliant hardware.

Add a maxio field to CAM so that drivers can advertise their max
I/O capability.  Modify various drivers so that they are insulated
from the value of MAXPHYS.

The new ATA/SATA code supports AHCI-compliant hardware, and will override
the classic ATA driver if it is loaded as a module at boot time or compiled
into the kernel.  The stack now support NCQ (tagged queueing) for increased
performance on modern SATA drives.  It also supports port multipliers.

ATA drives are accessed via 'ada' device nodes.  ATAPI drives are
accessed via 'cd' device nodes.  They can all be enumerated and manipulated
via camcontrol, just like SCSI drives.  SCSI commands are not translated to
their ATA equivalents; ATA native commands are used throughout the entire
stack, including camcontrol.  See the camcontrol manpage for further
details.  Testing this code may require that you update your fstab, and
possibly modify your BIOS to enable AHCI functionality, if available.

This code is very experimental at the moment.  The userland ABI/API has
changed, so applications will need to be recompiled.  It may change
further in the near future.  The 'ada' device name may also change as
more infrastructure is completed in this project.  The goal is to
eventually put all CAM busses and devices until newbus, allowing for
interesting topology and management options.

Few functional changes will be seen with existing SCSI/SAS/FC drivers,
though the userland ABI has still changed.  In the future, transports
specific modules for SAS and FC may appear in order to better support
the topologies and capabilities of these technologies.

The modularization of CAM and the addition of the ATA/SATA modules is
meant to break CAM out of the mold of being specific to SCSI, letting it
grow to be a framework for arbitrary transports and protocols.  It also
allows drivers to be written to support discrete hardware without
jeopardizing the stability of non-related hardware.  While only an AHCI
driver is provided now, a Silicon Image driver is also in the works.
Drivers for ICH1-4, ICH5-6, PIIX, classic IDE, and any other hardware
is possible and encouraged.  Help with new transports is also encouraged.

Submitted by:	scottl, mav
Approved by:	re
2009-07-10 08:18:08 +00:00
..
arpa Namespace: inet_ntoa_r() is a BSD extension. 2009-03-14 19:00:16 +00:00
gssapi Add an implementation of the RPCSEC_GSS authentication protocol for RPC. This 2008-08-06 14:02:05 +00:00
protocols Expand dump to allow MAX_INT dump levels. 2008-05-24 05:20:46 +00:00
rpc Re-do r192913 in less intrusive way. Only do IP_RECVDSTADDR/IP_SENDSRCADDR 2009-06-18 17:10:43 +00:00
rpcsvc Fix ypwhich -m. This should be MFC'ed back at least as far as RELENG_5. 2005-12-06 02:01:06 +00:00
_ctype.h Back out not human readable optimization in prev. commit which shown 2007-11-01 03:18:02 +00:00
a.out.h Adjust the system endian and a.out headers to be more MI and cross-building 2004-06-22 17:05:39 +00:00
ar.h Attempt to improve application portability by marking `struct ar_hdr' 2006-11-13 04:28:29 +00:00
assert.h Only protect the prototypes with #ifndef _ASSERT_H_, the standards 2007-12-01 19:28:13 +00:00
bitstring.h Finish the repocopy of bitstring.h to sys so it can be used 2003-06-13 19:40:13 +00:00
complex.h Implement cproj{,f,l}(). 2008-08-07 15:07:48 +00:00
cpio.h
ctype.h Don't prototype _tolower() and _toupper(). They're not supposed to be 2009-03-14 19:04:24 +00:00
db.h Hide dbopen() in the POSIX namespace, and use standard type names 2009-03-14 20:05:27 +00:00
dirent.h Implement fdopendir(3) by splitting __opendir2() into two parts, the upper part 2008-04-16 18:59:36 +00:00
dlfcn.h Implement support for RTLD_NODELETE flag for dlopen() and -z nodelete 2009-03-30 08:47:28 +00:00
elf-hints.h
elf.h Remove some OpenSolaris compatibility stuff now that we're doing it a 2007-11-28 22:09:12 +00:00
err.h
fmtmsg.h
fnmatch.h Now I understand what Bruce was getting at - -1 can be parsed as two 2003-12-18 10:41:39 +00:00
fstab.h
fts.h Our fts(3) API, as inherited from 4.4BSD, suffers from integer 2008-01-26 17:09:40 +00:00
ftw.h Replace the current implementations of ftw() and nftw() with the OpenBSD 2004-08-24 13:00:55 +00:00
getopt.h Add getopt_long_only() 2004-02-24 08:09:20 +00:00
glob.h Add size_t declaration 2006-05-22 05:57:39 +00:00
grp.h Namespace: setgrent() is an XSI extension. 2009-03-14 19:05:18 +00:00
gssapi.h Add a new extensible GSS-API layer which can support GSS-API plugins, 2005-12-29 14:40:22 +00:00
hesiod.h
histedit.h Use tabs after #define. 2007-06-11 06:25:19 +00:00
ieeefp.h
ifaddrs.h Add the userland part of the NET_RT_IFMALIST sysctl MIB. A new function, 2003-11-14 18:53:22 +00:00
inttypes.h
iso646.h
kenv.h Fix prototype to match the code and documentation. 2005-11-24 07:20:26 +00:00
langinfo.h
libgen.h
limits.h Deprecate machine/limits.h in favor of new sys/limits.h. 2003-04-29 13:36:06 +00:00
link.h
locale.h Change the definition of NULL on ia64 (for LP64 compilations) from 2003-12-07 21:10:06 +00:00
Makefile Separate the parallel scsi knowledge out of the core of the XPT, and 2009-07-10 08:18:08 +00:00
malloc_np.h Add __{BEGIN,END}_DECLS macros, so that function prototypes remain 2006-06-30 20:57:41 +00:00
malloc.h
memory.h
monetary.h
mpool.h Minor changes from Berkeley DB 1.86 and further improvements from OpenBSD. 2009-03-28 07:31:02 +00:00
mqueue.h Add function __mq_oshandle() to get file handle of a mqueue. 2007-01-06 11:30:04 +00:00
ndbm.h Namespace: dbm_forder() and dbm_dirfno() are BSD extensions. 2009-03-14 19:02:28 +00:00
netconfig.h
netdb.h Hide numerous BSD extensions in the POSIX namespace. 2009-03-14 20:04:28 +00:00
nl_types.h Analogous to __printflike and __scanflike, add the macro __format_arg which 2006-01-26 20:53:40 +00:00
nlist.h
nss.h It was reported that when using nss_ldap, getgrent(3) would behave 2004-01-09 13:43:49 +00:00
nsswitch.h Implementing 'fallback' nsswitch source. 'fallback' source is used 2007-12-12 10:08:03 +00:00
paths.h Also un-split _PATH_STDPATH for grepability. 2009-02-01 00:50:46 +00:00
printf.h Add nested include of <wchar.h> 2006-03-02 10:01:52 +00:00
proc_service.h Introduce a new proc service routine ps_linfo() to get LWP info. 2006-02-07 02:29:55 +00:00
pthread_np.h Add cpu affinity APIs to get and set thread's cpu affinity mask, the 2008-03-03 08:28:13 +00:00
pthread.h Fix the visibility of several prototypes. Also move pthread_kill() and 2009-03-14 20:10:14 +00:00
pwd.h Namespace: endpwent, getpwent, and setpwent are XSI extensions. 2009-03-14 19:13:01 +00:00
ranlib.h
readpassphrase.h Define the size_t type since readpassphrase(3) requires it in its 2008-05-08 23:57:29 +00:00
regex.h Add a new error code, REG_ILLSEQ, to indicate that a regular expression 2004-07-12 06:07:26 +00:00
regexp.h
res_update.h Merge BIND 9.4.1 into main chunk. 2007-06-03 17:20:27 +00:00
resolv.h Merge the resolver part of BIND 9.4.3 into HEAD. 2008-12-14 19:39:53 +00:00
runetype.h Prefix the names of members of _RuneLocale and its sub-structures 2004-06-23 07:01:44 +00:00
search.h
setjmp.h Namespace: _setjmp() and _longjmp() are XSI extensions. 2009-03-14 19:01:26 +00:00
signal.h Revert r190943, since the problem in ports seems to be fixed now. 2009-04-17 14:19:18 +00:00
spawn.h Remove __restrict keywords from array arguments to make GCC's -std=c99 work. 2008-06-19 07:30:32 +00:00
stab.h
stdbool.h The Intel C/C++ compiler doesn't require a typedef for _Bool when compiling 2005-02-19 13:47:33 +00:00
stddef.h Change the definition of NULL on ia64 (for LP64 compilations) from 2003-12-07 21:10:06 +00:00
stdio.h Merge fmtcheck() prototype change. 2009-06-23 23:53:35 +00:00
stdlib.h Namespace: abort2() is a BSD extension. 2009-03-14 19:13:30 +00:00
string.h Namespace: memccpy() and memchr() are XSI, and memrchr() is a BSD extension. 2009-03-14 19:03:34 +00:00
stringlist.h
strings.h - Remove bcmp, bcopy, bzero, index, and rindex from the POSIX.1-2008 2009-03-04 03:31:51 +00:00
sysexits.h
tar.h
tgmath.h Properly parenthesize the __tg_is_complex() macro by moving a closing 2007-02-02 18:30:23 +00:00
time.h Add POSIX pthread API pthread_getcpuclockid() to get a thread's cpu 2008-03-22 09:59:20 +00:00
timeconv.h
timers.h
ttyent.h
ulimit.h
unistd.h There is an optimization in chmod(1), that makes it not to call chmod(2) 2009-07-08 15:23:18 +00:00
utime.h
utmp.h Add a comment to utmp.h about the sizes of UT_HOSTSIZE and UT_LINESIZE. 2008-11-16 14:43:33 +00:00
uuid.h Add missing prototypes for uuid_enc,dec_le,be() functions. 2008-09-15 23:47:19 +00:00
varargs.h Add a new machine independent varargs.h and use it as a central place 2003-09-01 03:28:25 +00:00
vis.h Add a new flag to vis(3): VIS_GLOB which encodes the glob(3) magic 2003-10-30 10:40:49 +00:00
wchar.h Put the restrict qualifiers in the right place in the wcp[n]cpy prototypes. 2009-03-04 15:45:34 +00:00
wctype.h Back out iswascii change from prev. commit, iswascii was right, 2007-10-14 10:23:54 +00:00
wordexp.h Fix typo: WRDE_DOOFS -> WRDE_DOOFFS. 2004-06-30 13:55:08 +00:00