recvbuf_t * get_full_recv_buffer(void) { recvbuf_t * rbuf; LOCK(); #ifdef HAVE_SIGNALED_IO /* * make sure there are free buffers when we * wander off to do lengthy packet processing with * any buffer we grab from the full list. * * fixes malloc() interrupted by SIGIO risk * (Bug 889) */ if (NULL == free_recv_list || buffer_shortfall > 0) { /* * try to get us some more buffers */ create_buffers(RECV_INC); } #endif /* * try to grab a full buffer */ UNLINK_FIFO(rbuf, full_recv_fifo, link); if (rbuf != NULL) full_recvbufs--; UNLOCK(); return rbuf; }
recvbuf_t * get_full_recv_buffer(void) { recvbuf_t * rbuf; /* * try to grab a full buffer */ UNLINK_FIFO(rbuf, full_recv_fifo, link); if (rbuf != NULL) full_recvbufs--; return rbuf; }
static void uninit_recvbuff(void) { recvbuf_t *rbunlinked; do { UNLINK_FIFO(rbunlinked, full_recv_fifo, link); if (rbunlinked != NULL) free(rbunlinked); } while (rbunlinked != NULL); do { UNLINK_HEAD_SLIST(rbunlinked, free_recv_list, link); if (rbunlinked != NULL) free(rbunlinked); } while (rbunlinked != NULL); }
static void uninit_recvbuff(void) { recvbuf_t *rbunlinked; for (;;) { UNLINK_FIFO(rbunlinked, full_recv_fifo, link); if (rbunlinked == NULL) break; free(rbunlinked); } for (;;) { UNLINK_HEAD_SLIST(rbunlinked, free_recv_list, link); if (rbunlinked == NULL) break; free(rbunlinked); } }