call a function when an externally-supplied buffer can be allocated
Synopsis (Not in ODDI)
toid_t esbbcall(int pri, void (*func)(), long arg);
is unable to allocate a message block header
and a data block header to go with its externally supplied data buffer,
the function esbbcall can be used
to schedule the routine func,
to be called with the argument arg when memory becomes available.
serves, in effect, as a timeout call of indeterminate length.
Priority of the
which is a hint to the allocator
indicating how badly the buffer is needed:
Used for normal data allocations.
Used for other non-critical allocations.
Used for allocations that absolutely must succeed,
although success is not guaranteed.
Some implementations may choose to ignore this argument.
Function to be called when a buffer becomes available.
Argument to the function to be called when a buffer becomes available.
On success, esbbcall returns a non-zero value
that identifies the scheduling request.
On failure, esbbcall returns 0.
When func runs,
all interrupts from STREAMS devices are blocked.
On multiprocessor systems,
the interrupts will be blocked only on the processor
on which func is running.
func has no user context
and may not call any function that blocks.
Even when func is called,
esballoc can still fail if another module or driver
had allocated the memory before func
was able to call allocb.
The non-zero identifier returned by esballoc
may be passed to
to cancel the request.
Base or Interrupt.
Does not block.
Driver-defined basic locks, read/write locks, and sleep locks
may be held across calls to this function.
1, 2, 3, 4, 5, 5mp, 6, 6mp, 7, 7mp, 7.1, 7.1mp, 8, 8mp
Differences between versions
The esbbcall function is currently defined
to return a
toid_t data type.
In earlier releases, it returned an int.
SCO OpenServer 5 ODDI compatibility
SCO OpenServer 5 ODDI drivers use the
fuction to recover from
19 June 2005
© 2005 The SCO Group, Inc. All rights reserved.
OpenServer 6 and UnixWare (SVR5) HDK - June 2005