Lines Matching refs:queue

498  *     Allocates kernel queue pages of specified size with IOMMU mappings, plus
499 * space for the queue structure/kernel interface and the queue header.
502 * Pointer to the queue on success, NULL otherwise.
513 struct vmci_queue *queue;
518 sizeof(*queue) + sizeof(*(queue->kernel_if)) + dmas_size;
526 queue = malloc(queue_size, M_DEVBUF, M_NOWAIT);
527 if (!queue)
530 queue->q_header = NULL;
531 queue->saved_header = NULL;
532 queue->kernel_if = (struct vmci_queue_kernel_if *)(queue + 1);
533 queue->kernel_if->num_pages = num_pages;
534 queue->kernel_if->dmas = (struct vmci_dma_alloc *)(queue->kernel_if +
537 vmci_dma_malloc(PAGE_SIZE, 1, &queue->kernel_if->dmas[i]);
538 if (!queue->kernel_if->dmas[i].dma_vaddr) {
540 vmci_free_queue(queue, i * PAGE_SIZE);
546 queue->q_header = (void *)queue->kernel_if->dmas[0].dma_vaddr;
548 return ((void *)queue);
556 * Frees kernel VA space for a given queue and its queue header, and frees
571 struct vmci_queue *queue = q;
573 if (queue) {
579 vmci_dma_free(&queue->kernel_if->dmas[i]);
580 free(queue, M_DEVBUF);
589 * Allocates two list of PPNs --- one for the pages in the produce queue,
590 * and the other for the pages in the consume queue. Intializes the list of
592 * queue headers).
684 * Frees the two list of PPNs for a queue pair.
719 * of the produce queue and the consume queue.
804 * offset + size does not wrap around in the queue.
817 __vmci_memcpy_to_queue(struct vmci_queue *queue, uint64_t queue_offset,
820 struct vmci_queue_kernel_if *kernel_if = queue->kernel_if;
862 * offset + size does not wrap around in the queue.
874 __vmci_memcpy_from_queue(void *dest, const struct vmci_queue *queue,
877 struct vmci_queue_kernel_if *kernel_if = queue->kernel_if;
931 vmci_memcpy_to_queue(struct vmci_queue *queue, uint64_t queue_offset,
938 return (__vmci_memcpy_to_queue(queue, queue_offset,
960 const struct vmci_queue *queue, uint64_t queue_offset, size_t size,
967 queue, queue_offset, size, false));
975 * Copies from a given buffer to a local VMCI queue. This is the
988 vmci_memcpy_to_queue_local(struct vmci_queue *queue, uint64_t queue_offset,
995 return (__vmci_memcpy_to_queue(queue, queue_offset,
1017 const struct vmci_queue *queue, uint64_t queue_offset, size_t size,
1024 queue, queue_offset, size, false));
1043 vmci_memcpy_to_queue_v(struct vmci_queue *queue, uint64_t queue_offset,
1054 return (__vmci_memcpy_to_queue(queue, queue_offset, src, size,
1076 const struct vmci_queue *queue, uint64_t queue_offset, size_t size,
1086 return (__vmci_memcpy_from_queue(dest, queue, queue_offset, size,