Content-type: text/html Man page of strategy

strategy

Section: Driver Entry Points (9E)
Updated: 6 Nov 2003
Index Return to Main Contents
 

NAME

strategy - perform block I/O  

SYNOPSIS

#include <sys/types.h>
#include <sys/buf.h>
#include <sys/ddi.h>
#include <sys/sunddi.h>

int prefixstrategy(struct buf *bp);  

INTERFACE LEVEL

Architecture independent level 1 (DDI/DKI). This entry point is required for block devices.  

PARAMETERS

bp Pointer to the buf(9S) structure.

 

DESCRIPTION

The strategy() routine is called indirectly (through cb_ops(9S)) by the kernel to read and write blocks of data on the block device. strategy() may also be called directly or indirectly to support the raw character interface of a block device (read(9E), write(9E) and ioctl(9E)). The strategy() routine's responsibility is to set up and initiate the transfer.

In general, strategy() should not block. It can, however, perform a kmem_cache_alloc(9F) with both the KM_PUSHPAGE and KM_SLEEP flags set, which might block, without causing deadlock in low memory situations.  

RETURN VALUES

The strategy() function must return 0. On an error condition, it should call bioerror(9f) to set b_flags to the proper error code, and call biodone(9f). Note that a partial transfer is not considered to be an error.  

SEE ALSO

ioctl(9E), read(9E), write(9E), biodone(9F), bioerror(9F), buf(9S), cb_ops(9S), kmem_cache_alloc(9F)

Writing Device Drivers


 

Index

NAME
SYNOPSIS
INTERFACE LEVEL
PARAMETERS
DESCRIPTION
RETURN VALUES
SEE ALSO

This document was created by man2html, using the manual pages.
Time: 02:39:35 GMT, October 02, 2010