Date: Wed, 10 Dec 2008 20:56:19 +0000 (UTC) From: John Baldwin <jhb@FreeBSD.org> To: cvs-src-old@freebsd.org Subject: cvs commit: src/sys/compat/freebsd32 syscalls.master src/sys/kern vfs_aio.c src/sys/modules/aio Makefile Message-ID: <200812102056.mBAKuvoE017849@repoman.freebsd.org>
index | next in thread | raw e-mail
jhb 2008-12-10 20:56:19 UTC
FreeBSD src repository
Modified files:
sys/compat/freebsd32 syscalls.master
sys/kern vfs_aio.c
sys/modules/aio Makefile
Log:
SVN rev 185878 on 2008-12-10 20:56:19Z by jhb
- Add 32-bit compat system calls for VFS_AIO. The system calls live in the
aio code and are registered via the recently added SYSCALL32_*() helpers.
- Since the aio code likes to invoke fuword and suword a lot down in the
"bowels" of system calls, add a structure holding a set of operations for
things like storing errors, copying in the aiocb structure, storing
status, etc. The 32-bit system calls use a separate operations vector to
handle fuword32 vs fuword, etc. Also, the oldsigevent handling is now
done by having seperate operation vectors with different aiocb copyin
routines.
- Split out kern_foo() functions for the various AIO system calls so the
32-bit front ends can manage things like copying in and converting
timespec structures, etc.
- For both the native and 32-bit aio_suspend() and lio_listio() calls,
just use copyin() to read the array of aiocb pointers instead of using
a for loop that iterated over fuword/fuword32. The error handling in
the old case was incomplete (lio_listio() just ignored any aiocb's that
it got an EFAULT trying to read rather than reporting an error), and
possibly slower.
MFC after: 1 month
Revision Changes Path
1.113 +28 -12 src/sys/compat/freebsd32/syscalls.master
1.240 +755 -126 src/sys/kern/vfs_aio.c
1.3 +1 -1 src/sys/modules/aio/Makefile
help
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200812102056.mBAKuvoE017849>
