summaryrefslogtreecommitdiffstats
path: root/sys/kern/vfs_aio.c
diff options
context:
space:
mode:
authorpeter <peter@FreeBSD.org>2000-07-28 23:10:10 +0000
committerpeter <peter@FreeBSD.org>2000-07-28 23:10:10 +0000
commit87a4a5f84e010229b4f049b1e3e0f0c1a8d0809d (patch)
tree8c95a82e6fb54c9a9752f8f074fbc9e78ae67ae9 /sys/kern/vfs_aio.c
parent0fe8072a26711cf2081429d17b6e18c837f2e0ca (diff)
downloadFreeBSD-src-87a4a5f84e010229b4f049b1e3e0f0c1a8d0809d.zip
FreeBSD-src-87a4a5f84e010229b4f049b1e3e0f0c1a8d0809d.tar.gz
Fix the #ifdef VFS_AIO to not compile a whole bunch of unused stuff in the
!VFS_AIO case. Lots of things have hooks into here (kqueue, exit(), sockets, etc), I elected to keep the external interfaces the same rather than spread more #ifdefs around the kernel.
Diffstat (limited to 'sys/kern/vfs_aio.c')
-rw-r--r--sys/kern/vfs_aio.c41
1 files changed, 34 insertions, 7 deletions
diff --git a/sys/kern/vfs_aio.c b/sys/kern/vfs_aio.c
index 16867cd..bddf4b3 100644
--- a/sys/kern/vfs_aio.c
+++ b/sys/kern/vfs_aio.c
@@ -51,6 +51,8 @@
#include <machine/limits.h>
#include "opt_vfs_aio.h"
+#ifdef VFS_AIO
+
static long jobrefid;
#define JOBST_NULL 0x0
@@ -212,13 +214,6 @@ static int aio_fphysio(struct proc *p, struct aiocblist *aiocbe, int type);
static int aio_qphysio(struct proc *p, struct aiocblist *iocb);
static void aio_daemon(void *uproc);
-static int filt_aioattach(struct knote *kn);
-static void filt_aiodetach(struct knote *kn);
-static int filt_aio(struct knote *kn, long hint);
-
-struct filterops aio_filtops =
- { 0, filt_aioattach, filt_aiodetach, filt_aio };
-
SYSINIT(aio, SI_SUB_VFS, SI_ORDER_ANY, aio_onceonly, NULL);
static vm_zone_t kaio_zone = 0, aiop_zone = 0, aiocb_zone = 0, aiol_zone = 0;
@@ -379,6 +374,7 @@ aio_free_entry(struct aiocblist *aiocbe)
aiocbe->jobstate = JOBST_NULL;
return 0;
}
+#endif /* VFS_AIO */
/*
* Rundown the jobs for a given process.
@@ -386,6 +382,9 @@ aio_free_entry(struct aiocblist *aiocbe)
void
aio_proc_rundown(struct proc *p)
{
+#ifndef VFS_AIO
+ return;
+#else
int s;
struct kaioinfo *ki;
struct aio_liojob *lj, *ljn;
@@ -500,8 +499,10 @@ restart4:
zfree(kaio_zone, ki);
p->p_aioinfo = NULL;
+#endif /* VFS_AIO */
}
+#ifdef VFS_AIO
/*
* Select a job to run (called by an AIO daemon).
*/
@@ -1133,6 +1134,7 @@ aio_fphysio(struct proc *p, struct aiocblist *iocb, int flgwait)
relpbuf(bp, NULL);
return (error);
}
+#endif /* VFS_AIO */
/*
* Wake up aio requests that may be serviceable now.
@@ -1140,6 +1142,9 @@ aio_fphysio(struct proc *p, struct aiocblist *iocb, int flgwait)
void
aio_swake(struct socket *so, struct sockbuf *sb)
{
+#ifndef VFS_AIO
+ return;
+#else
struct aiocblist *cb,*cbn;
struct proc *p;
struct kaioinfo *ki = NULL;
@@ -1177,8 +1182,10 @@ aio_swake(struct socket *so, struct sockbuf *sb)
wakeup(aiop->aioproc);
}
}
+#endif /* VFS_AIO */
}
+#ifdef VFS_AIO
/*
* Queue a new AIO request. Choosing either the threaded or direct physio VCHR
* technique is done in this code.
@@ -1439,6 +1446,7 @@ aio_aqueue(struct proc *p, struct aiocb *job, int type)
return _aio_aqueue(p, job, NULL, type);
}
+#endif /* VFS_AIO */
/*
* Support the aio_return system call, as a side-effect, kernel resources are
@@ -2155,6 +2163,7 @@ lio_listio(struct proc *p, struct lio_listio_args *uap)
#endif /* VFS_AIO */
}
+#ifdef VFS_AIO
/*
* This is a wierd hack so that we can post a signal. It is safe to do so from
* a timeout routine, but *not* from an interrupt routine.
@@ -2246,6 +2255,7 @@ aio_physwakeup(struct buf *bp)
}
splx(s);
}
+#endif /* VFS_AIO */
int
aio_waitcomplete(struct proc *p, struct aio_waitcomplete_args *uap)
@@ -2327,6 +2337,19 @@ aio_waitcomplete(struct proc *p, struct aio_waitcomplete_args *uap)
#endif /* VFS_AIO */
}
+
+#ifndef VFS_AIO
+static int
+filt_aioattach(struct knote *kn)
+{
+
+ return (ENXIO);
+}
+
+struct filterops aio_filtops =
+ { 0, filt_aioattach, NULL, NULL };
+
+#else
static int
filt_aioattach(struct knote *kn)
{
@@ -2368,3 +2391,7 @@ filt_aio(struct knote *kn, long hint)
kn->kn_flags |= EV_EOF;
return (1);
}
+
+struct filterops aio_filtops =
+ { 0, filt_aioattach, filt_aiodetach, filt_aio };
+#endif /* VFS_AIO */
OpenPOWER on IntegriCloud