msgphysreq(D3) msgphysreq(D3)
NAME
msgphysreq - ensure that a message meets physical requirements
SYNOPSIS
#include <sys/stream.h>
#include <sys/kmem.h>
#include <sys/ddi.h>
mblk_t *msgphysreq(mblk_t *mp, physreq_t *preqp);
Arguments
mp Pointer to the message whose physical properties
should be checked.
preqp Physical requirements for the data buffer.
DESCRIPTION
msgphysreq ensures that data blocks for a message satisfy a
set of physical requirements.
If the memory for the data pointed to by b_rptr up to b_wptr
(see msgb(D4)) of the message block(s) in mp satisfy the
constraints specified by the physreq(D4) structure pointed to
by preqp, this message is simply returned unaltered.
Otherwise, the data are copied as necessary into buffers which
do meet the constraints. If copied, the data will always be
in the front of the new buffer; that is, b_rptr will equal
db_base (see datab(D4)). In this case, some or all of the
original message will be freed, and a new message pointer may
be returned.
The original message pointer must not be used after calling
msgphysreq.
Return Values
On success, msgphysreq returns a pointer to the new message.
On failure (due to inability to allocate new buffers),
msgphysreq returns NULL and the original message pointer is
still valid.
USAGE
msgphysreq should be used when a message of (initially)
unknown physical properties must be made accessible to a
hardware device via DMA.
Copyright 1994 Novell, Inc. Page 1
msgphysreq(D3) msgphysreq(D3)
Level
Base or Interrupt.
Synchronization Constraints
Does not sleep.
Driver-defined basic locks, read/write locks, and sleep locks
may be held across calls to this function.
REFERENCES
allocb_physreq(D3), kmem_alloc_physreq(D3),
msgpullup_physreq(D3), datab(D4), msgb(D4), physreq(D4)
NOTICES
Portability
All processors
Applicability
ddi: 6, 6mp, 7, 7mp
Copyright 1994 Novell, Inc. Page 2