Lines Matching defs:waiter

874  *	the waiter
887 struct sbbc_msg_waiter *waiter;
1006 * allocate/initialise a waiter
1008 waiter = kmem_zalloc(sizeof (struct sbbc_msg_waiter), KM_NOSLEEP);
1010 if (waiter == (struct sbbc_msg_waiter *)NULL) {
1011 cmn_err(CE_WARN, "SBBC Mailbox can't allocate waiter\n");
1019 waiter->w_id = 0; /* Until we get an ID from the send */
1020 waiter->w_msg = response;
1021 waiter->w_msg->msg_status = EINPROGRESS;
1023 cv_init(&waiter->w_cv, NULL, CV_DEFAULT, NULL);
1034 /* Free the waiter */
1035 cv_destroy(&waiter->w_cv);
1036 kmem_free(waiter, sizeof (struct sbbc_msg_waiter));
1044 waiter->w_id = msg_id;
1047 * Lock this waiter list and add the waiter
1052 master_mbox->mbox_wait_list[msg_type] = waiter;
1053 waiter->w_next = NULL;
1057 master_mbox->mbox_wait_list[msg_type] = waiter;
1058 waiter->w_next = tmp;
1072 clockleft = cv_timedwait(&waiter->w_cv, mbox_wait_lock, stop_time);
1079 * and remove the waiter from the waiter list.
1083 * Remove the waiter from the waiter list.
1084 * If we can't find the waiter in the list,
1091 * If we can find the waiter, it has timed out.
1096 if (waiter->w_msg->msg_status == EINPROGRESS) {
1099 cv_wait(&waiter->w_cv, mbox_wait_lock);
1105 rc = waiter->w_msg->msg_status = ETIMEDOUT;
1110 * lose the waiter
1112 cv_destroy(&waiter->w_cv);
1113 kmem_free(waiter, sizeof (struct sbbc_msg_waiter));
1263 * the waiter (if all the message has been received)
1277 struct sbbc_msg_waiter *waiter;
1368 * the waiter list and read the data. We will
1371 * interrupt playing with this waiter.
1386 if ((waiter = mbox_find_waiter(type, f_id)) == NULL) {
1390 if ((waiter = mbox_find_waiter(i, f_id))
1397 if (waiter == NULL) {
1400 * there's no waiter for this message, but that
1410 f, f_id, waiter->w_id,
1411 waiter->w_msg->msg_len);
1413 rc = mbox_read(&header, &frag, waiter->w_msg);
1426 waiter->w_msg->msg_status = (rc == ENOMEM)?
1429 f, waiter->w_msg->msg_status);
1430 cv_signal(&waiter->w_cv);
1438 if (waiter->w_msg->msg_status == ETIMEDOUT) {
1439 cv_signal(&waiter->w_cv);
1446 waiter;
1447 waiter->w_next = NULL;
1452 waiter;
1453 waiter->w_next = tmp;
1853 * We have it all, waiter, message, so lets
1995 struct sbbc_msg_waiter *waiter, *prev;
1998 for (waiter = master_mbox->mbox_wait_list[msg_type];
1999 waiter != NULL; waiter = waiter->w_next) {
2001 if (waiter->w_id == msg_id) {
2003 prev->w_next = waiter->w_next;
2006 waiter->w_next;
2010 prev = waiter;
2013 return (waiter);