void
freerecvbuf(recvbuf_t *rb)
{
- BLOCKIO();
LOCK();
ISC_LIST_APPEND(free_list, rb, link);
#if defined SYS_WINNT
#endif
free_recvbufs++;
UNLOCK();
- UNBLOCKIO();
}
void
add_full_recv_buffer(recvbuf_t *rb)
{
- BLOCKIO();
LOCK();
ISC_LIST_APPEND(full_list, rb, link);
full_recvbufs++;
UNLOCK();
- UNBLOCKIO();
}
recvbuf_t *
get_free_recv_buffer(void)
{
recvbuf_t * buffer = NULL;
- BLOCKIO();
LOCK();
buffer = ISC_LIST_HEAD(free_list);
if (buffer == NULL)
{
msyslog(LOG_ERR, "No more memory for recvufs");
UNLOCK();
- UNBLOCKIO();
return (NULL);
}
buffer = ISC_LIST_HEAD(free_list);
{
msyslog(LOG_ERR, "Failed to obtain more memory for recvbufs");
UNLOCK();
- UNBLOCKIO();
return (NULL);
}
}
free_recvbufs--;
initialise_buffer(buffer);
UNLOCK();
- UNBLOCKIO();
return (buffer);
}
get_full_recv_buffer(void)
{
recvbuf_t *rbuf;
- BLOCKIO();
LOCK();
rbuf = ISC_LIST_HEAD(full_list);
if (rbuf != NULL)
full_recvbufs = 0;
}
UNLOCK();
- UNBLOCKIO();
return (rbuf);
}