Briefly-discussed-with: sjg@
#include <sys/priv.h>
#include <sys/kernel.h>
#include <sys/malloc.h>
+#include <sys/mplock2.h>
#include <sys/mqueue.h>
#include <sys/objcache.h>
#include <sys/poll.h>
wakeup_one(&mq->mq_recv_cv);
/* Ready for sending now */
+ get_mplock();
selwakeup(&mq->mq_wsel);
+ rel_mplock();
error:
lockmgr(&mq->mq_mtx, LK_RELEASE);
fdrop(fp);
wakeup_one(&mq->mq_send_cv);
/* Ready for receiving now */
+ get_mplock();
selwakeup(&mq->mq_rsel);
+ rel_mplock();
error:
lockmgr(&mq->mq_mtx, LK_RELEASE);
fdrop(fp);
wakeup(&mq->mq_send_cv);
wakeup(&mq->mq_recv_cv);
+ get_mplock();
selwakeup(&mq->mq_rsel);
selwakeup(&mq->mq_wsel);
+ rel_mplock();
refcnt = mq->mq_refcnt;
if (refcnt == 0)