Lines Matching refs:qpair

2417 static void qp_lock(const struct vmci_qp *qpair)  in qp_lock()  argument
2419 qp_acquire_queue_mutex(qpair->produce_q); in qp_lock()
2426 static void qp_unlock(const struct vmci_qp *qpair) in qp_unlock() argument
2428 qp_release_queue_mutex(qpair->produce_q); in qp_unlock()
2458 static int qp_get_queue_headers(const struct vmci_qp *qpair, in qp_get_queue_headers() argument
2464 result = qp_map_queue_headers(qpair->produce_q, qpair->consume_q); in qp_get_queue_headers()
2466 *produce_q_header = qpair->produce_q->q_header; in qp_get_queue_headers()
2467 *consume_q_header = qpair->consume_q->q_header; in qp_get_queue_headers()
2468 } else if (qpair->produce_q->saved_header && in qp_get_queue_headers()
2469 qpair->consume_q->saved_header) { in qp_get_queue_headers()
2470 *produce_q_header = qpair->produce_q->saved_header; in qp_get_queue_headers()
2471 *consume_q_header = qpair->consume_q->saved_header; in qp_get_queue_headers()
2485 struct vmci_qp *qpair = (struct vmci_qp *)client_data; in qp_wakeup_cb() local
2487 qp_lock(qpair); in qp_wakeup_cb()
2488 while (qpair->blocked > 0) { in qp_wakeup_cb()
2489 qpair->blocked--; in qp_wakeup_cb()
2490 qpair->generation++; in qp_wakeup_cb()
2491 wake_up(&qpair->event); in qp_wakeup_cb()
2493 qp_unlock(qpair); in qp_wakeup_cb()
2503 static bool qp_wait_for_ready_queue(struct vmci_qp *qpair) in qp_wait_for_ready_queue() argument
2507 qpair->blocked++; in qp_wait_for_ready_queue()
2508 generation = qpair->generation; in qp_wait_for_ready_queue()
2509 qp_unlock(qpair); in qp_wait_for_ready_queue()
2510 wait_event(qpair->event, generation != qpair->generation); in qp_wait_for_ready_queue()
2511 qp_lock(qpair); in qp_wait_for_ready_queue()
2655 int vmci_qpair_alloc(struct vmci_qp **qpair, in vmci_qpair_alloc() argument
2744 *qpair = my_qpair; in vmci_qpair_alloc()
2759 int vmci_qpair_detach(struct vmci_qp **qpair) in vmci_qpair_detach() argument
2764 if (!qpair || !(*qpair)) in vmci_qpair_detach()
2767 old_qpair = *qpair; in vmci_qpair_detach()
2784 *qpair = NULL; in vmci_qpair_detach()
2799 int vmci_qpair_get_produce_indexes(const struct vmci_qp *qpair, in vmci_qpair_get_produce_indexes() argument
2807 if (!qpair) in vmci_qpair_get_produce_indexes()
2810 qp_lock(qpair); in vmci_qpair_get_produce_indexes()
2812 qp_get_queue_headers(qpair, &produce_q_header, &consume_q_header); in vmci_qpair_get_produce_indexes()
2816 qp_unlock(qpair); in vmci_qpair_get_produce_indexes()
2819 ((producer_tail && *producer_tail >= qpair->produce_q_size) || in vmci_qpair_get_produce_indexes()
2820 (consumer_head && *consumer_head >= qpair->produce_q_size))) in vmci_qpair_get_produce_indexes()
2836 int vmci_qpair_get_consume_indexes(const struct vmci_qp *qpair, in vmci_qpair_get_consume_indexes() argument
2844 if (!qpair) in vmci_qpair_get_consume_indexes()
2847 qp_lock(qpair); in vmci_qpair_get_consume_indexes()
2849 qp_get_queue_headers(qpair, &produce_q_header, &consume_q_header); in vmci_qpair_get_consume_indexes()
2853 qp_unlock(qpair); in vmci_qpair_get_consume_indexes()
2856 ((consumer_tail && *consumer_tail >= qpair->consume_q_size) || in vmci_qpair_get_consume_indexes()
2857 (producer_head && *producer_head >= qpair->consume_q_size))) in vmci_qpair_get_consume_indexes()
2873 s64 vmci_qpair_produce_free_space(const struct vmci_qp *qpair) in vmci_qpair_produce_free_space() argument
2879 if (!qpair) in vmci_qpair_produce_free_space()
2882 qp_lock(qpair); in vmci_qpair_produce_free_space()
2884 qp_get_queue_headers(qpair, &produce_q_header, &consume_q_header); in vmci_qpair_produce_free_space()
2888 qpair->produce_q_size); in vmci_qpair_produce_free_space()
2892 qp_unlock(qpair); in vmci_qpair_produce_free_space()
2907 s64 vmci_qpair_consume_free_space(const struct vmci_qp *qpair) in vmci_qpair_consume_free_space() argument
2913 if (!qpair) in vmci_qpair_consume_free_space()
2916 qp_lock(qpair); in vmci_qpair_consume_free_space()
2918 qp_get_queue_headers(qpair, &produce_q_header, &consume_q_header); in vmci_qpair_consume_free_space()
2922 qpair->consume_q_size); in vmci_qpair_consume_free_space()
2926 qp_unlock(qpair); in vmci_qpair_consume_free_space()
2942 s64 vmci_qpair_produce_buf_ready(const struct vmci_qp *qpair) in vmci_qpair_produce_buf_ready() argument
2948 if (!qpair) in vmci_qpair_produce_buf_ready()
2951 qp_lock(qpair); in vmci_qpair_produce_buf_ready()
2953 qp_get_queue_headers(qpair, &produce_q_header, &consume_q_header); in vmci_qpair_produce_buf_ready()
2957 qpair->produce_q_size); in vmci_qpair_produce_buf_ready()
2961 qp_unlock(qpair); in vmci_qpair_produce_buf_ready()
2977 s64 vmci_qpair_consume_buf_ready(const struct vmci_qp *qpair) in vmci_qpair_consume_buf_ready() argument
2983 if (!qpair) in vmci_qpair_consume_buf_ready()
2986 qp_lock(qpair); in vmci_qpair_consume_buf_ready()
2988 qp_get_queue_headers(qpair, &produce_q_header, &consume_q_header); in vmci_qpair_consume_buf_ready()
2992 qpair->consume_q_size); in vmci_qpair_consume_buf_ready()
2996 qp_unlock(qpair); in vmci_qpair_consume_buf_ready()
3012 ssize_t vmci_qpair_enqueue(struct vmci_qp *qpair, in vmci_qpair_enqueue() argument
3021 if (!qpair || !buf) in vmci_qpair_enqueue()
3026 qp_lock(qpair); in vmci_qpair_enqueue()
3029 result = qp_enqueue_locked(qpair->produce_q, in vmci_qpair_enqueue()
3030 qpair->consume_q, in vmci_qpair_enqueue()
3031 qpair->produce_q_size, in vmci_qpair_enqueue()
3035 !qp_wait_for_ready_queue(qpair)) in vmci_qpair_enqueue()
3040 qp_unlock(qpair); in vmci_qpair_enqueue()
3056 ssize_t vmci_qpair_dequeue(struct vmci_qp *qpair, in vmci_qpair_dequeue() argument
3065 if (!qpair || !buf) in vmci_qpair_dequeue()
3070 qp_lock(qpair); in vmci_qpair_dequeue()
3073 result = qp_dequeue_locked(qpair->produce_q, in vmci_qpair_dequeue()
3074 qpair->consume_q, in vmci_qpair_dequeue()
3075 qpair->consume_q_size, in vmci_qpair_dequeue()
3079 !qp_wait_for_ready_queue(qpair)) in vmci_qpair_dequeue()
3084 qp_unlock(qpair); in vmci_qpair_dequeue()
3101 ssize_t vmci_qpair_peek(struct vmci_qp *qpair, in vmci_qpair_peek() argument
3110 if (!qpair || !buf) in vmci_qpair_peek()
3115 qp_lock(qpair); in vmci_qpair_peek()
3118 result = qp_dequeue_locked(qpair->produce_q, in vmci_qpair_peek()
3119 qpair->consume_q, in vmci_qpair_peek()
3120 qpair->consume_q_size, in vmci_qpair_peek()
3124 !qp_wait_for_ready_queue(qpair)) in vmci_qpair_peek()
3129 qp_unlock(qpair); in vmci_qpair_peek()
3146 ssize_t vmci_qpair_enquev(struct vmci_qp *qpair, in vmci_qpair_enquev() argument
3153 if (!qpair) in vmci_qpair_enquev()
3156 qp_lock(qpair); in vmci_qpair_enquev()
3159 result = qp_enqueue_locked(qpair->produce_q, in vmci_qpair_enquev()
3160 qpair->consume_q, in vmci_qpair_enquev()
3161 qpair->produce_q_size, in vmci_qpair_enquev()
3165 !qp_wait_for_ready_queue(qpair)) in vmci_qpair_enquev()
3170 qp_unlock(qpair); in vmci_qpair_enquev()
3187 ssize_t vmci_qpair_dequev(struct vmci_qp *qpair, in vmci_qpair_dequev() argument
3194 if (!qpair) in vmci_qpair_dequev()
3197 qp_lock(qpair); in vmci_qpair_dequev()
3200 result = qp_dequeue_locked(qpair->produce_q, in vmci_qpair_dequev()
3201 qpair->consume_q, in vmci_qpair_dequev()
3202 qpair->consume_q_size, in vmci_qpair_dequev()
3206 !qp_wait_for_ready_queue(qpair)) in vmci_qpair_dequev()
3211 qp_unlock(qpair); in vmci_qpair_dequev()
3229 ssize_t vmci_qpair_peekv(struct vmci_qp *qpair, in vmci_qpair_peekv() argument
3236 if (!qpair) in vmci_qpair_peekv()
3239 qp_lock(qpair); in vmci_qpair_peekv()
3242 result = qp_dequeue_locked(qpair->produce_q, in vmci_qpair_peekv()
3243 qpair->consume_q, in vmci_qpair_peekv()
3244 qpair->consume_q_size, in vmci_qpair_peekv()
3248 !qp_wait_for_ready_queue(qpair)) in vmci_qpair_peekv()
3253 qp_unlock(qpair); in vmci_qpair_peekv()