static void
mailbox_put(struct mailbox *mbox, struct message *msg)
{

	pthread_mutex_lock(&mbox->lock);
	VSTAILQ_INSERT_TAIL(&mbox->messages, msg, list);
	pthread_cond_signal(&mbox->has_mail);
	pthread_mutex_unlock(&mbox->lock);
}
Пример #2
0
static void
exp_mail_it(struct objcore *oc, uint8_t cmds)
{
	CHECK_OBJ_NOTNULL(oc, OBJCORE_MAGIC);
	assert(oc->refcnt > 0);

	Lck_Lock(&exphdl->mtx);
	if ((cmds | oc->exp_flags) & OC_EF_REFD) {
		if (!(oc->exp_flags & OC_EF_POSTED)) {
			if (cmds & OC_EF_REMOVE)
				VSTAILQ_INSERT_HEAD(&exphdl->inbox,
				    oc, exp_list);
			else
				VSTAILQ_INSERT_TAIL(&exphdl->inbox,
				    oc, exp_list);
		}
		oc->exp_flags |= cmds | OC_EF_POSTED;
		AN(oc->exp_flags & OC_EF_REFD);
		VSC_C_main->exp_mailed++;
		AZ(pthread_cond_signal(&exphdl->condvar));
	}
	Lck_Unlock(&exphdl->mtx);
}