queue_pair_entry
vmci_list_item(queue_pair_entry) list_item;
static struct queue_pair_entry *
struct queue_pair_entry *next;
struct queue_pair_entry *entry)
struct queue_pair_entry *entry)
static struct queue_pair_entry *
struct queue_pair_entry qp;
vmci_list(queue_pair_entry) head;
static struct queue_pair_entry *queue_pair_list_find_entry(
struct queue_pair_entry *entry);
struct queue_pair_entry *entry);
static struct queue_pair_entry *queue_pair_list_get_head(
struct qp_guest_endpoint *queue_pair_entry = NULL;
if ((queue_pair_entry =
if (queue_pair_entry->qp.flags & VMCI_QPFLAG_LOCAL) {
if (queue_pair_entry->qp.ref_count > 1) {
if (queue_pair_entry->qp.produce_size != consume_size ||
queue_pair_entry->qp.consume_size != produce_size ||
queue_pair_entry->qp.flags !=
my_produce_q = queue_pair_entry->consume_q;
my_consume_q = queue_pair_entry->produce_q;
queue_pair_entry = qp_guest_endpoint_create(*handle, peer, flags,
if (!queue_pair_entry) {
my_consume_q, num_consume_pages, &queue_pair_entry->ppn_set);
if (queue_pair_entry->qp.flags & VMCI_QPFLAG_LOCAL) {
if (queue_pair_entry->qp.handle.context != context_id ||
(queue_pair_entry->qp.peer != VMCI_INVALID_ID &&
queue_pair_entry->qp.peer != context_id)) {
if (queue_pair_entry->qp.flags & VMCI_QPFLAG_ATTACH_ONLY) {
result = vmci_queue_pair_alloc_hypercall(queue_pair_entry);
queue_pair_list_add_entry(&qp_guest_endpoints, &queue_pair_entry->qp);
queue_pair_entry->qp.ref_count++;
*handle = queue_pair_entry->qp.handle;
if ((queue_pair_entry->qp.flags & VMCI_QPFLAG_LOCAL) &&
queue_pair_entry->qp.ref_count == 1) {
if (queue_pair_entry) {
qp_guest_endpoint_destroy(queue_pair_entry);
ASSERT(queue_pair_entry->qp.ref_count > 0);