 |
Index for Section 9r |
|
 |
Alphabetical listing for E |
|
 |
Bottom of page |
|
esballoc(9r)
NAME
esballoc - STREAMS: Allocates a message block with a shared buffer
SYNOPSIS
#include <sys/stream.h>
mblk_t * esballoc(
unsigned char *base,
int size,
int pri,
frtn_t *free_rtnp );
ARGUMENTS
base
Specifies the address of the user-supplied data buffer.
size
Specifies the number of bytes in the data buffer.
pri Specifies the priority of the allocation request (to be used by the
allocb interface, which esballoc calls).
free_rtnp
Specifies the free interface (routine) data structure.
DESCRIPTION
The esballoc interface creates a STREAMS message and attaches a user-
supplied data buffer in place of a STREAMS data buffer. The interface
calls allocb to obtain a message and data block header. The user-supplied
data buffer, pointed to by the base argument, is used as the data buffer
for the message.
The free_rtn structure is referenced by the dp_freep member of the datab
structure. When the freeb interface is called to free the message, the
driver's message free interface (referenced through the free_rtn structure)
is called, with arguments, to free the data buffer.
The free_rtn structure is defined as follows:
/* Free return structure for esballoc */
typedef struct free_rtn {
void (*free_func)(char *, char *); /* Interface to free buffer */
char * free_arg; /* Parameter to free_func */
} frtn_t;
Instead of requiring a specific number of arguments, the free_arg member is
of type char *. This way, the driver can pass a pointer to a structure if
more than one argument is needed.
NOTES
The free_func interface must be defined in kernel space and should be
declared void. It has no user context and must not sleep.
RETURN VALUES
Upon successful completion, the esballoc interface returns a pointer to the
newly allocated message block. This message block is of type struct msgb *.
The msgb data structure is defined in the /usr/sys/include/sys/stream.h
file.
On failure, esballoc returns a NULL pointer.
SEE ALSO
Kernel Interfaces: allocb(9r), freeb(9r)
Programmer's Guide: STREAMS
 |
Index for Section 9r |
|
 |
Alphabetical listing for E |
|
 |
Top of page |
|