mirror of https://gerrit.osmocom.org/libosmocore
write_queue: Add osmo_wqueue_enqueue_quiet()
Same as osmo_wqueue_enqueue() but without logging queue overruns. Change-Id: Ic082eb39795b08631284eeb421fef3c28f2e90dc
This commit is contained in:
parent
7f6c87da2f
commit
66138ccab5
|
@ -53,6 +53,7 @@ struct osmo_wqueue {
|
|||
void osmo_wqueue_init(struct osmo_wqueue *queue, int max_length);
|
||||
void osmo_wqueue_clear(struct osmo_wqueue *queue);
|
||||
int osmo_wqueue_enqueue(struct osmo_wqueue *queue, struct msgb *data);
|
||||
int osmo_wqueue_enqueue_quiet(struct osmo_wqueue *queue, struct msgb *data);
|
||||
int osmo_wqueue_bfd_cb(struct osmo_fd *fd, unsigned int what);
|
||||
|
||||
/*! @} */
|
||||
|
|
|
@ -100,6 +100,23 @@ void osmo_wqueue_init(struct osmo_wqueue *queue, int max_length)
|
|||
INIT_LLIST_HEAD(&queue->msg_queue);
|
||||
}
|
||||
|
||||
/*! Enqueue a new \ref msgb into a write queue (without logging full queue events)
|
||||
* \param[in] queue Write queue to be used
|
||||
* \param[in] data to-be-enqueued message buffer
|
||||
* \returns 0 on success; negative on error
|
||||
*/
|
||||
int osmo_wqueue_enqueue_quiet(struct osmo_wqueue *queue, struct msgb *data)
|
||||
{
|
||||
if (queue->current_length >= queue->max_length)
|
||||
return -ENOSPC;
|
||||
|
||||
++queue->current_length;
|
||||
msgb_enqueue(&queue->msg_queue, data);
|
||||
queue->bfd.when |= OSMO_FD_WRITE;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*! Enqueue a new \ref msgb into a write queue
|
||||
* \param[in] queue Write queue to be used
|
||||
* \param[in] data to-be-enqueued message buffer
|
||||
|
@ -113,11 +130,7 @@ int osmo_wqueue_enqueue(struct osmo_wqueue *queue, struct msgb *data)
|
|||
return -ENOSPC;
|
||||
}
|
||||
|
||||
++queue->current_length;
|
||||
msgb_enqueue(&queue->msg_queue, data);
|
||||
queue->bfd.when |= OSMO_FD_WRITE;
|
||||
|
||||
return 0;
|
||||
return osmo_wqueue_enqueue_quiet(queue, data);
|
||||
}
|
||||
|
||||
/*! Clear a \ref osmo_wqueue
|
||||
|
|
Loading…
Reference in New Issue