Lines Matching refs:q
124 zev_queue_t *q;
133 q = zev_queues[i - ZEV_MINOR_MIN];
134 if (!q)
136 if (q->zq_flags & ZEV_FL_BLOCK_WHILE_QUEUE_FULL) {
164 zev_queue_t *q;
172 q = zev_queues[i - ZEV_MINOR_MIN];
173 if (q == NULL)
175 if (!q->zq_oldest)
177 if (oldest_message > q->zq_oldest->seq)
178 oldest_message = q->zq_oldest->seq;
202 zev_queue_hold(zev_queue_t *q)
204 q->zq_refcnt++;
209 zev_queue_release(zev_queue_t *q)
211 q->zq_refcnt--;
212 if (q->zq_refcnt > 0)
215 ASSERT(q->zq_busy == B_FALSE);
218 if ((q->zq_flags & ZEV_FL_PERSISTENT) != 0)
222 zev_queues[q->zq_minor_number - ZEV_MINOR_MIN] = NULL;
227 cv_destroy(&q->zq_condvar);
228 ddi_remove_minor_node(q->zq_dip, q->zq_name);
229 devfs_clean(ddi_root_node() ? ddi_root_node() : q->zq_dip,
231 ddi_soft_state_free(statep, q->zq_minor_number);
244 zev_queue_t *q;
288 q = ddi_get_soft_state(statep, minor);
289 memset(q, 0, sizeof(*q));
290 strncpy(q->zq_name, name, ZEV_MAX_QUEUE_NAME_LEN);
291 q->zq_name[ZEV_MAX_QUEUE_NAME_LEN] = '\0';
292 q->zq_max_queue_len = max_queue_len;
293 q->zq_wakeup_threshold = ZEV_DEFAULT_POLL_WAKEUP_QUEUE_LEN;
294 q->zq_flags = flags;
295 q->zq_refcnt = 1;
296 q->zq_dip = dip;
297 q->zq_minor_number = minor;
298 cv_init(&q->zq_condvar, NULL, CV_DRIVER, NULL);
305 if (!strcmp(q->zq_name, zev_queues[i-ZEV_MINOR_MIN]->zq_name)) {
316 zev_queues[minor - ZEV_MINOR_MIN] = q;
320 if (!(q->zq_flags & ZEV_FL_INITIALLY_EMPTY)) {
321 q->zq_oldest = zev_queue_tail;
323 while ((msg) && (q->zq_queue_len < q->zq_max_queue_len)) {
324 q->zq_queue_len += msg->size;
325 q->zq_queue_messages++;
326 q->zq_oldest = msg;
347 *queue = q;
363 zev_queue_t *q;
379 q = zev_queues[i - ZEV_MINOR_MIN];
380 if (q == NULL)
382 if (!q->zq_busy)
384 if (!q->zq_queue_len)
387 (q->zq_queue_len > q->zq_wakeup_threshold)) {
388 zev_queue_hold(q);
390 pollwakeup(&q->zq_pollhead, POLLIN);
392 zev_queue_release(q);
550 zev_queue_t *q;
606 q = zev_queues[i - ZEV_MINOR_MIN];
607 if (!q)
609 if ((q->zq_flags &
612 if (q->zq_queue_len &&
613 q->zq_queue_len > q->zq_max_queue_len) {
624 q = zev_queues[i - ZEV_MINOR_MIN];
625 if (!q)
628 while (q->zq_queue_len &&
629 q->zq_queue_len > q->zq_max_queue_len) {
630 m = q->zq_oldest;
633 q->zq_events_discarded++;
634 q->zq_bytes_discarded += m->size;
635 q->zq_oldest = m->next;
636 q->zq_queue_len -= m->size;
637 q->zq_queue_messages--;
660 q = zev_queues[i - ZEV_MINOR_MIN];
661 if (!q)
664 zev_queue_hold(q);
667 while (q->zq_max_queue_len &&
668 q->zq_queue_len > q->zq_max_queue_len) {
670 if (q->zq_flags & ZEV_FL_BLOCK_WHILE_QUEUE_FULL) {
675 while (q->zq_queue_len > q->zq_max_queue_len) {
676 m = q->zq_oldest;
679 q->zq_events_discarded++;
680 q->zq_bytes_discarded += m->size;
681 q->zq_oldest = m->next;
682 q->zq_queue_len -= m->size;
683 q->zq_queue_messages--;
689 q->zq_queue_len += msg->size;
690 q->zq_queue_messages++;
691 q->zq_bytes_total += msg->size;
692 q->zq_events_total++;
693 if (q->zq_oldest == NULL)
694 q->zq_oldest = msg;
696 zev_update_statistics(op, &q->zq_statistics);
698 if (q->zq_queue_len > q->zq_wakeup_threshold)
700 if (q->zq_queue_len == msg->size) /* queue was empty */
701 cv_broadcast(&q->zq_condvar);
703 zev_queue_release(q);
761 zev_queue_t *q;
783 q = zev_queues[i - ZEV_MINOR_MIN];
784 if (!q)
786 if (!strcmp(q->zq_name, namebuf)) {
787 zev_queue_hold(q);
789 *out = q;
801 zev_queue_t *q;
807 ret = zev_find_queue(&q, req_q, &gs.zev_queue_name);
814 memcpy(&gs.zev_statistics, &q->zq_statistics,sizeof(gs.zev_statistics));
815 gs.zev_statistics.zev_queue_len = q->zq_queue_len;
816 gs.zev_statistics.zev_bytes_read = q->zq_bytes_read;
817 gs.zev_statistics.zev_bytes_discarded = q->zq_bytes_discarded;
818 gs.zev_statistics.zev_max_queue_len = q->zq_max_queue_len;
819 gs.zev_statistics.zev_cnt_discarded_events = q->zq_events_discarded;
820 gs.zev_statistics.zev_cnt_total_events = q->zq_events_total;
821 zev_queue_release(q);
833 zev_queue_t *q;
845 ret = zev_find_queue(&q, req_q, &qp.zev_queue_name);
856 q->zq_flags = qp.zev_flags;
865 old_max = q->zq_max_queue_len;
866 q->zq_max_queue_len = qp.zev_max_queue_len;
867 if (q->zq_max_queue_len < old_max)
869 if (q->zq_max_queue_len > old_max)
872 if ((qp.zev_poll_wakeup_threshold < q->zq_wakeup_threshold) &&
873 (qp.zev_poll_wakeup_threshold <= q->zq_queue_len))
874 pollwakeup(&q->zq_pollhead, POLLIN);
875 q->zq_wakeup_threshold = qp.zev_poll_wakeup_threshold;
877 zev_queue_release(q);
886 zev_queue_t *q;
892 ret = zev_find_queue(&q, req_q, &qp.zev_queue_name);
897 qp.zev_max_queue_len = q->zq_max_queue_len;
898 qp.zev_flags = q->zq_flags;
899 qp.zev_poll_wakeup_threshold = q->zq_wakeup_threshold;
900 zev_queue_release(q);
934 zev_queue_t *q;
950 q = zev_queues[i - ZEV_MINOR_MIN];
951 if (!q)
953 if (!strcmp(q->zq_name, name)) {
963 if (q->zq_busy) {
971 q->zq_flags = 0;
972 if (q->zq_to_be_removed == B_FALSE) {
973 q->zq_to_be_removed = B_TRUE;
974 zev_queue_release(q);
1003 zev_queue_t *q;
1011 q = zev_queues[i - ZEV_MINOR_MIN];
1012 if (!q)
1015 q->zq_name, ZEV_MAX_QUEUE_NAME_LEN);
1016 gql.zev_queue_name[count].zev_namelen = strlen(q->zq_name);
1032 zev_queue_t *q;
1043 q = zev_queues[i - ZEV_MINOR_MIN];
1044 if (!q)
1046 if (q->zq_max_queue_len <=
1049 q->zq_max_queue_len = zev_statistics.zev_max_queue_len;
1213 zev_queue_t *q;
1220 if ((q = ddi_get_soft_state(statep, minor)) == NULL) {
1226 if (q->zq_oldest)
1231 *phpp = &q->zq_pollhead;
1248 zev_queue_t *q;
1255 q = ddi_get_soft_state(statep, minor);
1256 if (q == NULL) {
1261 msg = q->zq_oldest;
1272 if (cv_wait_sig(&q->zq_condvar, &zev_mutex) == 0) {
1277 msg = q->zq_oldest;
1292 q->zq_oldest = msg->next;
1293 q->zq_bytes_read += msg->size;
1294 q->zq_queue_len -= msg->size;
1295 q->zq_queue_messages--;
1297 msg = q->zq_oldest;
1310 zev_queue_t *q;
1317 if ((q = ddi_get_soft_state(statep, minor)) == NULL) {
1321 if (q->zq_busy != B_TRUE) {
1325 q->zq_busy = B_FALSE;
1326 if ((q->zq_flags & ZEV_FL_PERSISTENT) == 0)
1327 zev_queue_release(q);
1336 zev_queue_t *q;
1348 if ((q = ddi_get_soft_state(statep,
1359 ret = zev_queue_new(&q, q->zq_dip, zq_name, 0,
1365 q->zq_busy = B_TRUE;
1366 *devp = makedevice(getmajor(*devp), q->zq_minor_number);
1370 if ((q = ddi_get_soft_state(statep, minor)) == NULL) {
1376 q->zq_busy = B_TRUE;
1380 if (q->zq_busy == B_TRUE) {
1384 q->zq_busy = B_TRUE; /* can only be opened exclusively */
1414 zev_queue_t *q;
1438 q = ddi_get_soft_state(statep, ZEV_CONTROL_DEVICE_MINOR);
1439 if (q) {
1446 q = zev_queues[i- ZEV_MINOR_MIN];
1447 if (!q)
1449 ASSERT(q->zq_refcnt == 1);
1450 zev_queue_release(q);
1463 zev_queue_t *q;
1483 q = ddi_get_soft_state(statep, ZEV_CONTROL_DEVICE_MINOR);
1484 if (q == NULL) {
1488 if (q->zq_busy) {
1532 zev_queue_t *q;
1561 q = ddi_get_soft_state(statep, ZEV_CONTROL_DEVICE_MINOR);
1562 q->zq_dip = dip;
1563 q->zq_refcnt = 1;
1564 q->zq_busy = B_FALSE;
1565 q->zq_minor_number = ZEV_CONTROL_DEVICE_MINOR;
1566 q->zq_flags = ZEV_FL_PERSISTENT;
1567 strcpy(q->zq_name, ZEV_CONTROL_DEVICE_NAME);
1586 error = zev_queue_new(&q, dip,
1631 zev_queue_t *q;
1636 q = ddi_get_soft_state(statep, minor);
1637 if (q == NULL) {
1645 *resultp = q->zq_dip;
1648 *resultp = (void *)(uintptr_t)ddi_get_instance(q->zq_dip);