mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-12-11 16:00:50 -07:00
Add a scatter-gather list type and accessors (Avi Kivity)
Scatter-gather lists are used extensively in dma-capable devices; a single data structure allows more code reuse later on. Signed-off-by: Avi Kivity <avi@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com> git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6522 c046a42c-6fe2-441c-8c8c-71466251a162
This commit is contained in:
parent
f39023833e
commit
244ab90e17
3 changed files with 72 additions and 1 deletions
38
dma-helpers.c
Normal file
38
dma-helpers.c
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
/*
|
||||
* DMA helper functions
|
||||
*
|
||||
* Copyright (c) 2009 Red Hat
|
||||
*
|
||||
* This work is licensed under the terms of the GNU General Public License
|
||||
* (GNU GPL), version 2 or later.
|
||||
*/
|
||||
|
||||
#include "dma.h"
|
||||
|
||||
|
||||
void qemu_sglist_init(QEMUSGList *qsg, int alloc_hint)
|
||||
{
|
||||
qsg->sg = qemu_malloc(alloc_hint * sizeof(ScatterGatherEntry));
|
||||
qsg->nsg = 0;
|
||||
qsg->nalloc = alloc_hint;
|
||||
qsg->size = 0;
|
||||
}
|
||||
|
||||
void qemu_sglist_add(QEMUSGList *qsg, target_phys_addr_t base,
|
||||
target_phys_addr_t len)
|
||||
{
|
||||
if (qsg->nsg == qsg->nalloc) {
|
||||
qsg->nalloc = 2 * qsg->nalloc + 1;
|
||||
qsg->sg = qemu_realloc(qsg->sg, qsg->nalloc * sizeof(ScatterGatherEntry));
|
||||
}
|
||||
qsg->sg[qsg->nsg].base = base;
|
||||
qsg->sg[qsg->nsg].len = len;
|
||||
qsg->size += len;
|
||||
++qsg->nsg;
|
||||
}
|
||||
|
||||
void qemu_sglist_destroy(QEMUSGList *qsg)
|
||||
{
|
||||
qemu_free(qsg->sg);
|
||||
}
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue