Lines Matching refs:qpair

2518 static void qp_lock(const struct vmci_qp *qpair)  in qp_lock()  argument
2520 qp_acquire_queue_mutex(qpair->produce_q); in qp_lock()
2527 static void qp_unlock(const struct vmci_qp *qpair) in qp_unlock() argument
2529 qp_release_queue_mutex(qpair->produce_q); in qp_unlock()
2559 static int qp_get_queue_headers(const struct vmci_qp *qpair, in qp_get_queue_headers() argument
2565 result = qp_map_queue_headers(qpair->produce_q, qpair->consume_q); in qp_get_queue_headers()
2567 *produce_q_header = qpair->produce_q->q_header; in qp_get_queue_headers()
2568 *consume_q_header = qpair->consume_q->q_header; in qp_get_queue_headers()
2569 } else if (qpair->produce_q->saved_header && in qp_get_queue_headers()
2570 qpair->consume_q->saved_header) { in qp_get_queue_headers()
2571 *produce_q_header = qpair->produce_q->saved_header; in qp_get_queue_headers()
2572 *consume_q_header = qpair->consume_q->saved_header; in qp_get_queue_headers()
2586 struct vmci_qp *qpair = (struct vmci_qp *)client_data; in qp_wakeup_cb() local
2588 qp_lock(qpair); in qp_wakeup_cb()
2589 while (qpair->blocked > 0) { in qp_wakeup_cb()
2590 qpair->blocked--; in qp_wakeup_cb()
2591 qpair->generation++; in qp_wakeup_cb()
2592 wake_up(&qpair->event); in qp_wakeup_cb()
2594 qp_unlock(qpair); in qp_wakeup_cb()
2604 static bool qp_wait_for_ready_queue(struct vmci_qp *qpair) in qp_wait_for_ready_queue() argument
2608 qpair->blocked++; in qp_wait_for_ready_queue()
2609 generation = qpair->generation; in qp_wait_for_ready_queue()
2610 qp_unlock(qpair); in qp_wait_for_ready_queue()
2611 wait_event(qpair->event, generation != qpair->generation); in qp_wait_for_ready_queue()
2612 qp_lock(qpair); in qp_wait_for_ready_queue()
2758 int vmci_qpair_alloc(struct vmci_qp **qpair, in vmci_qpair_alloc() argument
2847 *qpair = my_qpair; in vmci_qpair_alloc()
2862 int vmci_qpair_detach(struct vmci_qp **qpair) in vmci_qpair_detach() argument
2867 if (!qpair || !(*qpair)) in vmci_qpair_detach()
2870 old_qpair = *qpair; in vmci_qpair_detach()
2887 *qpair = NULL; in vmci_qpair_detach()
2902 int vmci_qpair_get_produce_indexes(const struct vmci_qp *qpair, in vmci_qpair_get_produce_indexes() argument
2910 if (!qpair) in vmci_qpair_get_produce_indexes()
2913 qp_lock(qpair); in vmci_qpair_get_produce_indexes()
2915 qp_get_queue_headers(qpair, &produce_q_header, &consume_q_header); in vmci_qpair_get_produce_indexes()
2919 qp_unlock(qpair); in vmci_qpair_get_produce_indexes()
2922 ((producer_tail && *producer_tail >= qpair->produce_q_size) || in vmci_qpair_get_produce_indexes()
2923 (consumer_head && *consumer_head >= qpair->produce_q_size))) in vmci_qpair_get_produce_indexes()
2939 int vmci_qpair_get_consume_indexes(const struct vmci_qp *qpair, in vmci_qpair_get_consume_indexes() argument
2947 if (!qpair) in vmci_qpair_get_consume_indexes()
2950 qp_lock(qpair); in vmci_qpair_get_consume_indexes()
2952 qp_get_queue_headers(qpair, &produce_q_header, &consume_q_header); in vmci_qpair_get_consume_indexes()
2956 qp_unlock(qpair); in vmci_qpair_get_consume_indexes()
2959 ((consumer_tail && *consumer_tail >= qpair->consume_q_size) || in vmci_qpair_get_consume_indexes()
2960 (producer_head && *producer_head >= qpair->consume_q_size))) in vmci_qpair_get_consume_indexes()
2976 s64 vmci_qpair_produce_free_space(const struct vmci_qp *qpair) in vmci_qpair_produce_free_space() argument
2982 if (!qpair) in vmci_qpair_produce_free_space()
2985 qp_lock(qpair); in vmci_qpair_produce_free_space()
2987 qp_get_queue_headers(qpair, &produce_q_header, &consume_q_header); in vmci_qpair_produce_free_space()
2991 qpair->produce_q_size); in vmci_qpair_produce_free_space()
2995 qp_unlock(qpair); in vmci_qpair_produce_free_space()
3010 s64 vmci_qpair_consume_free_space(const struct vmci_qp *qpair) in vmci_qpair_consume_free_space() argument
3016 if (!qpair) in vmci_qpair_consume_free_space()
3019 qp_lock(qpair); in vmci_qpair_consume_free_space()
3021 qp_get_queue_headers(qpair, &produce_q_header, &consume_q_header); in vmci_qpair_consume_free_space()
3025 qpair->consume_q_size); in vmci_qpair_consume_free_space()
3029 qp_unlock(qpair); in vmci_qpair_consume_free_space()
3045 s64 vmci_qpair_produce_buf_ready(const struct vmci_qp *qpair) in vmci_qpair_produce_buf_ready() argument
3051 if (!qpair) in vmci_qpair_produce_buf_ready()
3054 qp_lock(qpair); in vmci_qpair_produce_buf_ready()
3056 qp_get_queue_headers(qpair, &produce_q_header, &consume_q_header); in vmci_qpair_produce_buf_ready()
3060 qpair->produce_q_size); in vmci_qpair_produce_buf_ready()
3064 qp_unlock(qpair); in vmci_qpair_produce_buf_ready()
3080 s64 vmci_qpair_consume_buf_ready(const struct vmci_qp *qpair) in vmci_qpair_consume_buf_ready() argument
3086 if (!qpair) in vmci_qpair_consume_buf_ready()
3089 qp_lock(qpair); in vmci_qpair_consume_buf_ready()
3091 qp_get_queue_headers(qpair, &produce_q_header, &consume_q_header); in vmci_qpair_consume_buf_ready()
3095 qpair->consume_q_size); in vmci_qpair_consume_buf_ready()
3099 qp_unlock(qpair); in vmci_qpair_consume_buf_ready()
3115 ssize_t vmci_qpair_enqueue(struct vmci_qp *qpair, in vmci_qpair_enqueue() argument
3122 if (!qpair || !buf) in vmci_qpair_enqueue()
3125 qp_lock(qpair); in vmci_qpair_enqueue()
3128 result = qp_enqueue_locked(qpair->produce_q, in vmci_qpair_enqueue()
3129 qpair->consume_q, in vmci_qpair_enqueue()
3130 qpair->produce_q_size, in vmci_qpair_enqueue()
3135 !qp_wait_for_ready_queue(qpair)) in vmci_qpair_enqueue()
3140 qp_unlock(qpair); in vmci_qpair_enqueue()
3156 ssize_t vmci_qpair_dequeue(struct vmci_qp *qpair, in vmci_qpair_dequeue() argument
3163 if (!qpair || !buf) in vmci_qpair_dequeue()
3166 qp_lock(qpair); in vmci_qpair_dequeue()
3169 result = qp_dequeue_locked(qpair->produce_q, in vmci_qpair_dequeue()
3170 qpair->consume_q, in vmci_qpair_dequeue()
3171 qpair->consume_q_size, in vmci_qpair_dequeue()
3176 !qp_wait_for_ready_queue(qpair)) in vmci_qpair_dequeue()
3181 qp_unlock(qpair); in vmci_qpair_dequeue()
3198 ssize_t vmci_qpair_peek(struct vmci_qp *qpair, in vmci_qpair_peek() argument
3205 if (!qpair || !buf) in vmci_qpair_peek()
3208 qp_lock(qpair); in vmci_qpair_peek()
3211 result = qp_dequeue_locked(qpair->produce_q, in vmci_qpair_peek()
3212 qpair->consume_q, in vmci_qpair_peek()
3213 qpair->consume_q_size, in vmci_qpair_peek()
3218 !qp_wait_for_ready_queue(qpair)) in vmci_qpair_peek()
3223 qp_unlock(qpair); in vmci_qpair_peek()
3240 ssize_t vmci_qpair_enquev(struct vmci_qp *qpair, in vmci_qpair_enquev() argument
3247 if (!qpair) in vmci_qpair_enquev()
3250 qp_lock(qpair); in vmci_qpair_enquev()
3253 result = qp_enqueue_locked(qpair->produce_q, in vmci_qpair_enquev()
3254 qpair->consume_q, in vmci_qpair_enquev()
3255 qpair->produce_q_size, in vmci_qpair_enquev()
3260 !qp_wait_for_ready_queue(qpair)) in vmci_qpair_enquev()
3265 qp_unlock(qpair); in vmci_qpair_enquev()
3282 ssize_t vmci_qpair_dequev(struct vmci_qp *qpair, in vmci_qpair_dequev() argument
3289 if (!qpair) in vmci_qpair_dequev()
3292 qp_lock(qpair); in vmci_qpair_dequev()
3295 result = qp_dequeue_locked(qpair->produce_q, in vmci_qpair_dequev()
3296 qpair->consume_q, in vmci_qpair_dequev()
3297 qpair->consume_q_size, in vmci_qpair_dequev()
3303 !qp_wait_for_ready_queue(qpair)) in vmci_qpair_dequev()
3308 qp_unlock(qpair); in vmci_qpair_dequev()
3326 ssize_t vmci_qpair_peekv(struct vmci_qp *qpair, in vmci_qpair_peekv() argument
3333 if (!qpair) in vmci_qpair_peekv()
3336 qp_lock(qpair); in vmci_qpair_peekv()
3339 result = qp_dequeue_locked(qpair->produce_q, in vmci_qpair_peekv()
3340 qpair->consume_q, in vmci_qpair_peekv()
3341 qpair->consume_q_size, in vmci_qpair_peekv()
3347 !qp_wait_for_ready_queue(qpair)) in vmci_qpair_peekv()
3352 qp_unlock(qpair); in vmci_qpair_peekv()