bufq(9) - NetBSD Manual Pages

BUFQ(9)                NetBSD Kernel Developer's Manual                BUFQ(9)


NAME
bufq, bufq_state, bufq_alloc, bufq_drain, bufq_free, bufq_getstrategyname, bufq_move, BUFQ_PUT, BUFQ_GET, BUFQ_PEEK -- device buffer queues
SYNOPSIS
#include <sys/bufq.h> int bufq_alloc(struct bufq_state **bufq, const char *strategy, int flags); void bufq_drain(struct bufq_state *bufq); void bufq_free(struct bufq_state *bufq); const char * bufq_getstrategyname(struct bufq_state *bufq); void bufq_move(struct bufq_state *dst, struct bufq_state *src); void BUFQ_PUT(struct bufq_state *bufq, struct buf *bp); struct buf * BUFQ_GET(struct bufq_state *bufq); struct buf * BUFQ_PEEK(struct bufq_state *bufq);
DESCRIPTION
The bufq subsystem is a set of operations for the management of device buffer queues. The primary data type for using the operations is the bufq_state struc- ture, which is opaque for users.
FUNCTIONS
bufq_alloc(bufq, strategy, flags) Allocate and initialize a bufq_state descriptor. The argument strategy specifies a buffer queue strategy to be used for this buffer queue. The following special values can be used: BUFQ_STRAT_ANY Let bufq_alloc() select a strat- egy. BUFQ_DISK_DEFAULT_STRAT Let bufq_alloc() select a strat- egy, assuming it will be used for a normal disk device. Valid bits for the flags are: BUFQ_SORT_RAWBLOCK sort by b_rawblkno BUFQ_SORT_CYLINDER sort by b_cylinder and then by b_rawblkno BUFQ_EXACT Fail if a strategy specified by strategy is not available. In that case, bufq_alloc returns ENOENT. If this flag is not specified, bufq_alloc() will silently use one of available strategies. bufq_drain(bufq) Drain a bufq_state descriptor. bufq_free(bufq) Destroy a bufq_state descriptor. bufq_getstrategyname(bufq) Get a strategy identifier of a buffer queue, the string returned will be NUL-terminated and it always will be a valid strategy name. bufq_move(dst, src) Move all requests from the buffer queue src to the buffer queue dst. BUFQ_PUT(bufq, bp) Put the buf bp in the queue. BUFQ_GET(bufq) Get the next buf from the queue and remove it from the queue. Returns NULL if the queue is empty. BUFQ_PEEK(bufq) Get the next buf from the queue without removal. The next buf will remain the same until BUFQ_GET(), BUFQ_PUT(), or bufq_drain() is called. Returns NULL if the queue is empty.
CODE REFERENCES
The actual code implementing the device buffer queues can be found in the file sys/kern/subr_bufq.c.
HISTORY
The bufq subsystem appeared in NetBSD 2.0.
AUTHORS
The bufq subsystem was written by Juergen Hannken-Illjes <hannken@NetBSD.org>. NetBSD 4.0 December 26, 2005 NetBSD 4.0

Powered by man-cgi (2024-08-26). Maintained for NetBSD by Kimmo Suominen. Based on man-cgi by Panagiotis Christias.