Changeset View
Changeset View
Standalone View
Standalone View
sys/sys/buf.h
Show All 38 Lines | |||||
#ifndef _SYS_BUF_H_ | #ifndef _SYS_BUF_H_ | ||||
#define _SYS_BUF_H_ | #define _SYS_BUF_H_ | ||||
#include <sys/bufobj.h> | #include <sys/bufobj.h> | ||||
#include <sys/queue.h> | #include <sys/queue.h> | ||||
#include <sys/lock.h> | #include <sys/lock.h> | ||||
#include <sys/lockmgr.h> | #include <sys/lockmgr.h> | ||||
#include <vm/uma.h> | |||||
struct bio; | struct bio; | ||||
struct buf; | struct buf; | ||||
struct bufobj; | struct bufobj; | ||||
struct mount; | struct mount; | ||||
struct vnode; | struct vnode; | ||||
struct uio; | struct uio; | ||||
▲ Show 20 Lines • Show All 227 Lines • ▼ Show 20 Lines | |||||
#define BUF_WMESG "bufwait" | #define BUF_WMESG "bufwait" | ||||
#include <sys/proc.h> /* XXX for curthread */ | #include <sys/proc.h> /* XXX for curthread */ | ||||
#include <sys/mutex.h> | #include <sys/mutex.h> | ||||
/* | /* | ||||
* Initialize a lock. | * Initialize a lock. | ||||
*/ | */ | ||||
#define BUF_LOCKINIT(bp) \ | #define BUF_LOCKINIT(bp) \ | ||||
lockinit(&(bp)->b_lock, PRIBIO + 4, buf_wmesg, 0, 0) | lockinit(&(bp)->b_lock, PRIBIO + 4, buf_wmesg, 0, LK_NEW) | ||||
/* | /* | ||||
* | * | ||||
* Get a lock sleeping non-interruptably until it becomes available. | * Get a lock sleeping non-interruptably until it becomes available. | ||||
*/ | */ | ||||
#define BUF_LOCK(bp, locktype, interlock) \ | #define BUF_LOCK(bp, locktype, interlock) \ | ||||
_lockmgr_args_rw(&(bp)->b_lock, (locktype), (interlock), \ | _lockmgr_args_rw(&(bp)->b_lock, (locktype), (interlock), \ | ||||
LK_WMESG_DEFAULT, LK_PRIO_DEFAULT, LK_TIMO_DEFAULT, \ | LK_WMESG_DEFAULT, LK_PRIO_DEFAULT, LK_TIMO_DEFAULT, \ | ||||
LOCK_FILE, LOCK_LINE) | LOCK_FILE, LOCK_LINE) | ||||
▲ Show 20 Lines • Show All 189 Lines • ▼ Show 20 Lines | |||||
extern int maxbcachebuf; /* Max buffer cache block size */ | extern int maxbcachebuf; /* Max buffer cache block size */ | ||||
extern long runningbufspace; | extern long runningbufspace; | ||||
extern long hibufspace; | extern long hibufspace; | ||||
extern int dirtybufthresh; | extern int dirtybufthresh; | ||||
extern int bdwriteskip; | extern int bdwriteskip; | ||||
extern int dirtybufferflushes; | extern int dirtybufferflushes; | ||||
extern int altbufferflushes; | extern int altbufferflushes; | ||||
extern int nswbuf; /* Number of swap I/O buffer headers. */ | extern int nswbuf; /* Number of swap I/O buffer headers. */ | ||||
extern int cluster_pbuf_freecnt; /* Number of pbufs for clusters */ | |||||
extern int vnode_pbuf_freecnt; /* Number of pbufs for vnode pager */ | |||||
extern int vnode_async_pbuf_freecnt; /* Number of pbufs for vnode pager, | |||||
asynchronous reads */ | |||||
extern caddr_t unmapped_buf; /* Data address for unmapped buffers. */ | extern caddr_t unmapped_buf; /* Data address for unmapped buffers. */ | ||||
static inline int | static inline int | ||||
buf_mapped(struct buf *bp) | buf_mapped(struct buf *bp) | ||||
{ | { | ||||
return (bp->b_data != unmapped_buf); | return (bp->b_data != unmapped_buf); | ||||
} | } | ||||
Show All 24 Lines | |||||
int bbarrierwrite(struct buf *); | int bbarrierwrite(struct buf *); | ||||
void bdirty(struct buf *); | void bdirty(struct buf *); | ||||
void bundirty(struct buf *); | void bundirty(struct buf *); | ||||
void bufstrategy(struct bufobj *, struct buf *); | void bufstrategy(struct bufobj *, struct buf *); | ||||
void brelse(struct buf *); | void brelse(struct buf *); | ||||
void bqrelse(struct buf *); | void bqrelse(struct buf *); | ||||
int vfs_bio_awrite(struct buf *); | int vfs_bio_awrite(struct buf *); | ||||
void vfs_drain_busy_pages(struct buf *bp); | void vfs_drain_busy_pages(struct buf *bp); | ||||
struct buf * getpbuf(int *); | |||||
struct buf *incore(struct bufobj *, daddr_t); | struct buf *incore(struct bufobj *, daddr_t); | ||||
struct buf *gbincore(struct bufobj *, daddr_t); | struct buf *gbincore(struct bufobj *, daddr_t); | ||||
struct buf *getblk(struct vnode *, daddr_t, int, int, int, int); | struct buf *getblk(struct vnode *, daddr_t, int, int, int, int); | ||||
int getblkx(struct vnode *vp, daddr_t blkno, int size, int slpflag, | int getblkx(struct vnode *vp, daddr_t blkno, int size, int slpflag, | ||||
int slptimeo, int flags, struct buf **bpp); | int slptimeo, int flags, struct buf **bpp); | ||||
struct buf *geteblk(int, int); | struct buf *geteblk(int, int); | ||||
int bufwait(struct buf *); | int bufwait(struct buf *); | ||||
int bufwrite(struct buf *); | int bufwrite(struct buf *); | ||||
void bufdone(struct buf *); | void bufdone(struct buf *); | ||||
void bd_speedup(void); | void bd_speedup(void); | ||||
extern uma_zone_t pbuf_zone; | |||||
int pbuf_init(void *, int, int); | |||||
int pbuf_ctor(void *, int, void *, int); | |||||
void pbuf_dtor(void *, int, void *); | |||||
int cluster_read(struct vnode *, u_quad_t, daddr_t, long, | int cluster_read(struct vnode *, u_quad_t, daddr_t, long, | ||||
struct ucred *, long, int, int, struct buf **); | struct ucred *, long, int, int, struct buf **); | ||||
int cluster_wbuild(struct vnode *, long, daddr_t, int, int); | int cluster_wbuild(struct vnode *, long, daddr_t, int, int); | ||||
void cluster_write(struct vnode *, struct buf *, u_quad_t, int, int); | void cluster_write(struct vnode *, struct buf *, u_quad_t, int, int); | ||||
void vfs_bio_brelse(struct buf *bp, int ioflags); | void vfs_bio_brelse(struct buf *bp, int ioflags); | ||||
void vfs_bio_bzero_buf(struct buf *bp, int base, int size); | void vfs_bio_bzero_buf(struct buf *bp, int base, int size); | ||||
void vfs_bio_clrbuf(struct buf *); | void vfs_bio_clrbuf(struct buf *); | ||||
void vfs_bio_set_flags(struct buf *bp, int ioflags); | void vfs_bio_set_flags(struct buf *bp, int ioflags); | ||||
void vfs_bio_set_valid(struct buf *, int base, int size); | void vfs_bio_set_valid(struct buf *, int base, int size); | ||||
void vfs_busy_pages(struct buf *, int clear_modify); | void vfs_busy_pages(struct buf *, int clear_modify); | ||||
void vfs_unbusy_pages(struct buf *); | void vfs_unbusy_pages(struct buf *); | ||||
int vmapbuf(struct buf *, int); | int vmapbuf(struct buf *, int); | ||||
void vunmapbuf(struct buf *); | void vunmapbuf(struct buf *); | ||||
void relpbuf(struct buf *, int *); | |||||
void brelvp(struct buf *); | void brelvp(struct buf *); | ||||
void bgetvp(struct vnode *, struct buf *); | void bgetvp(struct vnode *, struct buf *); | ||||
void pbgetbo(struct bufobj *bo, struct buf *bp); | void pbgetbo(struct bufobj *bo, struct buf *bp); | ||||
void pbgetvp(struct vnode *, struct buf *); | void pbgetvp(struct vnode *, struct buf *); | ||||
void pbrelbo(struct buf *); | void pbrelbo(struct buf *); | ||||
void pbrelvp(struct buf *); | void pbrelvp(struct buf *); | ||||
int allocbuf(struct buf *bp, int size); | int allocbuf(struct buf *bp, int size); | ||||
void reassignbuf(struct buf *); | void reassignbuf(struct buf *); | ||||
struct buf *trypbuf(int *); | |||||
void bwait(struct buf *, u_char, const char *); | void bwait(struct buf *, u_char, const char *); | ||||
void bdone(struct buf *); | void bdone(struct buf *); | ||||
typedef daddr_t (vbg_get_lblkno_t)(struct vnode *, vm_ooffset_t); | typedef daddr_t (vbg_get_lblkno_t)(struct vnode *, vm_ooffset_t); | ||||
typedef int (vbg_get_blksize_t)(struct vnode *, daddr_t); | typedef int (vbg_get_blksize_t)(struct vnode *, daddr_t); | ||||
int vfs_bio_getpages(struct vnode *vp, struct vm_page **ma, int count, | int vfs_bio_getpages(struct vnode *vp, struct vm_page **ma, int count, | ||||
int *rbehind, int *rahead, vbg_get_lblkno_t get_lblkno, | int *rbehind, int *rahead, vbg_get_lblkno_t get_lblkno, | ||||
vbg_get_blksize_t get_blksize); | vbg_get_blksize_t get_blksize); | ||||
#endif /* _KERNEL */ | #endif /* _KERNEL */ | ||||
#endif /* !_SYS_BUF_H_ */ | #endif /* !_SYS_BUF_H_ */ |