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); }
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); }