Kernel Functions for Drivers disksort(9F)
NAME
disksort - single direction elevator seek sort for buffers
SYNOPSIS
#include
#include
#include
void
disksort(struct diskhd *dp, struct buf *bp);
INTERFACE LEVEL
Solaris DI specific (Solaris DI).
PARAMETERS
dp A pointer to a diskhd structure. A diskhd structure is
essentially identical to head of a buffer structure
(see buf(9S)). The only defined items of interest for
this structure are the avforw and avback structure
elements which are used to maintain the front and tail
pointers of the forward linked I/O request queue.
bp A pointer to a buffer structure. Typically this is the
I/O request that the driver receives in its strategy
routine (see strategy(9E)). The driver is responsible
for initializing the bresid structure element to a
meaningful sort key value prior to calling disksort().
DESCRIPTION
The function disksort() sorts a pointer to a buffer into a
single forward linked list headed by the avforw element of
the argument *dp.
It uses a one-way elevator algorithm that sorts buffers into
the queue in ascending order based upon a key value held in
the argument buffer structure element bresid.
This value can either be the driver calculated cylinder
number for the I/O request described by the buffer argument,
or simply the absolute logical block for the I/O request,
depending on how fine grained the sort is desired to be or
how applicable either quantity is to the device in question.
The head of the linked list is found by use of the avforw
structure element of the argument *dp. The tail of the
linked list is found by use of the avback structure element
SunOS 5.11 Last change: 16 Jan 2006 1
Kernel Functions for Drivers disksort(9F)
of the argument *dp. The avforw element of the *bp argument
is used by disksort() to maintain the forward linkage. The
value at the head of the list presumably indicates the
currently active disk area.
CONTEXT
This function can be called from user, interrupt, or kernel
context.
SEE ALSO
strategy(9E), buf(9S)
Writing Device Drivers
WARNINGS
The disksort() function does no locking. Therefore, any
locking is completely the responsibility of the caller.
SunOS 5.11 Last change: 16 Jan 2006 2
|