Module Name: src Committed By: rmind Date: Sun Jun 28 14:22:11 UTC 2009
Modified Files: src/sys/kern: sys_pipe.c Log Message: - Convert some #ifdefs to KASSERT()s. - KNF, style, no parameters in function declarations. - No functional changes. To generate a diff of this commit: cvs rdiff -u -r1.112 -r1.113 src/sys/kern/sys_pipe.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/kern/sys_pipe.c diff -u src/sys/kern/sys_pipe.c:1.112 src/sys/kern/sys_pipe.c:1.113 --- src/sys/kern/sys_pipe.c:1.112 Sat Apr 11 23:05:26 2009 +++ src/sys/kern/sys_pipe.c Sun Jun 28 14:22:11 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: sys_pipe.c,v 1.112 2009/04/11 23:05:26 christos Exp $ */ +/* $NetBSD: sys_pipe.c,v 1.113 2009/06/28 14:22:11 rmind Exp $ */ /*- * Copyright (c) 2003, 2007, 2008, 2009 The NetBSD Foundation, Inc. @@ -68,7 +68,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: sys_pipe.c,v 1.112 2009/04/11 23:05:26 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: sys_pipe.c,v 1.113 2009/06/28 14:22:11 rmind Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -98,18 +98,13 @@ /* XXX Disabled for now; rare hangs switching between direct/buffered */ #define PIPE_NODIRECT -/* - * interfaces to the outside world - */ -static int pipe_read(struct file *fp, off_t *offset, struct uio *uio, - kauth_cred_t cred, int flags); -static int pipe_write(struct file *fp, off_t *offset, struct uio *uio, - kauth_cred_t cred, int flags); -static int pipe_close(struct file *fp); -static int pipe_poll(struct file *fp, int events); -static int pipe_kqfilter(struct file *fp, struct knote *kn); -static int pipe_stat(struct file *fp, struct stat *sb); -static int pipe_ioctl(struct file *fp, u_long cmd, void *data); +static int pipe_read(file_t *, off_t *, struct uio *, kauth_cred_t, int); +static int pipe_write(file_t *, off_t *, struct uio *, kauth_cred_t, int); +static int pipe_close(file_t *); +static int pipe_poll(file_t *, int); +static int pipe_kqfilter(file_t **, struct knote *); +static int pipe_stat(file_t *, struct stat *); +static int pipe_ioctl(file_t *, u_long, void *); static const struct fileops pipeops = { .fo_read = pipe_read, @@ -129,56 +124,55 @@ * reference for performance reasons, so small amounts of outstanding I/O * will not wipe the cache. */ -#define MINPIPESIZE (PIPE_SIZE/3) -#define MAXPIPESIZE (2*PIPE_SIZE/3) +#define MINPIPESIZE (PIPE_SIZE / 3) +#define MAXPIPESIZE (2 * PIPE_SIZE / 3) /* * Maximum amount of kva for pipes -- this is kind-of a soft limit, but * is there so that on large systems, we don't exhaust it. */ -#define MAXPIPEKVA (8*1024*1024) -static u_int maxpipekva = MAXPIPEKVA; +#define MAXPIPEKVA (8 * 1024 * 1024) +static u_int maxpipekva = MAXPIPEKVA; /* * Limit for direct transfers, we cannot, of course limit * the amount of kva for pipes in general though. */ -#define LIMITPIPEKVA (16*1024*1024) -static u_int limitpipekva = LIMITPIPEKVA; +#define LIMITPIPEKVA (16 * 1024 * 1024) +static u_int limitpipekva = LIMITPIPEKVA; /* * Limit the number of "big" pipes */ -#define LIMITBIGPIPES 32 -static u_int maxbigpipes = LIMITBIGPIPES; -static u_int nbigpipe = 0; +#define LIMITBIGPIPES 32 +static u_int maxbigpipes = LIMITBIGPIPES; +static u_int nbigpipe = 0; /* * Amount of KVA consumed by pipe buffers. */ -static u_int amountpipekva = 0; +static u_int amountpipekva = 0; -static void pipeclose(struct file *fp, struct pipe *pipe); -static void pipe_free_kmem(struct pipe *pipe); -static int pipe_create(struct pipe **pipep, pool_cache_t, kmutex_t *); -static int pipelock(struct pipe *pipe, int catch); -static inline void pipeunlock(struct pipe *pipe); -static void pipeselwakeup(struct pipe *pipe, struct pipe *sigp, int code); +static void pipeclose(file_t *, struct pipe *); +static void pipe_free_kmem(struct pipe *); +static int pipe_create(struct pipe **, pool_cache_t, kmutex_t *); +static int pipelock(struct pipe *, int); +static inline void pipeunlock(struct pipe *); +static void pipeselwakeup(struct pipe *, struct pipe *, int); #ifndef PIPE_NODIRECT -static int pipe_direct_write(struct file *fp, struct pipe *wpipe, - struct uio *uio); +static int pipe_direct_write(file_t *, struct pipe *, struct uio *); #endif -static int pipespace(struct pipe *pipe, int size); -static int pipe_ctor(void *, void *, int); -static void pipe_dtor(void *, void *); +static int pipespace(struct pipe *, int); +static int pipe_ctor(void *, void *, int); +static void pipe_dtor(void *, void *); #ifndef PIPE_NODIRECT -static int pipe_loan_alloc(struct pipe *, int); -static void pipe_loan_free(struct pipe *); +static int pipe_loan_alloc(struct pipe *, int); +static void pipe_loan_free(struct pipe *); #endif /* PIPE_NODIRECT */ -static pool_cache_t pipe_wr_cache; -static pool_cache_t pipe_rd_cache; +static pool_cache_t pipe_wr_cache; +static pool_cache_t pipe_rd_cache; void pipe_init(void) @@ -244,13 +238,11 @@ /* * The pipe system call for the DTYPE_PIPE type of pipes */ - -/* ARGSUSED */ int sys_pipe(struct lwp *l, const void *v, register_t *retval) { - struct file *rf, *wf; struct pipe *rpipe, *wpipe; + file_t *rf, *wf; kmutex_t *mutex; int fd, error; proc_t *p; @@ -445,9 +437,8 @@ fownsignal(sigp->pipe_pgid, SIGIO, code, band, selp); } -/* ARGSUSED */ static int -pipe_read(struct file *fp, off_t *offset, struct uio *uio, kauth_cred_t cred, +pipe_read(file_t *fp, off_t *offset, struct uio *uio, kauth_cred_t cred, int flags) { struct pipe *rpipe = (struct pipe *) fp->f_data; @@ -469,7 +460,7 @@ while (uio->uio_resid) { /* - * normal pipe buffer receive + * Normal pipe buffer receive. */ if (bp->cnt > 0) { size = bp->size - bp->out; @@ -508,7 +499,7 @@ /* * Direct copy, bypassing a kernel buffer. */ - void * va; + void *va; KASSERT(rpipe->pipe_state & PIPE_DIRECTW); @@ -539,14 +530,14 @@ break; /* - * detect EOF condition - * read returns 0 on EOF, no need to set error + * Detect EOF condition. + * Read returns 0 on EOF, no need to set error. */ if (rpipe->pipe_state & PIPE_EOF) break; /* - * don't block on non-blocking I/O + * Don't block on non-blocking I/O. */ if (fp->f_flag & FNONBLOCK) { error = EAGAIN; @@ -663,7 +654,7 @@ * Called with the long-term pipe lock held. */ static int -pipe_direct_write(struct file *fp, struct pipe *wpipe, struct uio *uio) +pipe_direct_write(file_t *fp, struct pipe *wpipe, struct uio *uio) { int error, npages, j; struct vm_page **pgs; @@ -810,7 +801,7 @@ #endif /* !PIPE_NODIRECT */ static int -pipe_write(struct file *fp, off_t *offset, struct uio *uio, kauth_cred_t cred, +pipe_write(file_t *fp, off_t *offset, struct uio *uio, kauth_cred_t cred, int flags) { struct pipe *wpipe, *rpipe; @@ -953,11 +944,7 @@ * support atomic writes. Wraparound * happened. */ -#ifdef DEBUG - if (bp->in + segsize != bp->size) - panic("Expected pipe buffer wraparound disappeared"); -#endif - + KASSERT(bp->in + segsize == bp->size); error = uiomove(bp->buffer, size - segsize, uio); } @@ -967,18 +954,12 @@ bp->in += size; if (bp->in >= bp->size) { -#ifdef DEBUG - if (bp->in != size - segsize + bp->size) - panic("Expected wraparound bad"); -#endif + KASSERT(bp->in == size - segsize + bp->size); bp->in = size - segsize; } bp->cnt += size; -#ifdef DEBUG - if (bp->cnt > bp->size) - panic("Pipe buffer overflow"); -#endif + KASSERT(bp->cnt <= bp->size); } else { /* * If the "read-side" has been blocked, wake it up now. @@ -986,7 +967,7 @@ cv_broadcast(&wpipe->pipe_rcv); /* - * don't block on non-blocking I/O + * Don't block on non-blocking I/O. */ if (fp->f_flag & FNONBLOCK) { error = EAGAIN; @@ -1052,10 +1033,10 @@ } /* - * we implement a very minimal set of ioctls for compatibility with sockets. + * We implement a very minimal set of ioctls for compatibility with sockets. */ int -pipe_ioctl(struct file *fp, u_long cmd, void *data) +pipe_ioctl(file_t *fp, u_long cmd, void *data) { struct pipe *pipe = fp->f_data; kmutex_t *lock = pipe->pipe_lock; @@ -1131,7 +1112,7 @@ } int -pipe_poll(struct file *fp, int events) +pipe_poll(file_t *fp, int events) { struct pipe *rpipe = fp->f_data; struct pipe *wpipe; @@ -1181,7 +1162,7 @@ } static int -pipe_stat(struct file *fp, struct stat *ub) +pipe_stat(file_t *fp, struct stat *ub) { struct pipe *pipe = fp->f_data; @@ -1207,9 +1188,8 @@ return 0; } -/* ARGSUSED */ static int -pipe_close(struct file *fp) +pipe_close(file_t *fp) { struct pipe *pipe = fp->f_data; @@ -1247,10 +1227,10 @@ } /* - * shutdown the pipe + * Shutdown the pipe. */ static void -pipeclose(struct file *fp, struct pipe *pipe) +pipeclose(file_t *fp, struct pipe *pipe) { kmutex_t *lock; struct pipe *ppipe; @@ -1280,7 +1260,7 @@ } /* - * Disconnect from peer + * Disconnect from peer. */ if ((ppipe = pipe->pipe_peer) != NULL) { pipeselwakeup(ppipe, ppipe, POLL_HUP); @@ -1300,7 +1280,7 @@ mutex_exit(lock); /* - * free resources + * Free resources. */ pipe->pipe_pgid = 0; pipe->pipe_state = PIPE_SIGNALR; @@ -1326,10 +1306,10 @@ switch(kn->kn_filter) { case EVFILT_WRITE: - /* need the peer structure, not our own */ + /* Need the peer structure, not our own. */ pipe = pipe->pipe_peer; - /* if reader end already closed, just return */ + /* If reader end already closed, just return. */ if (pipe == NULL) { mutex_exit(lock); return; @@ -1337,20 +1317,15 @@ break; default: - /* nothing to do */ + /* Nothing to do. */ break; } -#ifdef DIAGNOSTIC - if (kn->kn_hook != pipe) - panic("filt_pipedetach: inconsistent knote"); -#endif - + KASSERT(kn->kn_hook == pipe); SLIST_REMOVE(&pipe->pipe_sel.sel_klist, kn, knote, kn_selnext); mutex_exit(lock); } -/*ARGSUSED*/ static int filt_piperead(struct knote *kn, long hint) { @@ -1381,7 +1356,6 @@ return (kn->kn_data > 0); } -/*ARGSUSED*/ static int filt_pipewrite(struct knote *kn, long hint) { @@ -1416,9 +1390,8 @@ static const struct filterops pipe_wfiltops = { 1, NULL, filt_pipedetach, filt_pipewrite }; -/*ARGSUSED*/ static int -pipe_kqfilter(struct file *fp, struct knote *kn) +pipe_kqfilter(file_t *fp, struct knote *kn) { struct pipe *pipe; kmutex_t *lock; @@ -1436,7 +1409,7 @@ kn->kn_fop = &pipe_wfiltops; pipe = pipe->pipe_peer; if (pipe == NULL) { - /* other end of pipe has been closed */ + /* Other end of pipe has been closed. */ mutex_exit(lock); return (EBADF); }