head	1.4;
access;
symbols
	RELENG_8_4:1.4.0.2
	RELENG_9_1_0_RELEASE:1.3.4.1.4.2
	RELENG_9_1:1.3.4.1.0.4
	RELENG_9_1_BP:1.3.4.1
	RELENG_8_3_0_RELEASE:1.3.2.1.8.1
	RELENG_8_3:1.3.2.1.0.8
	RELENG_8_3_BP:1.3.2.1
	RELENG_9_0_0_RELEASE:1.3.4.1.2.1
	RELENG_9_0:1.3.4.1.0.2
	RELENG_9_0_BP:1.3.4.1
	RELENG_9:1.3.0.4
	RELENG_9_BP:1.3
	RELENG_7_4_0_RELEASE:1.2.2.1.6.1
	RELENG_8_2_0_RELEASE:1.3.2.1.6.1
	RELENG_7_4:1.2.2.1.0.6
	RELENG_7_4_BP:1.2.2.1
	RELENG_8_2:1.3.2.1.0.6
	RELENG_8_2_BP:1.3.2.1
	RELENG_8_1_0_RELEASE:1.3.2.1.4.1
	RELENG_8_1:1.3.2.1.0.4
	RELENG_8_1_BP:1.3.2.1
	RELENG_7_3_0_RELEASE:1.2.2.1.4.1
	RELENG_7_3:1.2.2.1.0.4
	RELENG_7_3_BP:1.2.2.1
	RELENG_8_0_0_RELEASE:1.3.2.1.2.1
	RELENG_8_0:1.3.2.1.0.2
	RELENG_8_0_BP:1.3.2.1
	RELENG_8:1.3.0.2
	RELENG_8_BP:1.3
	RELENG_7_2_0_RELEASE:1.2.2.1.2.1
	RELENG_7_2:1.2.2.1.0.2
	RELENG_7_2_BP:1.2.2.1
	RELENG_7_1_0_RELEASE:1.2.6.1
	RELENG_6_4_0_RELEASE:1.1.26.1
	RELENG_7_1:1.2.0.6
	RELENG_7_1_BP:1.2
	RELENG_6_4:1.1.0.26
	RELENG_6_4_BP:1.1
	RELENG_7_0_0_RELEASE:1.2
	RELENG_6_3_0_RELEASE:1.1
	RELENG_7_0:1.2.0.4
	RELENG_7_0_BP:1.2
	RELENG_6_3:1.1.0.24
	RELENG_6_3_BP:1.1
	RELENG_7:1.2.0.2
	RELENG_7_BP:1.2
	RELENG_6_2_0_RELEASE:1.1
	RELENG_6_2:1.1.0.22
	RELENG_6_2_BP:1.1
	RELENG_5_5_0_RELEASE:1.1
	RELENG_5_5:1.1.0.20
	RELENG_5_5_BP:1.1
	RELENG_6_1_0_RELEASE:1.1
	RELENG_6_1:1.1.0.18
	RELENG_6_1_BP:1.1
	RELENG_6_0_0_RELEASE:1.1
	RELENG_6_0:1.1.0.16
	RELENG_6_0_BP:1.1
	RELENG_6:1.1.0.14
	RELENG_6_BP:1.1
	RELENG_5_4_0_RELEASE:1.1
	RELENG_5_4:1.1.0.12
	RELENG_5_4_BP:1.1
	RELENG_5_3_0_RELEASE:1.1
	RELENG_5_3:1.1.0.10
	RELENG_5_3_BP:1.1
	RELENG_5:1.1.0.8
	RELENG_5_BP:1.1
	RELENG_5_2_1_RELEASE:1.1
	RELENG_5_2_0_RELEASE:1.1
	RELENG_5_2:1.1.0.6
	RELENG_5_2_BP:1.1
	RELENG_5_1_0_RELEASE:1.1
	RELENG_5_1:1.1.0.4
	RELENG_5_1_BP:1.1
	RELENG_5_0_0_RELEASE:1.1
	RELENG_5_0:1.1.0.2
	RELENG_5_0_BP:1.1;
locks; strict;
comment	@# @;


1.4
date	2012.11.17.01.52.52;	author svnexp;	state Exp;
branches
	1.4.2.1;
next	1.3;

1.3
date	2008.12.10.20.56.19;	author jhb;	state Exp;
branches
	1.3.2.1
	1.3.4.1;
next	1.2;

1.2
date	2006.10.15.14.22.13;	author netchild;	state Exp;
branches
	1.2.2.1
	1.2.6.1;
next	1.1;

1.1
date	2001.12.29.07.13.47;	author alfred;	state Exp;
branches
	1.1.14.1
	1.1.26.1;
next	;

1.4.2.1
date	2012.11.17.01.52.52;	author svnexp;	state dead;
branches;
next	1.4.2.2;

1.4.2.2
date	2013.03.28.13.05.18;	author svnexp;	state Exp;
branches;
next	;

1.3.2.1
date	2009.08.03.08.13.06;	author kensmith;	state Exp;
branches
	1.3.2.1.2.1
	1.3.2.1.4.1
	1.3.2.1.6.1
	1.3.2.1.8.1;
next	1.3.2.2;

1.3.2.2
date	2012.11.17.10.36.55;	author svnexp;	state Exp;
branches;
next	;

1.3.2.1.2.1
date	2009.10.25.01.10.29;	author kensmith;	state Exp;
branches;
next	;

1.3.2.1.4.1
date	2010.06.14.02.09.06;	author kensmith;	state Exp;
branches;
next	;

1.3.2.1.6.1
date	2010.12.21.17.09.25;	author kensmith;	state Exp;
branches;
next	;

1.3.2.1.8.1
date	2012.03.03.06.15.13;	author kensmith;	state Exp;
branches;
next	1.3.2.1.8.2;

1.3.2.1.8.2
date	2012.11.17.08.25.32;	author svnexp;	state Exp;
branches;
next	;

1.3.4.1
date	2011.09.23.00.51.37;	author kensmith;	state Exp;
branches
	1.3.4.1.2.1
	1.3.4.1.4.1;
next	1.3.4.2;

1.3.4.2
date	2012.11.17.11.37.16;	author svnexp;	state Exp;
branches;
next	;

1.3.4.1.2.1
date	2011.11.11.04.20.22;	author kensmith;	state Exp;
branches;
next	1.3.4.1.2.2;

1.3.4.1.2.2
date	2012.11.17.08.37.12;	author svnexp;	state Exp;
branches;
next	;

1.3.4.1.4.1
date	2012.08.05.23.54.33;	author kensmith;	state Exp;
branches;
next	1.3.4.1.4.2;

1.3.4.1.4.2
date	2012.11.17.08.48.03;	author svnexp;	state Exp;
branches;
next	;

1.2.2.1
date	2009.01.21.18.52.33;	author jhb;	state Exp;
branches
	1.2.2.1.2.1
	1.2.2.1.4.1
	1.2.2.1.6.1;
next	1.2.2.2;

1.2.2.2
date	2012.11.17.08.06.44;	author svnexp;	state Exp;
branches;
next	;

1.2.2.1.2.1
date	2009.04.15.03.14.26;	author kensmith;	state Exp;
branches;
next	;

1.2.2.1.4.1
date	2010.02.10.00.26.20;	author kensmith;	state Exp;
branches;
next	;

1.2.2.1.6.1
date	2010.12.21.17.10.29;	author kensmith;	state Exp;
branches;
next	1.2.2.1.6.2;

1.2.2.1.6.2
date	2012.11.17.08.17.26;	author svnexp;	state Exp;
branches;
next	;

1.2.6.1
date	2008.11.25.02.59.29;	author kensmith;	state Exp;
branches;
next	;

1.1.14.1
date	2012.11.17.07.44.14;	author svnexp;	state Exp;
branches;
next	;

1.1.26.1
date	2008.10.02.02.57.24;	author kensmith;	state Exp;
branches;
next	;


desc
@@


1.4
log
@Switching exporter and resync
@
text
@# $FreeBSD: head/sys/modules/aio/Makefile 185878 2008-12-10 20:56:19Z jhb $

.PATH: ${.CURDIR}/../../kern

KMOD=	aio
SRCS=	vfs_aio.c opt_vfs_aio.h vnode_if.h opt_compat.h

EXPORT_SYMS= aio_init_aioinfo aio_aqueue

.include <bsd.kmod.mk>
@


1.4.2.1
log
@file Makefile was added on branch RELENG_8_4 on 2013-03-28 13:05:18 +0000
@
text
@d1 10
@


1.4.2.2
log
@## SVN ## Exported commit - http://svnweb.freebsd.org/changeset/base/248810
## SVN ## CVS IS DEPRECATED: http://wiki.freebsd.org/CvsIsDeprecated
@
text
@a0 10
# $FreeBSD: releng/8.4/sys/modules/aio/Makefile 185878 2008-12-10 20:56:19Z jhb $

.PATH: ${.CURDIR}/../../kern

KMOD=	aio
SRCS=	vfs_aio.c opt_vfs_aio.h vnode_if.h opt_compat.h

EXPORT_SYMS= aio_init_aioinfo aio_aqueue

.include <bsd.kmod.mk>
@


1.3
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
@
text
@d1 1
a1 1
# $FreeBSD$
@


1.3.4.1
log
@SVN rev 225736 on 2011-09-23 00:51:37Z by kensmith

Copy head to stable/9 as part of 9.0-RELEASE release cycle.

Approved by:	re (implicit)
@
text
@@


1.3.4.2
log
@## SVN ##
## SVN ## Exported commit - http://svnweb.freebsd.org/changeset/base/ 242902
## SVN ## CVS IS DEPRECATED: http://wiki.freebsd.org/CvsIsDeprecated
## SVN ##
## SVN ## ------------------------------------------------------------------------
## SVN ## r242902 | dteske | 2012-11-11 23:29:45 +0000 (Sun, 11 Nov 2012) | 10 lines
## SVN ##
## SVN ## Fix a regression introduced by SVN r211417 that saw the breakage of a feature
## SVN ## documented in usr.sbin/sysinstall/help/shortcuts.hlp (reproduced below):
## SVN ##
## SVN ## If /usr/sbin/sysinstall is linked to another filename, say
## SVN ## `/usr/local/bin/configPackages', then the basename will be used
## SVN ## as an implicit command name.
## SVN ##
## SVN ## Reviewed by:	adrian (co-mentor)
## SVN ## Approved by:	adrian (co-mentor)
## SVN ##
## SVN ## ------------------------------------------------------------------------
## SVN ##
@
text
@d1 1
a1 1
# $FreeBSD: stable/9/sys/modules/aio/Makefile 185878 2008-12-10 20:56:19Z jhb $
@


1.3.4.1.4.1
log
@SVN rev 239080 on 2012-08-05 23:54:33Z by kensmith

Copy stable/9 to releng/9.1 as part of the 9.1-RELEASE release process.

Approved by:	re (implicit)
@
text
@@


1.3.4.1.4.2
log
@Switch importer
@
text
@d1 1
a1 1
# $FreeBSD: releng/9.1/sys/modules/aio/Makefile 185878 2008-12-10 20:56:19Z jhb $
@


1.3.4.1.2.1
log
@SVN rev 227445 on 2011-11-11 04:20:22Z by kensmith

Copy stable/9 to releng/9.0 as part of the FreeBSD 9.0-RELEASE release
cycle.

Approved by:	re (implicit)
@
text
@@


1.3.4.1.2.2
log
@Switch importer
@
text
@d1 1
a1 1
# $FreeBSD: releng/9.0/sys/modules/aio/Makefile 185878 2008-12-10 20:56:19Z jhb $
@


1.3.2.1
log
@SVN rev 196045 on 2009-08-03 08:13:06Z by kensmith

Copy head to stable/8 as part of 8.0 Release cycle.

Approved by:	re (Implicit)
@
text
@@


1.3.2.2
log
@## SVN ##
## SVN ## Exported commit - http://svnweb.freebsd.org/changeset/base/ 242909
## SVN ## CVS IS DEPRECATED: http://wiki.freebsd.org/CvsIsDeprecated
## SVN ##
## SVN ## ------------------------------------------------------------------------
## SVN ## r242909 | dim | 2012-11-12 07:47:19 +0000 (Mon, 12 Nov 2012) | 20 lines
## SVN ##
## SVN ## MFC r242625:
## SVN ##
## SVN ## Remove duplicate const specifiers in many drivers (I hope I got all of
## SVN ## them, please let me know if not).  Most of these are of the form:
## SVN ##
## SVN ## static const struct bzzt_type {
## SVN ##       [...list of members...]
## SVN ## } const bzzt_devs[] = {
## SVN ##       [...list of initializers...]
## SVN ## };
## SVN ##
## SVN ## The second const is unnecessary, as arrays cannot be modified anyway,
## SVN ## and if the elements are const, the whole thing is const automatically
## SVN ## (e.g. it is placed in .rodata).
## SVN ##
## SVN ## I have verified this does not change the binary output of a full kernel
## SVN ## build (except for build timestamps embedded in the object files).
## SVN ##
## SVN ## Reviewed by:	yongari, marius
## SVN ##
## SVN ## ------------------------------------------------------------------------
## SVN ##
@
text
@d1 1
a1 1
# $FreeBSD: stable/8/sys/modules/aio/Makefile 185878 2008-12-10 20:56:19Z jhb $
@


1.3.2.1.8.1
log
@SVN rev 232438 on 2012-03-03 06:15:13Z by kensmith

Copy stable/8 to releng/8.3 as part of 8.3-RELEASE release cycle.

Approved by:	re (implicit)
@
text
@@


1.3.2.1.8.2
log
@Switch importer
@
text
@d1 1
a1 1
# $FreeBSD: releng/8.3/sys/modules/aio/Makefile 185878 2008-12-10 20:56:19Z jhb $
@


1.3.2.1.6.1
log
@SVN rev 216617 on 2010-12-21 17:09:25Z by kensmith

Copy stable/8 to releng/8.2 in preparation for FreeBSD-8.2 release.

Approved by:	re (implicit)
@
text
@@


1.3.2.1.4.1
log
@SVN rev 209145 on 2010-06-14 02:09:06Z by kensmith

Copy stable/8 to releng/8.1 in preparation for 8.1-RC1.

Approved by:	re (implicit)
@
text
@@


1.3.2.1.2.1
log
@SVN rev 198460 on 2009-10-25 01:10:29Z by kensmith

Copy stable/8 to releng/8.0 as part of 8.0-RELEASE release procedure.

Approved by:	re (implicit)
@
text
@@


1.2
log
@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>
@
text
@d6 1
a6 1
SRCS=	vfs_aio.c opt_vfs_aio.h vnode_if.h
@


1.2.2.1
log
@SVN rev 187559 on 2009-01-21 18:52:33Z by jhb

MFC: Add 32-bit compat system calls for VFS_AIO.
@
text
@d6 1
a6 1
SRCS=	vfs_aio.c opt_vfs_aio.h vnode_if.h opt_compat.h
@


1.2.2.2
log
@Switch importer
@
text
@d1 1
a1 1
# $FreeBSD: stable/7/sys/modules/aio/Makefile 187559 2009-01-21 18:52:33Z jhb $
@


1.2.2.1.6.1
log
@SVN rev 216618 on 2010-12-21 17:10:29Z by kensmith

Copy stable/7 to releng/7.4 in preparation for FreeBSD-7.4 release.

Approved by:	re (implicit)
@
text
@@


1.2.2.1.6.2
log
@Switch importer
@
text
@d1 1
a1 1
# $FreeBSD: releng/7.4/sys/modules/aio/Makefile 187559 2009-01-21 18:52:33Z jhb $
@


1.2.2.1.4.1
log
@SVN rev 203736 on 2010-02-10 00:26:20Z by kensmith

Copy stable/7 to releng/7.3 as part of the 7.3-RELEASE process.

Approved by:	re (implicit)
@
text
@@


1.2.2.1.2.1
log
@SVN rev 191087 on 2009-04-15 03:14:26Z by kensmith

Create releng/7.2 from stable/7 in preparation for 7.2-RELEASE.

Approved by:	re (implicit)
@
text
@@


1.2.6.1
log
@SVN rev 185281 on 2008-11-25 02:59:29Z by kensmith

Create releng/7.1 in preparation for moving into RC phase of 7.1 release
cycle.

Approved by:	re (implicit)
@
text
@@


1.1
log
@Make AIO a loadable module.

Remove the explicit call to aio_proc_rundown() from exit1(), instead AIO
will use at_exit(9).

Add functions at_exec(9), rm_at_exec(9) which function nearly the
same as at_exec(9) and rm_at_exec(9), these functions are called
on behalf of modules at the time of execve(2) after the image
activator has run.

Use a modified version of tegge's suggestion via at_exec(9) to close
an exploitable race in AIO.

Fix SYSCALL_MODULE_HELPER such that it's archetecuterally neutral,
the problem was that one had to pass it a paramater indicating the
number of arguments which were actually the number of "int".  Fix
it by using an inline version of the AS macro against the syscall
arguments.  (AS should be available globally but we'll get to that
later.)

Add a primative system for dynamically adding kqueue ops, it's really
not as sophisticated as it should be, but I'll discuss with jlemon when
he's around.
@
text
@d8 2
@


1.1.14.1
log
@Switch importer
@
text
@d1 1
a1 1
# $FreeBSD: stable/6/sys/modules/aio/Makefile 88633 2001-12-29 07:13:47Z alfred $
@


1.1.26.1
log
@SVN rev 183531 on 2008-10-02 02:57:24Z by kensmith

Create releng/6.4 from stable/6 in preparation for 6.4-RC1.

Approved by:	re (implicit)
@
text
@@


