Net2Kern/kern/vfs_bio.c
/*
* Copyright (c) 1982, 1986, 1989 Regents of the University of California.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by the University of
* California, Berkeley and its contributors.
* 4. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* from: @(#)vfs_bio.c 7.40 (Berkeley) 5/8/91
*/
#include "param.h"
#include "proc.h"
#include "buf.h"
#include "vnode.h"
#include "specdev.h"
#include "mount.h"
#include "trace.h"
#include "resourcevar.h"
/*
* Initialize buffers and hash links for buffers.
*/
bufinit()
{
/*
* Body deleted.
*/
return;
}
/*
* Find the block in the buffer pool.
* If the buffer is not present, allocate a new buffer and load
* its contents according to the filesystem fill routine.
*/
bread(vp, blkno, size, cred, bpp)
struct vnode *vp;
daddr_t blkno;
int size;
struct ucred *cred;
struct buf **bpp;
{
/*
* Body deleted.
*/
return (EIO);
}
/*
* Operates like bread, but also starts I/O on the specified
* read-ahead block.
*/
breada(vp, blkno, size, rablkno, rabsize, cred, bpp)
struct vnode *vp;
daddr_t blkno; int size;
daddr_t rablkno; int rabsize;
struct ucred *cred;
struct buf **bpp;
{
/*
* Body deleted.
*/
return (EIO);
}
/*
* Synchronous write.
* Release buffer on completion.
*/
bwrite(bp)
register struct buf *bp;
{
/*
* Body deleted.
*/
return (EIO);
}
/*
* Delayed write.
*
* The buffer is marked dirty, but is not queued for I/O.
* This routine should be used when the buffer is expected
* to be modified again soon, typically a small write that
* partially fills a buffer.
*
* NB: magnetic tapes cannot be delayed; they must be
* written in the order that the writes are requested.
*/
bdwrite(bp)
register struct buf *bp;
{
/*
* Body deleted.
*/
return;
}
/*
* Asynchronous write.
* Start I/O on a buffer, but do not wait for it to complete.
* The buffer is released when the I/O completes.
*/
bawrite(bp)
register struct buf *bp;
{
/*
* Body deleted.
*/
return;
}
/*
* Release a buffer.
* Even if the buffer is dirty, no I/O is started.
*/
brelse(bp)
register struct buf *bp;
{
/*
* Body deleted.
*/
return;
}
/*
* Check to see if a block is currently memory resident.
*/
incore(vp, blkno)
struct vnode *vp;
daddr_t blkno;
{
/*
* Body deleted.
*/
return (0);
}
/*
* Check to see if a block is currently memory resident.
* If it is resident, return it. If it is not resident,
* allocate a new buffer and assign it to the block.
*/
struct buf *
getblk(vp, blkno, size)
register struct vnode *vp;
daddr_t blkno;
int size;
{
/*
* Body deleted.
*/
return (0);
}
/*
* Allocate a buffer.
* The caller will assign it to a block.
*/
struct buf *
geteblk(size)
int size;
{
/*
* Body deleted.
*/
return (0);
}
/*
* Expand or contract the actual memory allocated to a buffer.
* If no memory is available, release buffer and take error exit.
*/
allocbuf(tp, size)
register struct buf *tp;
int size;
{
/*
* Body deleted.
*/
return (0);
}
/*
* Find a buffer which is available for use.
* Select something from a free list.
* Preference is to AGE list, then LRU list.
*/
struct buf *
getnewbuf()
{
/*
* Body deleted.
*/
return (0);
}
/*
* Wait for I/O to complete.
*
* Extract and return any errors associated with the I/O.
* If the error flag is set, but no specific error is
* given, return EIO.
*/
biowait(bp)
register struct buf *bp;
{
/*
* Body deleted.
*/
return (EIO);
}
/*
* Mark I/O complete on a buffer.
*
* If a callback has been requested, e.g. the pageout
* daemon, do so. Otherwise, awaken waiting processes.
*/
biodone(bp)
register struct buf *bp;
{
/*
* Body deleted.
*/
return;
}