sendq_token
path->sendq_token.msgbuf_avail = RSMIPC_MAX_MESSAGES;
cv_broadcast(&path->sendq_token.sendq_cv);
path->sendq_token.msgbuf_avail = 0;
path->sendq_token.msgbuf_avail = RSMIPC_MAX_MESSAGES;
cv_broadcast(&path->sendq_token.sendq_cv);
path->sendq_token.msgbuf_avail, msghdr->rsmipc_src,
path->sendq_token.msgbuf_avail += msg->rsmipc_credits;
ASSERT(path->sendq_token.msgbuf_avail <= RSMIPC_MAX_MESSAGES);
cv_broadcast(&path->sendq_token.sendq_cv);
sendq_token_t *sendq_token;
sendq_token = rsmka_get_sendq_token(dest, used_sendq_token);
if (sendq_token == NULL) {
if ((sendq_token == used_sendq_token) &&
rele_sendq_token(sendq_token);
used_sendq_token = sendq_token;
path = SQ_TOKEN_TO_PATH(sendq_token);
ipc_handle = sendq_token->rsmpi_sendq_handle;
while ((sendq_token->msgbuf_avail == 0) &&
e = cv_wait_sig(&sendq_token->sendq_cv,
rele_sendq_token(sendq_token);
rele_sendq_token(sendq_token);
ASSERT(sendq_token->msgbuf_avail > 0);
sendq_token->msgbuf_avail--;
sendq_token->msgbuf_avail++;
cv_broadcast(&sendq_token->sendq_cv);
rele_sendq_token(sendq_token);
rele_sendq_token(sendq_token);
while ((sendq_token->msgbuf_avail == 0) &&
e = cv_wait_sig(&sendq_token->sendq_cv,
rele_sendq_token(sendq_token);
rele_sendq_token(sendq_token);
ASSERT(sendq_token->msgbuf_avail > 0);
sendq_token->msgbuf_avail--;
sendq_token->msgbuf_avail++;
cv_broadcast(&sendq_token->sendq_cv);
rele_sendq_token(sendq_token);
rele_sendq_token(sendq_token);
ipc_handle = path->sendq_token.rsmpi_sendq_handle;
(void) cv_reltimedwait(&path->sendq_token.sendq_cv,
unlink_sendq_token(&path->sendq_token, path->remote_node);
sendq_token_t *sendq_token;
sendq_token = ipc_info->token_list;
while (sendq_token != NULL) {
path = SQ_TOKEN_TO_PATH(sendq_token);
sendq_token = sendq_token->next;
sendq_token = ipc_info->token_list;
while (sendq_token != NULL) {
path = SQ_TOKEN_TO_PATH(sendq_token);
sendq_token = sendq_token->next;
if (sendq_token == ipc_info->token_list)
sqhdl = path->sendq_token.rsmpi_sendq_handle;
path->sendq_token.rsmpi_sendq_handle = NULL;
path->sendq_token.msgbuf_avail = 0;
cv_broadcast(&path->sendq_token.sendq_cv);
while (path->sendq_token.ref_cnt != 0)
cv_wait(&path->sendq_token.sendq_cv,
if (path->sendq_token.rsmpi_sendq_handle != NULL)
path->sendq_token.rsmpi_sendq_handle);
path->sendq_token.rsmpi_sendq_handle = NULL;
cv_destroy(¤t->sendq_token.sendq_cv);
token = &path->sendq_token;
sendq_handle = path->sendq_token.
path->sendq_token.rsmpi_sendq_handle =
path->sendq_token.msgbuf_avail = 0;
cv_broadcast(&path->sendq_token.sendq_cv);
while (path->sendq_token.ref_cnt != 0)
cv_wait(&path->sendq_token.sendq_cv,
sendq_handle = path->sendq_token.rsmpi_sendq_handle;
path->sendq_token.rsmpi_sendq_handle = NULL;
cv_init(&path->sendq_token.sendq_cv, NULL, CV_DEFAULT, NULL);
link_sendq_token(&path->sendq_token, remote_node);
struct sendq_token *next;
sendq_token_t sendq_token;
((path_t *)((char *)(token) - ((char *)(&((path_t *)0)->sendq_token))))
(path)->sendq_token.ref_cnt++; \
ASSERT((path)->sendq_token.ref_cnt != 0); \
(path)->sendq_token.ref_cnt--; \
ASSERT((path)->sendq_token.ref_cnt >= 0); \
if ((path)->sendq_token.ref_cnt == 0) \
cv_signal(&(path)->sendq_token.sendq_cv); \