示例#1
0
/*
 * msgunlink - Unlink msg from queue, decrement byte count and wake up anyone
 * waiting for free bytes on queue.
 *
 * Called with queue locked.
 */
static void
msgunlink(kmsqid_t *qp, struct msg *mp)
{
	list_remove(&qp->msg_list, mp);
	qp->msg_qnum--;
	qp->msg_cbytes -= mp->msg_size;
	msg_rele(mp);

	/* Wake up waiting writers */
	msg_wakeup_senders(qp);
}
示例#2
0
/*
 * msgunlink - Unlink msg from queue, decrement byte count and wake up anyone
 * waiting for free bytes on queue.
 *
 * Called with queue locked.
 */
static void
msgunlink(kmsqid_t *qp, struct msg *mp)
{
    list_remove(&qp->msg_list, mp);
    qp->msg_qnum--;
    qp->msg_cbytes -= mp->msg_size;
    msg_rele(mp);

    /* Wake up waiting writers */
    if (qp->msg_snd_cnt)
        cv_broadcast(&qp->msg_snd_cv);
}