freebsd-skq/sys/modules
netchild 183bd5a34b MFP4 (with some minor changes):
Implement the linux_io_* syscalls (AIO). They are only enabled if the native
AIO code is available (either compiled in to the kernel or as a module) at
the time the functions are used. If the AIO stuff is not available there
will be a ENOSYS.

From the submitter:
---snip---
DESIGN NOTES:

1. Linux permits a process to own multiple AIO queues (distinguished by
   "context"), but FreeBSD creates only one single AIO queue per process.
   My code maintains a request queue (STAILQ of queue(3)) per "context",
   and throws all AIO requests of all contexts owned by a process into
   the single FreeBSD per-process AIO queue.

   When the process calls io_destroy(2), io_getevents(2), io_submit(2) and
   io_cancel(2), my code can pick out requests owned by the specified context
   from the single FreeBSD per-process AIO queue according to the per-context
   request queues maintained by my code.

2. The request queue maintained by my code stores contrast information between
   Linux IO control blocks (struct linux_iocb) and FreeBSD IO control blocks
   (struct aiocb). FreeBSD IO control block actually exists in userland memory
   space, required by FreeBSD native aio_XXXXXX(2).

3. It is quite troubling that the function io_getevents() of libaio-0.3.105
   needs to use Linux-specific "struct aio_ring", which is a partial mirror
   of context in user space. I would rather take the address of context in
   kernel as the context ID, but the io_getevents() of libaio forces me to
   take the address of the "ring" in user space as the context ID.

   To my surprise, one comment line in the file "io_getevents.c" of
   libaio-0.3.105 reads:

             Ben will hate me for this

REFERENCE:

1. Linux kernel source code:   http://www.kernel.org/pub/linux/kernel/v2.6/
   (include/linux/aio_abi.h, fs/aio.c)

2. Linux manual pages:         http://www.kernel.org/pub/linux/docs/manpages/
   (io_setup(2), io_destroy(2), io_getevents(2), io_submit(2), io_cancel(2))

3. Linux Scalability Effort:   http://lse.sourceforge.net/io/aio.html
   The design notes:           http://lse.sourceforge.net/io/aionotes.txt

4. The package libaio, both source and binary:
       http://rpmfind.net/linux/rpm2html/search.php?query=libaio
   Simple transparent interface to Linux AIO system calls.

5. Libaio-oracle:              http://oss.oracle.com/projects/libaio-oracle/
   POSIX AIO implementation based on Linux AIO system calls (depending on
   libaio).
---snip---

Submitted by:	Li, Xiao <intron@intron.ac>
2006-10-15 14:22:14 +00:00
..
3dfx
3dfx_linux
aac
accf_data
accf_http
acpi Dike out WARNS from kernel module makefiles. Kernels and modules 2006-05-30 09:38:54 +00:00
agp Include agp_i810.c in amd64 AGP builds to get support for the Intel 915 Express 2006-09-05 16:55:13 +00:00
aha
ahb
aic
aic7xxx
aio MFP4 (with some minor changes): 2006-10-15 14:22:14 +00:00
amd
amr
an
aout
apm
ar
arcmsr
arcnet
arl
asr Remove Alpha remnants. 2006-07-27 19:12:49 +00:00
ata
ath o move ath hal os glue code from the hal to the driver: this code was 2006-09-18 16:49:15 +00:00
ath_hal o move ath hal os glue code from the hal to the driver: this code was 2006-09-18 16:49:15 +00:00
ath_rate_amrr fixup build after move of ah_osdep.? 2006-09-18 16:50:59 +00:00
ath_rate_onoe o move ath hal os glue code from the hal to the driver: this code was 2006-09-18 16:49:15 +00:00
ath_rate_sample o move ath hal os glue code from the hal to the driver: this code was 2006-09-18 16:49:15 +00:00
aue
auxio
awi
axe
bce
bfe
bge
bios
bktr Housekeeping. Update for maintainers who have handed in their commit bits 2006-07-01 10:51:55 +00:00
bridgestp Add bridgestp as a seperate module. 2006-07-26 22:07:39 +00:00
cam
canbepm
canbus
cardbus
cbb
cd9660
cd9660_iconv
cdce
ce
ciss
cm
coda
coda5
coff
cp
cpufreq Dike out WARNS from kernel module makefiles. Kernels and modules 2006-05-30 09:38:54 +00:00
crypto
cryptodev
cs
ctau
cue
cx
dc
dcons
dcons_crom
de
digi Fix our ioctl(2) implementation when the argument is "int". New 2006-09-27 19:57:02 +00:00
dpt
drm
dummynet
ed
elink
em
en
ep
esp
ex
exca
ext2fs
fatm
fdc Dike out WARNS from kernel module makefiles. Kernels and modules 2006-05-30 09:38:54 +00:00
fdescfs
fe
firewire
firmware
fxp
gem
geom A GEOM cache can speed up read performance by sending fixed size 2006-10-06 08:27:07 +00:00
harp
hatm
hfa
hifn
hme
hpfs
hptmv
hwpmc Remove Alpha remnants. 2006-07-27 19:12:49 +00:00
i2c
ibcs2
ichwd
ida
idt
ie
if_bridge bridgestp is now a seperate module. 2006-07-26 22:15:15 +00:00
if_disc
if_ef Don't use touch when what is really meant is :> (create an empty file, or 2006-08-14 13:28:53 +00:00
if_faith
if_gif
if_gre
if_ndis
if_ppp Don't use touch when what is really meant is :> (create an empty file, or 2006-08-14 13:28:53 +00:00
if_sl
if_stf
if_tap Fix our ioctl(2) implementation when the argument is "int". New 2006-09-27 19:57:02 +00:00
if_tun
if_vlan
iir
io
ip_mroute_mod
ipdivert
ipfilter
ipfw Introduce a new entry point, mac_create_mbuf_from_firewall. This entry point 2006-09-12 04:25:13 +00:00
ipmi Update the ipmi(4) driver: 2006-09-22 22:11:29 +00:00
ips
ipw
isp
ispfw Add 2400 f/w support. 2006-08-26 18:40:25 +00:00
iwi
ixgb
joy
kbdmux Fix our ioctl(2) implementation when the argument is "int". New 2006-09-27 19:57:02 +00:00
kue
le - Add C-bus and ISA front-ends for le(4) so it can actually replace 2006-05-17 21:25:23 +00:00
lge
libalias - Removed a copyright from makefile. 2006-09-27 12:30:27 +00:00
libiconv
libmbpool
libmchain
linprocfs - Add the new files to the linux module. 2006-08-15 13:01:36 +00:00
linsysfs - Add the new files to the linux module. 2006-08-15 13:01:36 +00:00
linux MFP4 (with some minor changes): 2006-10-15 14:22:14 +00:00
lmc
lpt
mac_biba
mac_bsdextended
mac_ifoff
mac_lomac
mac_mls
mac_none
mac_partition
mac_portacl
mac_seeotheruids
mac_stub
mac_test
mcd
md
mem
mfi Update the mfi module build with the mfi_debug.c file. 2006-09-25 11:42:12 +00:00
mii Connect gentbi, ip1000phy to the build. 2006-07-25 00:20:11 +00:00
mlx
mly
mpt
mqueue
msdosfs
msdosfs_iconv
mse
mxge - Complete the myri10ge -> mxge name change by doing a mechanical 2006-06-13 13:53:52 +00:00
my
ncp
ncv
ndis
netgraph Don't use touch when what is really meant is :> (create an empty file, or 2006-08-14 13:28:53 +00:00
nfe Add a pure open source nForce Ethernet driver, under BSDL. 2006-06-26 23:41:07 +00:00
nfs4client
nfsclient
nfsserver
nge
nmdm
nsp
ntfs
ntfs_iconv
nullfs
nve
nwfs
oltr
padlock Implement support for HMAC/SHA1 and HMAC/SHA256 acceleration found in 2006-07-22 16:18:47 +00:00
patm
pccard
pcfclock
pcn
pecoff
pf Introduce a new entry point, mac_create_mbuf_from_firewall. This entry point 2006-09-12 04:25:13 +00:00
pflog
plip
pmc
portalfs
powermac_nvram Add device to access and modify Open Firmware NVRAM settings in 2006-08-01 22:19:01 +00:00
ppbus
ppc Make this usable for all platforms. 2006-06-18 05:04:42 +00:00
ppi
pps
procfs Fix our ioctl(2) implementation when the argument is "int". New 2006-09-27 19:57:02 +00:00
pseudofs
pst
puc Rewrite of puc(4). Significant changes are: 2006-04-28 21:21:53 +00:00
ral
random
ray
rc
rc4
re
reiserfs
rl
rndtest
rp
rr232x Remove hand-rolled cross-build glue. Normal cross-build infrastructure 2006-05-05 14:26:28 +00:00
rue
s3
safe
sbni
sbsh
scc
scd
scsi_low
sem
sf
sio Rewrite of puc(4). Significant changes are: 2006-04-28 21:21:53 +00:00
sis
sk The sk(4) driver has moved to /sys/dev/sk 2006-04-27 00:14:02 +00:00
slhci
smbfs
sn
snc
snp
sound Connect snd_hda(4) to build process... 2006-10-01 11:18:56 +00:00
speaker
splash
sppp
sr
ste
stg
stge Hook up stge(4) to the build. 2006-07-25 00:45:55 +00:00
streams Housekeeping. Update for maintainers who have handed in their commit bits 2006-07-01 10:51:55 +00:00
svr4 Housekeeping. Update for maintainers who have handed in their commit bits 2006-07-01 10:51:55 +00:00
sym
syscons
sysvipc
ti
tl
trm
twa
twe
tx
txp
uart
ubsa
ubsec
ubser
ucom
ucycom
udav
udbp
udf
udf_iconv
ufm
ufoma
ufs
uftdi
ugen
uhid
ukbd Fix our ioctl(2) implementation when the argument is "int". New 2006-09-27 19:57:02 +00:00
ulpt
umapfs
umass
umct
umodem
ums
unionfs
uplcom
ural
urio
usb
uscanner
utopia
uvisor
uvscom
vesa
vge
vkbd Fix our ioctl(2) implementation when the argument is "int". New 2006-09-27 19:57:02 +00:00
vpo
vr
vx
wb
wi
wlan Add a value to the define I forgot, for the purity's sake. 2006-09-26 12:44:20 +00:00
wlan_acl
wlan_ccmp
wlan_tkip
wlan_wep
wlan_xauth
xe
xfs Makefile changes to accomodate new XFS import. 2006-06-09 06:10:17 +00:00
xl
zlib
Makefile Build linprocfs and linsysfs as modules on amd64. 2006-09-09 16:58:22 +00:00
Makefile.inc