rdma_filter(D3) rdma_filter(D3)
NAME
rdma_filter - filter transfers to use only DMA-able memory
SYNOPSIS
#include <sys/types.h>
#include <sys/buf.h>
#include <sys/ddi.h>
void rdma_filter(void (*strat)(), buf_t *bp);
Arguments
strat Address of the driver's strategy routine.
bp Pointer to the buf(D4) structure describing the I/O
request.
DESCRIPTION
rdma_filter ensures that DMA transfers only occur to DMA-able
memory. On systems with restrictions on DMA-able memory,
rdma_filter calls the function specified by strat, passing a
buffer that is guaranteed to be DMA-able. On systems without
restrictions on DMA-able memory, rdma_filter simply calls the
strat function passing on the buffer without modification.
Return Values
None. Any errors will be marked in the buffer header
structure.
USAGE
rdma_filter can be used as an alternative to the D_DMA device
flag [see devflag(D1)]. When the devflag D_DMA flag is set,
all I/O requests to the device are filtered before calling the
device's strategy routine. By using rdma_filter instead of
the D_DMA device flag, drivers can achieve a higher degree of
control over the sometimes expensive conversions to DMA-able
memory.
Drivers that use rdma_filter should not set the D_DMA device
flag.
Level
Base only.
Synchronization Constraints
Can sleep.
Copyright 1994 Novell, Inc. Page 1
rdma_filter(D3) rdma_filter(D3)
Driver-defined basic locks and read/write locks may not be
held across calls to this function.
Driver-defined sleep locks may be held across calls to this
function.
REFERENCES
buf(D4), buf_breakup(D3), devflag(D1), strategy(D2)
NOTICES
Portability
All processors
Applicability
ddi: 1, 2, 4
buf_breakup(D3) replaces rdma_filter.
Copyright 1994 Novell, Inc. Page 2