Lines Matching refs:qpair
2429 static void qp_lock(const struct vmci_qp *qpair) in qp_lock() argument
2431 qp_acquire_queue_mutex(qpair->produce_q); in qp_lock()
2438 static void qp_unlock(const struct vmci_qp *qpair) in qp_unlock() argument
2440 qp_release_queue_mutex(qpair->produce_q); in qp_unlock()
2470 static int qp_get_queue_headers(const struct vmci_qp *qpair, in qp_get_queue_headers() argument
2476 result = qp_map_queue_headers(qpair->produce_q, qpair->consume_q); in qp_get_queue_headers()
2478 *produce_q_header = qpair->produce_q->q_header; in qp_get_queue_headers()
2479 *consume_q_header = qpair->consume_q->q_header; in qp_get_queue_headers()
2480 } else if (qpair->produce_q->saved_header && in qp_get_queue_headers()
2481 qpair->consume_q->saved_header) { in qp_get_queue_headers()
2482 *produce_q_header = qpair->produce_q->saved_header; in qp_get_queue_headers()
2483 *consume_q_header = qpair->consume_q->saved_header; in qp_get_queue_headers()
2497 struct vmci_qp *qpair = (struct vmci_qp *)client_data; in qp_wakeup_cb() local
2499 qp_lock(qpair); in qp_wakeup_cb()
2500 while (qpair->blocked > 0) { in qp_wakeup_cb()
2501 qpair->blocked--; in qp_wakeup_cb()
2502 qpair->generation++; in qp_wakeup_cb()
2503 wake_up(&qpair->event); in qp_wakeup_cb()
2505 qp_unlock(qpair); in qp_wakeup_cb()
2515 static bool qp_wait_for_ready_queue(struct vmci_qp *qpair) in qp_wait_for_ready_queue() argument
2519 qpair->blocked++; in qp_wait_for_ready_queue()
2520 generation = qpair->generation; in qp_wait_for_ready_queue()
2521 qp_unlock(qpair); in qp_wait_for_ready_queue()
2522 wait_event(qpair->event, generation != qpair->generation); in qp_wait_for_ready_queue()
2523 qp_lock(qpair); in qp_wait_for_ready_queue()
2679 int vmci_qpair_alloc(struct vmci_qp **qpair, in vmci_qpair_alloc() argument
2767 *qpair = my_qpair; in vmci_qpair_alloc()
2782 int vmci_qpair_detach(struct vmci_qp **qpair) in vmci_qpair_detach() argument
2787 if (!qpair || !(*qpair)) in vmci_qpair_detach()
2790 old_qpair = *qpair; in vmci_qpair_detach()
2807 *qpair = NULL; in vmci_qpair_detach()
2822 int vmci_qpair_get_produce_indexes(const struct vmci_qp *qpair, in vmci_qpair_get_produce_indexes() argument
2830 if (!qpair) in vmci_qpair_get_produce_indexes()
2833 qp_lock(qpair); in vmci_qpair_get_produce_indexes()
2835 qp_get_queue_headers(qpair, &produce_q_header, &consume_q_header); in vmci_qpair_get_produce_indexes()
2839 qp_unlock(qpair); in vmci_qpair_get_produce_indexes()
2842 ((producer_tail && *producer_tail >= qpair->produce_q_size) || in vmci_qpair_get_produce_indexes()
2843 (consumer_head && *consumer_head >= qpair->produce_q_size))) in vmci_qpair_get_produce_indexes()
2859 int vmci_qpair_get_consume_indexes(const struct vmci_qp *qpair, in vmci_qpair_get_consume_indexes() argument
2867 if (!qpair) in vmci_qpair_get_consume_indexes()
2870 qp_lock(qpair); in vmci_qpair_get_consume_indexes()
2872 qp_get_queue_headers(qpair, &produce_q_header, &consume_q_header); in vmci_qpair_get_consume_indexes()
2876 qp_unlock(qpair); in vmci_qpair_get_consume_indexes()
2879 ((consumer_tail && *consumer_tail >= qpair->consume_q_size) || in vmci_qpair_get_consume_indexes()
2880 (producer_head && *producer_head >= qpair->consume_q_size))) in vmci_qpair_get_consume_indexes()
2896 s64 vmci_qpair_produce_free_space(const struct vmci_qp *qpair) in vmci_qpair_produce_free_space() argument
2902 if (!qpair) in vmci_qpair_produce_free_space()
2905 qp_lock(qpair); in vmci_qpair_produce_free_space()
2907 qp_get_queue_headers(qpair, &produce_q_header, &consume_q_header); in vmci_qpair_produce_free_space()
2911 qpair->produce_q_size); in vmci_qpair_produce_free_space()
2915 qp_unlock(qpair); in vmci_qpair_produce_free_space()
2930 s64 vmci_qpair_consume_free_space(const struct vmci_qp *qpair) in vmci_qpair_consume_free_space() argument
2936 if (!qpair) in vmci_qpair_consume_free_space()
2939 qp_lock(qpair); in vmci_qpair_consume_free_space()
2941 qp_get_queue_headers(qpair, &produce_q_header, &consume_q_header); in vmci_qpair_consume_free_space()
2945 qpair->consume_q_size); in vmci_qpair_consume_free_space()
2949 qp_unlock(qpair); in vmci_qpair_consume_free_space()
2965 s64 vmci_qpair_produce_buf_ready(const struct vmci_qp *qpair) in vmci_qpair_produce_buf_ready() argument
2971 if (!qpair) in vmci_qpair_produce_buf_ready()
2974 qp_lock(qpair); in vmci_qpair_produce_buf_ready()
2976 qp_get_queue_headers(qpair, &produce_q_header, &consume_q_header); in vmci_qpair_produce_buf_ready()
2980 qpair->produce_q_size); in vmci_qpair_produce_buf_ready()
2984 qp_unlock(qpair); in vmci_qpair_produce_buf_ready()
3000 s64 vmci_qpair_consume_buf_ready(const struct vmci_qp *qpair) in vmci_qpair_consume_buf_ready() argument
3006 if (!qpair) in vmci_qpair_consume_buf_ready()
3009 qp_lock(qpair); in vmci_qpair_consume_buf_ready()
3011 qp_get_queue_headers(qpair, &produce_q_header, &consume_q_header); in vmci_qpair_consume_buf_ready()
3015 qpair->consume_q_size); in vmci_qpair_consume_buf_ready()
3019 qp_unlock(qpair); in vmci_qpair_consume_buf_ready()
3036 ssize_t vmci_qpair_enquev(struct vmci_qp *qpair, in vmci_qpair_enquev() argument
3043 if (!qpair) in vmci_qpair_enquev()
3046 qp_lock(qpair); in vmci_qpair_enquev()
3049 result = qp_enqueue_locked(qpair->produce_q, in vmci_qpair_enquev()
3050 qpair->consume_q, in vmci_qpair_enquev()
3051 qpair->produce_q_size, in vmci_qpair_enquev()
3055 !qp_wait_for_ready_queue(qpair)) in vmci_qpair_enquev()
3060 qp_unlock(qpair); in vmci_qpair_enquev()
3077 ssize_t vmci_qpair_dequev(struct vmci_qp *qpair, in vmci_qpair_dequev() argument
3084 if (!qpair) in vmci_qpair_dequev()
3087 qp_lock(qpair); in vmci_qpair_dequev()
3090 result = qp_dequeue_locked(qpair->produce_q, in vmci_qpair_dequev()
3091 qpair->consume_q, in vmci_qpair_dequev()
3092 qpair->consume_q_size, in vmci_qpair_dequev()
3096 !qp_wait_for_ready_queue(qpair)) in vmci_qpair_dequev()
3101 qp_unlock(qpair); in vmci_qpair_dequev()
3119 ssize_t vmci_qpair_peekv(struct vmci_qp *qpair, in vmci_qpair_peekv() argument
3126 if (!qpair) in vmci_qpair_peekv()
3129 qp_lock(qpair); in vmci_qpair_peekv()
3132 result = qp_dequeue_locked(qpair->produce_q, in vmci_qpair_peekv()
3133 qpair->consume_q, in vmci_qpair_peekv()
3134 qpair->consume_q_size, in vmci_qpair_peekv()
3138 !qp_wait_for_ready_queue(qpair)) in vmci_qpair_peekv()
3143 qp_unlock(qpair); in vmci_qpair_peekv()