ppn_set
&queue_pair_entry->ppn_set);
struct ppn_set ppn_set;
u64 num_consume_pages, struct ppn_set *ppn_set)
!num_consume_pages || !ppn_set)
if (ppn_set->initialized)
ppn_set->num_produce_pages = num_produce_pages;
ppn_set->num_consume_pages = num_consume_pages;
ppn_set->produce_ppns = produce_ppns;
ppn_set->consume_ppns = consume_ppns;
ppn_set->initialized = true;
static void qp_free_ppn_set(struct ppn_set *ppn_set)
if (ppn_set->initialized) {
kfree(ppn_set->produce_ppns);
kfree(ppn_set->consume_ppns);
memset(ppn_set, 0, sizeof(*ppn_set));
static int qp_populate_ppn_set(u8 *call_buf, const struct ppn_set *ppn_set)
memcpy(call_buf, ppn_set->produce_ppns,
ppn_set->num_produce_pages *
sizeof(*ppn_set->produce_ppns));
ppn_set->num_produce_pages *
sizeof(*ppn_set->produce_ppns),
ppn_set->consume_ppns,
ppn_set->num_consume_pages *
sizeof(*ppn_set->consume_ppns));
for (i = 0; i < ppn_set->num_produce_pages; i++)
ppns[i] = (u32) ppn_set->produce_ppns[i];
ppns = &ppns[ppn_set->num_produce_pages];
for (i = 0; i < ppn_set->num_consume_pages; i++)
ppns[i] = (u32) ppn_set->consume_ppns[i];
qp_free_ppn_set(&entry->ppn_set);
&entry->ppn_set);